gpt4 book ai didi

c++ - 用于 cout 顺序的 OpenMP 并行

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

刚接触openmp,遇到这样的问题。

#pragma omp parallel for
for (int i = 0; i < 10; ++i) {
if (i == 0)
for (int j = 0; j < 100000000; ++j); // Create a delay for i = 0.
cout << i << flush;
}

我预计 0 应该是打印出的最后一个整数,因为存在延迟。然而,实际输出是完全随机的。

这是某种编译器优化造成的吗?还是我误解了 parallel for

我有版本

#define _OPENMP 201307

谢谢。

最佳答案

您更有可能被误解为 parallel for

在大多数情况下,当您没有为 omp for 设置 schedule 时,每个线程都将执行一个循环。

所以1和0几乎同时执行。

如果你想 1 在 0 之后执行。尝试添加 schedule(static, 2)

关于c++ - 用于 cout 顺序的 OpenMP 并行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44552851/

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