本节演示了如何将 OMP_NUM_THREADS 环境变量与编译和链接选项结合使用来创建以串行和并行方式执行的代码。
要创建串行应用程序,请执行以下操作:
调用一个或多个 Oracle Developer Studio 性能库例程
使用 -library=sunperf, 进行链接,将标志放在命令行末尾。不要使用 -xopenmp=parallel 或 -xautopar 进行编译或链接
取消设置 OMP_NUM_THREADS 环境变量或将其设置为 1
以下示例说明了如何使用共享的 Oracle Developer Studio 性能库 libsunperf.so 进行编译和链接。
my_host% cc -xmemalign=8s -xarch=native any.c -library=sunperf
my_host% f95 -dalign -xarch=native any.f95 -library=sunperf
要创建在多处理器上执行的并行应用程序,请执行以下操作:
调用一个或多个 Oracle Developer Studio 性能库例程
在编译和链接命令中使用相同的并行化选项(-xopenmp=parallel 或 -xautopar)
使用 -library=sunperf, 进行链接,将标志放在命令行末尾。
在运行可执行文件之前,将 OMP_NUM_THREADS 设置为可用处理器的数量
例如,要使用 24 个处理器,请键入以下命令:
my_host% f95 -dalign -xarch=native my_app.f -library=sunperf my_host% setenv OMP_NUM_THREADS 24 my_host% ./a.out
以上示例使 Oracle Developer Studio 性能库例程以并行方式运行,但用户代码 my_app.f 的任何部分都不会以并行方式运行。要使编译器尝试将 my_app.f 并行化,需要在编译行中使用 -xopenmp=parallel 或 -xautopar:
my_host% f95 -dalign -xopenmp=parallel my_app.f -library=sunperf my_host% setenv OMP_NUM_THREADS 24 my_host% ./a.out