我有一个循环的迭代次数非常低,向量化并不能提高性能,但是编译器仍然对其进行了向量化。有没有一种可移植的方法告诉编译器不要向量化循环,与#pragma omp simd
相反的功能。
我有一个循环的迭代次数非常低,向量化并不能提高性能,但是编译器仍然对其进行了向量化。有没有一种可移植的方法告诉编译器不要向量化循环,与#pragma omp simd
相反的功能。
如果您使用支持 OpenMP API 版本 5.1 的编译器,则应接受此代码:
#pragma omp simd if(simd:0)
for (...) { ... }
这样可以禁用与simd
构造相关的循环向量化。
请参阅OpenMP规范中的simd构造。
#pragma novector
作为解决方法,我可以联系英特尔OpenMP编译器团队,并询问他们何时会实现它。你试过ICX了吗? - Michael Klemmif(simd:0)
语法并禁用矢量化。 - Michael Klemmicc
是“经典”的非LLVM基础编译器,并将保持不变。icx
是较新的基于LLVM的编译器。因此,您不应该期望在icc
中出现LLVM功能,而是在icx
中出现。 - Jim Cownie