Intel 的 pragma simd 与 OpenMP 的 pragma omp simd

use*_*436 4 simd vectorization openmp

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

#pragma simd
for ( ... )
Run Code Online (Sandbox Code Playgroud)

但是,您也可以选择使用 OpenMP 4 的指令执行此操作:

#pragma omp simd
for ( ... )
Run Code Online (Sandbox Code Playgroud)

两者之间有什么区别吗?

Nos*_*All 5

出于所有意图和目的,它们应该是相同的。不同之处在于 OpenMP 4.0#pragma omp simd指令是可移植的,应该与支持 OpenMP 4.0 的其他编译器以及 Intel 的编译器一起使用。

Furthemore,也有OpenMP的几个版本的条款,让你向量化更稳健的方式指令(safelen()linear()aligned()reduction(),和collapse()浮现在脑海中)。