首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sse2neon和arm_neon.h有什么区别?

sse2neon和arm_neon.h有什么区别?
EN

Stack Overflow用户
提问于 2022-08-22 09:34:58
回答 1查看 92关注 0票数 0

我正在尝试构建在aws graviton3上运行的软件。为了最大限度地利用这个性能,aws建议使用sse2neon来移植代码,并将SSE的本质部分移植到neon (porting-codes-with-sseavx-intrinsics-to-neon)

在修改标头时,我发现当检测到arm_neon.h体系结构时,arm64也包括在内。使用sse2neon而不是arm_neon.h有什么好处吗?应该并排包含两个标题吗?

他们之间到底有什么区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-22 10:00:50

是否有任何使用sse2neon而不是arm_neon.h的方法?

这样做的好处是,您可以编译编写的代码,使用x86 SSE的本质,如_mm_add_epi32 on __m128i vectors (英特尔本质指南),而不必手动移植来使用uint32x4_tvaddq_u32 (手臂本质指南已过滤,用于在AArch64上添加NEON整数)。

霓虹灯和SSE2是不同的指令集,有一些不同的指令,例如不同的洗牌。和霓虹灯有很多水平配对的东西,如加法。但是x86需要_mm_movemask_epi8每字节取一位向量,并将其放入int中;x86 CPU可以相当有效地在SIMD和整数域之间获取数据,当您想在SIMD上比较结果时,对于memcmpstrlen之类的东西很有用。ARM / AArch64 CPU没有等效的指令。

当然,对于简单的垂直操作这样的简单操作,替换量会下降1:1,因此手工移植没有好处。但是对于sse2neon内部的x86实现需要多个ARM本质的东西来说,手动移植是值得的,尤其是在循环中,而不仅仅是运行一次的清理。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73442988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档