Oracle® Solaris Studio 12.4:Fortran 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

3.4.4 –autopar

启用自动循环并行化。

查找相应的循环并使之并行化,以便在多个处理器上并行运行。分析循环以了解迭代间的数据依赖性并重构循环。如果未将优化级别指定为 -O3 或更高,则会将其自动提升到 -O3

在使用任何并行化选项(包括 -autopar)时,也要指定 -stackvar 选项。当使用 -autopar 时,-stackvar 选项可提供更好的性能,因为它可允许优化器为并行检测其他机会。有关如何为主线程堆栈和从线程堆栈设置大小的信息,请参见 -stackvar 选项描述。

如果程序已经包含对 libthread 线程库的显式调用,请避免使用 -autopar。请参见-mt[={yes|no}]中的说明。

-autopar 选项不适用于单处理器系统,而且已编译代码的运行速度通常会更慢。

当运行由 -xautopar 编译器选项自动并行化的程序时,请使用 OMP_NUM_THREADS 环境变量指定要使用的线程数。如果 OMP_NUM_THREADS 未设置,则使用的线程的缺省数量为计算机上的内核数,上限为 32。将 OMP_NUM_THREADS 设置为 1,则会仅使用一个线程运行。为了获得最佳性能,使用的线程数不应超出计算机上的可用硬件线程(或虚拟处理器)数量。在 Oracle Solaris 系统上,可以使用 psrinfo(1M) 命令确定此数量。在 Linux 系统上,可以检查 /proc/cpuinfo 文件来确定此数量。有关更多信息,请参见 OpenMP API 用户指南

除了 OMP_NUM_THREADS 以外,应用于 OpenMP 程序的其他环境变量可用于由 -xautopar 编译器选项自动并行化的程序。有关环境变量的说明,请参见《Oracle Solaris Studio OpenMP API 用户指南》。

如果使用 -autopar 并在同一步骤中进行编译和链接,则会自动链接多线程库和线程安全的 Fortran 运行时库。如果使用 -autopar 并在不同的步骤中进行编译和链接,则还必须使用 -autopar 进行链接以确保链接相应的库。

-reduction 选项与 -autopar 结合使用可识别循环中的约简操作。

使用 -loopinfo 选项显示哪些循环是并行化的,哪些不是。

有关用户控制的显式并行化,则使用 OpenMP 指令和 -xopenmp 选项。