正如 Jed Brown对查找成本与计算成本的回答所举例说明的那样,使用矢量化与非矢量化浮点运算会产生更快的代码。许多现代编译器声称他们可以执行自动向量化。如何成功矢量化我的代码的哪些部分?
我怎么知道我的代码是否被编译器向量化了?
计算科学
正则
C
编译
矢量化
2021-12-12 06:57:52
3个回答
使用任何现代复古的英特尔编译器,-O3 -vec-report3
. 优化级别 3 保证它正在尝试矢量化,并且矢量报告会告诉您它在做什么。
矢量化的 GNU 页面说它默认处于优化级别 3,但我找不到 vec-report 的等价物。
在 GNU 编译器集合中,您可以选择-ftree-vectorizer-verbose=n
wheren
是0 到 6 之间的数字,它将打印类似于icc
/的信息ifort
。
使用 GNU 编译器,添加-Wa,-ahl=asm.s
会将生成的汇编代码转储到asm.s
.
使用英特尔编译器,添加-fcode-asm -Faasm.s
会将生成的代码转储到asm.s
.
然后,您可以检查汇编代码并查找向量浮点运算。
其它你可能感兴趣的问题