【发布时间】:2018-06-21 04:02:27
【问题描述】:
OpenMP 标准是否保证 #pragma omp simd 工作,即如果编译器无法对代码进行矢量化,编译是否会失败?
#include <cstdint>
void foo(uint32_t r[8], uint16_t* ptr)
{
const uint32_t C = 1000;
#pragma omp simd
for (int j = 0; j < 8; ++j)
if (r[j] < C)
r[j] = *(ptr++);
}
gcc 和 clang 无法对此进行矢量化,但根本不会抱怨(除非您使用 -fopt-info-vec-optimized-missed 等)。
【问题讨论】:
标签: c++ openmp vectorization simd