下面列出了此发行版中由 C、C++ 和 Fortran 编译器实现的 OpenMP 3.0 共享内存 API 的新增功能和更改的功能。有关详细信息,请参见《Oracle Solaris Studio 12.2:OpenMP API 用户指南》。
在 dbx 调试程序中支持 OpenMP 调试。对 dbx 进行了以下改进:
新增用于显示有关 OpenMP 区域、任务和线程集的信息的命令。
print —s、thread —info、whatis 和 where 命令的扩展
新增 OpenMP 同步事件。
自动确定作用域扩展到了任务区域。此功能使程序员无需在并行区域或任务区域中明确确定变量的作用域。编译器通过分析代码和应用一些智能规则来确定变量作用域。
新增的 SUNW_MP_WAIT_POLICY 环境变量改进了 程在程序中的等待行为,使程序员能够很好地控制等待运行(闲置)、在屏障处等待或者在 taskwait 处等待的线程的行为。
向 SUNW_MP_WARN OpenMP 环境变量中添加了新功能:除了控制由 OpenMP 运行时库发布的警告消息外,SUNW_MP_WARN 设为 TRUE 时,运行时库还将输出所有环境变量的设置以供参考,包括用户明确设置的环境变量和由库缺省设置的环境变量。
由 SUNW_MP_PROCBIND 环境变量控制的行为已在 Oracle Solaris 平台上更改:将 SUNW_MP_PROCBIND 设为 TRUE 会将主线程绑定到绑定时正在其上运行的处理器。绑定的时刻是第一次遇到并行区域或第一次调用 OpenMP 运行时例程(如 omp_set_num_threads())的时刻。从线程以循环(共享)方式从主线程所绑定到的处理器开始绑定。
使用线程分析器工具可检测 OpenMP 程序中的数据争用和死锁现象。在此发行版中,线程分析器功能已经扩展,无需重新编译即可检测二进制文件中的数据争用现象。有关详细信息,请参阅《Oracle Solaris Studio 12.2:线程分析器用户指南》。