gpt4 book ai didi

parallel-processing - OMP : What is the difference between OMP PARALLEL DO and OMP DO (Without parallel directive at all)

转载 作者:行者123 更新时间:2023-12-04 19:30:57 28 4
gpt4 key购买 nike

好的,我希望以前没有问过这个问题,因为在搜索中很难找到。

我查看了 F95 手册,但仍然觉得这很模糊:

For the simple case of:
DO i=0,99
<some functionality>
END DO

我正在尝试找出两者之间的区别:

!$OMP DO PRIVATE(i)
DO i=0,99
<some functionality>
END DO
!$OMP END DO

还有:

!$OMP PARALLEL DO PRIVATE(i)
DO i=0,99
<some functionality>
END DO
!$OMP PARALLEL END DO

(只是指出区别:第一个有 OMP DO 但根本没有 PARALLEL 指令。第二个只是添加了 PARALLEL 指令)

谢谢!

最佳答案

!$OMP DO PRIVATE(i) 指示编译器如何在线程之间分配工作,但不启动任何线程。只有当它(甚至是间接地)在 $OMP PARALLEL 区域内时,它才会进行任何工作共享,否则它不会做任何事情。

!$OMP PARALLEL DO PRIVATE(i)
!$OMP END PARALLEL DO

做同样的事情

!$OMP PARALLELPRIVATE(i)
!$OMP DO
!$OMP END DO
!$OMP END PARALLEL

所以它既启动线程又在它们之间分配工作。

如果你刚刚

!$OMP PARALLEL PRIVATE(i)
!$OMP END PARALLEL

所有线程都会在并行区域内完成所有工作。

关于parallel-processing - OMP : What is the difference between OMP PARALLEL DO and OMP DO (Without parallel directive at all),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31832676/

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