构造人工函数,并将其放置在用户模式和专家模式调用堆栈上,以反映线程在 OpenMP 运行时库中处于某个状态的事件。
定义了以下人工函数:
<OMP-overhead> |
在 OpenMP 库中执行 |
<OMP-idle> |
从属线程,等待工作 |
<OMP-reduction> |
执行归约操作的线程 |
<OMP-implicit_barrier> |
在隐式屏障处等待的线程 |
<OMP-explicit_barrier> |
在显式屏障处等待的线程 |
<OMP-lock_wait> |
等待锁定的线程 |
<OMP-critical_section_wait> |
等待进入临界段的线程 |
<OMP-ordered_section_wait> |
等待轮流进入排序段的线程 |
<OMP-atomic_section_wait> |
等待 OpenMP 原子构造的线程。 |
当线程处于对应于其中一个人工函数的 OpenMP 运行时状态时,会将该人工函数作为堆栈上的叶函数添加。当线程的实际叶函数处于 OpenMP 运行时中的任意位置时,<OMP-overhead> 将作为叶函数替换它。否则,从用户模式堆栈中忽略 OpenMP 运行时中的所有 PC。
对于 OpenMP 3.0 程序,不使用 <OMP-overhead> 人工函数。由“OpenMP 开销”度量替换人工函数。