Oracle® Developer Studio 12.5:OpenMP API 用户指南

退出打印视图

更新时间: 2016 年 7 月
 
 

5.1 处理器绑定概述

通过处理器绑定(也称为线程关联性),程序将指示操作系统,程序中的线程在整个执行过程中均应在计算机上的相同位置运行,不应移到其他位置。 此处的位置是指插槽、核心或硬件线程的特定分组。

处理器绑定可以改善具有特定数据重用模式的应用程序的性能,其模式为:并行区域或工作共享区域中的线程访问的数据位于上次调用的并行区域或工作共享区域的本地高速缓存中。

计算机系统可被视为插槽、核心和硬件线程组成的层次结构。每个插槽包含一个或多个核心,每个核心又包含一个或多个硬件线程。

在 Oracle Solaris 平台上,可以使用 psrinfo(1M) 命令列出可用的硬件线程。在 Linux 平台上,文本文件 /proc/cpuinfo 提供有关可用硬件线程的信息。

当操作系统将某个线程绑定到处理器时,实际上是将该线程绑定到特定的硬件线程或一组硬件线程。

要控制 OpenMP 线程到处理器的绑定,您可以使用 OpenMP 4.0 环境变量 OMP_PLACESOMP_PROC_BIND。或者,您可以使用 Oracle 特定的环境变量 SUNW_MP_PROCBIND。这两组环境变量不得混用。有关环境变量的介绍,请参见OMP_PLACES 和 OMP_PROC_BIND


注 -  本章中介绍的 OpenMP 环境变量仅控制 OpenMP 线程的绑定(即 OpenMP 运行时库中记录的所有用户线程,以及该库创建的辅助线程)。这些环境变量不控制其他用户线程的绑定。如果用户线程遇到 OpenMP 构造或调用 OpenMP 运行时例程,该库将记录该用户线程。