OpenMP如何将循环划分为线程?

时间:2013-10-13 16:12:18

标签: c optimization openmp

说我有一个循环

for(int i = 0; i < 1000; i++){
    sum += i;
}

如果我使用OpenMP加速它,这个for循环如何映射到4个不同的核心?

我知道它使用fork和join,我的意思是它就像i = 0表示核0,i = 1表示核1和等或i = 0表示核0,i = 249表示核1,i = 499表示核心2等。

谢谢,

鲍勃

1 个答案:

答案 0 :(得分:1)

根据this presentation ,它取决于编译器实现而不是OpenMP规范,但编译器可能使用i = 0表示核0,i = 249表示核1,等等。

enter image description here

另外,请确保您是sum的缩减变量,否则您的示例中会出现竞争条件。