当前位置:   article > 正文

OpenMP(Open Multi-Processing)_fork-join model

fork-join model

一 什么是OpenMP?

在并行化计算中,远程内存访问的方式主要有三种shared memory, one-sided communication和Mesaage Passing。OpenMP就是基于shared memory的高度抽象的并行化计算API,具有良好移植性和扩展性。它是一种显性的(explict)的编程模式,给予了用户对完全控制并行化的能力。

二 OpenMP执行模式

OpenMP会顺序执行程序知道遇到了并行指令(parallel directive),当前线程会分出支干来并行化执行parallel directive的内容。所以,用户主要通过合理的插入编译指令(compiler directives)去控制各个资源的分分合合,决定什么时候并行concurency,什么时候同步(synchronization)。这种模式就是典型的Fork-join model

Fork:主线程创建多线程任务,eg,这里0就是主线程,一些特殊的指令仅仅会影响主线程。

Join:等待对应的Fork创建的主线程任务结束,同步后回到主线程上(或者说只保留主线程)

特别的,Fork-join model是可以嵌套的。并且嵌套的的fork join是独立于现有的线程的。

嵌套的例子:

 

三 编程模版

如何加载omp?

Compiler / Platform

Compiler

Flag

Intel
Linux Opteron/Xeon

icc

-openmp

icpc

ifort

PGI
Linux Opteron/Xeon

pgcc

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/267874
推荐阅读
相关标签
  

闽ICP备14008679号