gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:44:44 25 4
gpt4 key购买 nike

假设我有一个循环

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等

谢谢

鲍勃

最佳答案

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

enter image description here

还要确保您是 sum 的归约变量,否则示例中会存在竞争条件。

关于c - OpenMP 如何将循环划分为线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19347310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com