我如何知道向量函数 (SIMD) 是不是真的一次对多个对象起作用?

Posted

技术标签:

【中文标题】我如何知道向量函数 (SIMD) 是不是真的一次对多个对象起作用?【英文标题】:How do I know if a vector function (SIMD) really worked on multiple objects at a time?我如何知道向量函数 (SIMD) 是否真的一次对多个对象起作用? 【发布时间】:2011-07-30 10:33:04 【问题描述】:

我试图了解我的编译器是将我的向量表示法解释为单个对象(相当于 for 循环)还是一次处理多个数据。

有人知道我是怎么做到的吗?我在 Visual Studio 2010 上安装了 Intel Parallel Studio 2011。

谢谢!!!

【问题讨论】:

【参考方案1】:

如果有疑问,请查看生成的代码,例如

$ icc -S ... foo.c -o foo.S

【讨论】:

在哪里可以找到它?我如何从中了解实际发生的事情?我知道这个问题很多,也许你可以把我介绍给一个我可以读到它的地方?谢谢你:) 只需打开生成的 .S 文件并查看代码 - 如果您不熟悉 x86 指令,则可以从 intel.com 获取 PDF 格式的文档。 刚刚发现:如果使用Visual Studio可以添加断点,运行调试器然后右键查看反汇编代码。 @N.M.:是的,这也可以,但您通常会通过编译器生成的 asm 甚至反汇编的目标文件获得更多的符号信息。

以上是关于我如何知道向量函数 (SIMD) 是不是真的一次对多个对象起作用?的主要内容,如果未能解决你的问题,请参考以下文章

SIMD 减少 4 个向量而没有 hadd

向量与 SIMD 的点积

如何使用 SIMD 比较两个字符向量并将结果存储为浮点数?

Swift 中的向量 SIMD 类型

使用 SIMD (System.Numerics) 编写向量求和函数并使其比 for 循环更快

AAch64 高级 SIMD 向量加法