对于c = c + a * b,OpenMP 4 simd矢量化

时间:2015-12-24 09:05:02

标签: c++ openmp simd

我不知道OpenMP 4是否支持for循环。使用和不使用pragma的速度是相同的。

#pragma omp  for simd
for (size_t i = 0; i < col; i++)
{
    C[i] += A[i]* B[i];
}

1 个答案:

答案 0 :(得分:3)

pragma的原因(我猜)确实没有效果是双倍的:

  • 代码已在没有simd指令的情况下进行矢量化;和
  • 无论如何代码都是内存绑定的,因此添加更多线程来计算它不会产生太大的差异,除非它允许您访问更多的内存带宽。有关详细信息,请参阅this excellent answer