如何使用SSE提升性能呢?

WJN92 2013-01-30 10:26:18
看了很多SSE的指令还是有很多规矩
例如向量的叉乘,SSE没有提供,用SSE也难实现
公式: (UyVz - UzVy),-(UxVz - UzVx),(UxVy - UyVx)

四元数就更难实现了





SSE是不是一块鸡肋呢?
...全文
14827 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
WJN92 2013-02-12
  • 打赏
  • 举报
回复
引用 5 楼 bluewanderer 的回复:
我发现你完全没搞明白什么是矢量化... 如果你要算一堆a和一堆t的积at,常规算法是一个循环挨个算,矢量化是一次把几个a放入一个SIMD寄存器,把对应的几个t放入另一个SIMD寄存器然后进行运算。 而对于你的这种复杂运算的处理是矢量化计算里面的简单运算,也就是分别矢量化计算at,-bx,-cy,-dz,at - bx,cy + dz,(at - bx) + (……
好像是SSE4 才支持点乘
bluewanderer 2013-02-09
  • 打赏
  • 举报
回复
我发现你完全没搞明白什么是矢量化... 如果你要算一堆a和一堆t的积at,常规算法是一个循环挨个算,矢量化是一次把几个a放入一个SIMD寄存器,把对应的几个t放入另一个SIMD寄存器然后进行运算。 而对于你的这种复杂运算的处理是矢量化计算里面的简单运算,也就是分别矢量化计算at,-bx,-cy,-dz,at - bx,cy + dz,(at - bx) + (cy + dz)。这个根本不需要高级指令。 另外现在的SSE是支持点乘的,可以简化一点上面的步骤。 另外矢量化运算寄存器不够用需要多次循环的时候注意内存优化。
bluewanderer 2013-02-08
  • 打赏
  • 举报
回复
我想说至少你这个运算矢量化流式处理一点问题没有。 SSE是个偏向RISC的东西,除非能大规模提升效率的功能,否则基本上是不会加的
WJN92 2013-02-08
  • 打赏
  • 举报
回复
引用 1 楼 bluewanderer 的回复:
SSE = Streaming SIMD Extension. 这东西最大优势是流式处理大量数据,而不是优化单次运算。看看Intel文档就知道了。 特定匀速可以用SSE进行单次运算的优化,但主要还是矢量化后流式处理。如果你有一个所有a的数组和一个所有t的数字,那一个SSE单精度乘法就可以算出四个at。
这个我知道,所以我就说在一些复杂的算法面前用途不大。 尤其在3D运算里面SSE在里面不知道有多少的提升空间
WJN92 2013-02-08
  • 打赏
  • 举报
回复
引用 3 楼 bluewanderer 的回复:
我想说至少你这个运算矢量化流式处理一点问题没有。 SSE是个偏向RISC的东西,除非能大规模提升效率的功能,否则基本上是不会加的
我想说至少你这个运算矢量化流式处理一点问题没有。 怎么没有问题呢?它都没有提供类似的指令
bluewanderer 2013-02-08
  • 打赏
  • 举报
回复
SSE = Streaming SIMD Extension. 这东西最大优势是流式处理大量数据,而不是优化单次运算。看看Intel文档就知道了。 特定匀速可以用SSE进行单次运算的优化,但主要还是矢量化后流式处理。如果你有一个所有a的数组和一个所有t的数字,那一个SSE单精度乘法就可以算出四个at。

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧