gpt4 book ai didi

c - OpenMP 并行 'for' 无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 03:10:40 24 4
gpt4 key购买 nike

以下片段来 self 的代码的一个函数:

static int i;

#pragma omp parallel for default(shared) private(i) schedule(static,1)
for (i=0; i<ttm_ic_last; i++)
{
static int ni, ni1, ni2;
static double ni_ratio;
static double temp_e, temp_l;
...
}

奇怪的是,当我注释以 #pragma 开头的行时,它可以正常工作,否则循环至少不会触及 i 的某些预期值。 (我不确定这里的“触摸”是否是正确的动词。)

我正在使用工作站

gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4)

我想知道这个错误的原因可能是什么。

最佳答案

(Stefan 的回答)

当涉及 OpenMP 线程时,不要使用 static 变量。

事情是;对于静态,它们具有共享的内存空间。所以他们很可能会跨线程互相干扰。你的并行循环都在同一个盒子里。

关于c - OpenMP 并行 'for' 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56675397/

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