OpenMP Synchronisation Construct

2019-11-18  本文已影响0人  Enzooo

Synchronisation Constructs : 

1. #pragma omp critical

2. #pragma omp master

3. #pragma omp atomic

4. #pragma omp barrier


1. #pragma omp critical [name]

critical 结构是一个包含 structured block 的指令。该结构一次只允许一个线程执行 structured block (region)。多个critical regions可能存在于一个并行区域中,并且可能协同工作(在所有 critical regions 中一次只有一个线程),或者单独工作(当每个 critical上construct 被指定唯一名称时,在每个structured block 中一次只有一个线程)。可选(lock)提示子句可以在指定的关键构造上指定,以在选择锁定机制时提供OpenMP运行时指导。

> 代码中可以有多个critical regions

> 有deadlock 的危险:

> 未命名的 critical regions 具有相同的系统定义名称

> 对 structured block 的限制适用于所有相同命名的关键区域

> 暗示执行的非独立性



2. #pragma omp master

> 只有住线程会执行并累block

> 比 omp single 开销更少

> master子句区域后没有隐式的 barrier (no implicit synchronisations),需要显示添加#pragma omp barrier


#pragma omp single [data clauses]

> 只有一个线程执行block

> 这个线程不必是主线程,可以是任意的进程

> master子句区域后有隐式的 barrier 

上一篇下一篇

猜你喜欢

热点阅读