openmp - Intel 的 pragma simd 与 OpenMP 的 pragma omp simd

标签 openmp vectorization simd

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

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

相关文章:

c++ - GCC 无法像 C 数组一样优化对齐的 std::array

c - 程序集内在执行屏蔽加载

parallel-processing - Cilk 或 Cilk++ 或 OpenMP

c - OpenMP:任务中的竞争条件

r - 向量化 R 代码,已使用序列符号

c++ - Intel Advisor 最佳标志和设置

multithreading - SIMD和多线程的区别

c - 冗余 __thread 和 omp threadlocal 声明

c - 使用 OpenMP 按列和按行并行矩阵乘以 vector

performance - 加速嵌套 for 循环