英特尔编译器允许我们通过以下方式对循环进行矢量化
#pragma simd
for ( ... )
但是,您也可以选择使用 OpenMP 4 的指令执行此操作:
#pragma omp simd
for ( ... )
两者之间有什么区别吗?
最佳答案
出于所有意图和目的,它们应该是相同的。不同之处在于 OpenMP 4.0 #pragma omp simd
指令是可移植的,并且应该与支持 OpenMP 4.0 以及 Intel 的其他编译器一起使用。
此外,OpenMP 版本中有几个子句允许您以更健壮的方式向量化指令(想到 safelen()
、 linear()
、 aligned()
、 reduction()
和 collapse()
)。
关于openmp - Intel 的 pragma simd 与 OpenMP 的 pragma omp simd,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35017581/