本章节翻译by chenchensmail@163.com 原文:OpenMP Execution Model (intel.com)
OpenMP 执行模式具有一个主机设备, 但有多个目标设备。设备是具有自己的 本地存储和数据环境的逻辑执行引擎。
在 Intel® 数据中心 GPU Max 系列上执行时, 整个 GPU (可能具有多个堆栈) 可以被视为一个设备, 或者每个堆栈都可以被视为一个设备。
OpenMP 在主机上开始执行。当主机线程遇到 target
构造时,数据从主机传输到设备 (例如,如果由 map
子句指定), 并将构造中的代码部署到设备上。在 target
区域结束时, 数据从设备传输回主机(如果指定)。
默认情况下,遇到 target
构造的主机线程 在继续执行之前等待 target
区域完成。 target
构造上的 nowait
指定主机线程 不需要等待 target
区域完成。 换句话说, nowait
子句允许异步执行 target
区域。
可以通过 taskwait
指令、 depend
子句、 (隐式或显式) barrier 或其他同步机制 实现异步执行的代码区域之间的同步。