gpt4 book ai didi

无法理解 OpenMP 部分

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

我有这个使用节的 OpenMP 代码

    #pragma omp parallel sections num_threads(8)
{
printf_s("Allo from thread %d\n", omp_get_thread_num());
#pragma omp section
printf_s("Bello from thread %d\n", omp_get_thread_num());
#pragma omp section
printf_s( "Cello from thread %d\n", omp_get_thread_num());
}

我得到不同类型的输出。有时只有线程 0 打印所有三行,有时是不同的线程执行。我不明白这一点,三行不应该总是从三个不同的线程打印吗?

最佳答案

OpenMP 不保证您期望的行为。部分构造保证(至少,构造保证的规范,实现可能会被破坏)每个部分由一个(且仅一个)线程执行。它不保证每个部分都由不同的线程执行。

正如您所观察到的,在您观察到的级别上,您的程序是不确定的。这对于并行程序来说并不罕见,也是一个值得牢记的教训。在某些情况下,如果有必要,程序员有责任命令执行代码段。

关于无法理解 OpenMP 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10720231/

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