0

说我有一个循环

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 等等.

谢谢,

鲍勃

4

1 回答 1

1

根据此演示文稿,它取决于编译器实现而不是 OpenMP 规范,但编译器可能会将 i=0 用于核心 0,i=249 用于核心 1,等等。

在此处输入图像描述

还要确保您是 的减少变量sum,否则您的示例中有竞争条件。

于 2013-10-13T17:05:51.033 回答