使用之间有什么区别(如果有)
#pragma omp parallel
{
#pragma omp for simd
for (int i = 0; i < 100; ++i)
{
c[i] = a[i] ^ b[i];
}
}
和:
#pragma omp parallel for simd
for (int i = 0; i < 100; ++i)
{
c[i] = a[i] ^ b[i];
}
还是编译器(ICC)在乎?
我知道第一个定义了一个并行部分,然后定义了一个for循环,您可以在循环之后进行很多操作。如果我错了,请纠正我,仍然在学习openmp的方法。
但是什么时候您会使用一种方法呢?
答案 0 :(得分:3)
简单地说,如果您只有1个要并行化的for循环,请使用#pragma omp parallel for simd
。
如果要并行化多个for循环或在当前for循环之前或之后添加任何其他并行例程,请使用:
#pragma omp parallel
{
// Other parallel code
#pragma omp for simd
for (int i = 0; i < 100; ++i)
{
c[i] = a[i] ^ b[i];
}
// Other parallel code
}
这样,您在添加更多并行例程时不必重新打开并行部分,从而减少了开销时间。