OpenMP工作共享的实现结构、算法及集群实现策略
1. OpenMP工作共享基础概念
在OpenMP中,工作共享结构如Worksharing DO、SECTIONS和SINGLE构造有一个重要的共同特征:在构造的末尾有一个隐式屏障,不过可以使用可选的NOWAIT子句禁用它。显式屏障在语义上等同于没有NOWAIT子句的空SINGLE部分。我们将显式屏障归为工作共享构造的同一类别,这样做在实际编码中具有优势,从实现角度看,它们的共同行为能形成一个共同的代码库,从而提高整体代码质量。
2. 关键数据结构
2.1 一般要求
在并行区域中实现工作共享时,控制块至少应包含以下数据段:
- 保存工作共享特定信息的结构 :用于存储有关OpenMP DO构造或SECTIONS构造的信息,如循环归纳变量的初始值、最终值、调度类型等。
- 完成可能的屏障同步的结构 :用于实现工作共享构造生命周期中可能需要的任何屏障。
- 控制对工作共享控制块访问的结构 :通常是一个锁,以确保只有一个线程修改共享控制块的信息,例如标记工作共享已开始或表明特定部分代码已完成。
由于不同的工作共享构造可以放在同一并行区域中,第一个项目必须是“每个工作共享”的值,即并行区域中的每个工作共享都应有一个对应的结构。由于NOWAIT子句的存在,多个工作共享可以同时处于活动状态,由不同的线程同时执行。因此,这个数据结构必须同时存在多个实例,每个活动的工作共享对应一个。对于列表中的第三个项目也有同样的情况。每个线程将访问自己的活动工作共享控制块
超级会员免费看
订阅专栏 解锁全文
2734

被折叠的 条评论
为什么被折叠?



