英特尔编译器允许我们通过以下方式对循环进行矢量化

#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/

10-13 09:53