OpenMP parallel Construct

来源:互联网 发布:空气净化器哪个好 知乎 编辑:程序博客网 时间:2024/05/17 09:28
【概述】
parallel结构是开始并行执行的基础结构。

【语法】
#pragma omp parallel [clause[[,]clause]...] new-line
    structured-block
其中,子句可以是下面之中的一个:
if(scalar-expression)
private(list)
firstprivate(list)
default(shared|none)
shared(list)
copyin(list)
reduction(operation:list)
num_threads(integer-expression)

【绑定】
parallel区域的绑定线程是遇到此区域的线程。此线程即成为新线程组的主线程。

【描述】
当一个线程遇到parallel结构后,会有一组新创建的线程来执行这个并行区域。小组中的包括主线程的所有线程都执行这个区域。一旦线程组被创建,组中线程数目在此parallel区域保持不变。
在并行区域中,线程序号唯一标明线程。线程号是从0开始的连续整数,主线程是0,以此类推。一个线程可以通过调用omp_get_thread_num库例程来得到自己的线程号。
每个线程的执行路径可能和其他线程不同,但都要执行此parallel结构的代码块。
在parallel区域的结尾有一个隐含的barrier,parallel区域结束后,只有主线程能够继续执行。
如果线程组中的某一个线程在parallel区域中遇到另一个parallel指令,就将创建另一个线程组,自己作为该新线程组的主线程。
在parallel区域中的任意线程执行中止将会导致所有线程的中止,并且中止顺序没有规定。只能保证在前一个barrier之前的工作是完成的。