美文网首页
3.OpenMp构件

3.OpenMp构件

作者: Laiy | 来源:发表于2021-01-18 08:42 被阅读0次

1.working-sharing 构件

(1)!$ OMP DO/ !$OMP END DO : 指令对使最近的do循环并行执行;

(2)当循环的每一次迭代都依赖于前一次迭代,也依赖于循环的迭代顺序。此时需要添加ORDERED声明强调顺序执行,如:

!$OMP DO ORDERED

DO I=1,1000

       !$OMP ORDERED

                 A(I)=A(I-1)

       !$OMP END ORDERED

ENDDO

!$OMP END DO

此时就不能展现出并行的优势了。

(3). !$OMP SECTIONS/!$OMP END SECTIONS: 允许对每个线程分派完全不同的任务,每段代码仅被一个线程执行一次,语法如下:

!$OMP SECTIONS

!$OMP SECTION

PRINT*, "HELLO"

!$OMP SECTION

PRINT*,"你好!"

!$OMP SECTION

PRINT*, "WAO"

!$OMP END SECTIONS

代码运行结果

(4).!$OMP SINGLE/!$OMP END SINGLE : 指令对包含的代码仅由其中一条线程执行,也就是最先到达!$OMP SINGLE 指令的线程。

(5). !$OMP WORKSHARE/!$OMP END WORKSHARE : 将任务分解为工作单元,并分派给每个线程。

2.Combined parallel work-sharing 构件

指定仅包含一个work-sharing 构件的并行区域的捷径,与!$OMP PARALLEL/!$OMP END PARALLEL 指令中的单一work-sharing 构件的行为是完全一样的,它的存在是为了在OpenMp-implementation 和 OpenMp指令同时出现时,降低冗余开销。

(1)!$OMP PARALLEL DO/!$OMP END PARALLEL DO : 指定一个包含单一!$OMP DO/!$OMP END DO指令的并行区域的快捷方式。

(2)!$OMP PARALLEL SECTIONS/!$OMP END PARALLEL SECTIONS

(3)!$OMP PARALLEL WORKSHARE/!$OMP END PARALLEL WORKSHARE

相关文章

网友评论

      本文标题:3.OpenMp构件

      本文链接:https://www.haomeiwen.com/subject/ungaaktx.html