gpt4 book ai didi

c - Openmp 减少循环错误?

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:12 25 4
gpt4 key购买 nike

这是测试部分代码:

    float a = 0;
float b = 0;
int c = 0;
int d = 0;
#pragma omp parallel for schedule (dynamic, 1) reduction(+ : a, b, c, d)
for(i=0; i<100; i++) {
a +=1;
b +=1;
c +=1;
d +=1;
}

printf("a: %d, b: %d, c: %d, d: %d\n", a, b, c, d);

由于某些原因,我的结果总是:

a: 100, b: 100, c: 0, d: 202
a: 100, b: 100, c: 0, d: 202
a: 100, b: 100, c: 0, d: 202
a: 100, b: 100, c: 0, d: 202
a: 100, b: 100, c: 0, d: 202
a: 100, b: 100, c: 0, d: 202
a: 100, b: 100, c: 0, d: 202

为什么 a、b、c、d 不都等于 100?

最佳答案

您正在使用 %d 格式打印 float 。这会导致未定义的行为。使用:

   printf("a: %f, b: %f, c: %d, d: %d\n", a, b, c, d);

你会发现你得到了正确的答案。

关于c - Openmp 减少循环错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16976369/

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