このセクションでは、コンパイルおよびリンクオプションとともに OMP_NUM_THREADS 環境変数を使用して、順次または並列で実行するコードを作成する方法を説明します。
シリアルアプリケーションを作成するには:
1 つ以上の 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
複数のプロセッサで実行する並列アプリケーションを作成するには:
1 つ以上の 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