SQUIDではOpenACCディレクティブが利用可能です。OpenACCを使用することで、比較的簡単にGPU向けの最適化が行えます。OpenMPIとの併用も可能です。
 

OpenACCの利用方法

    事前準備

      OpenACCを使用する前に、moduleコマンドでBaseGPU環境を読み込んでください。

      module load BaseGPU

       

    コンパイル コマンド

      コンパイルを行う際のコマンドは、プログラミング言語ごとに異なります。OpenACCディレクティブを使用する場合は-accオプションを指定してください

      ノード内実行

        C言語 C++言語 Fortran言語
        コマンド nvc -acc nvc++ -acc nvfortran -acc

      ノード間実行(MPI)

        C言語 C++言語 Fortran言語
        コマンド mpicc -acc mpic++ -acc mpif90 -acc

       

    コンパイル例

      OpenACCディレティブを挿入したコードtest.f90を、SQUID GPUノード群向けにコンパイルする場合は、以下のようになります。(-Minfo=accelオプションでGPUへの最適化メッセージを出力しています。

      nvc -O3 -acc -Minfo=accel test.f90

       

    実行スクリプト

      ノード内実行

        OpenACCディレクティブでGPUを利用するプログラムのスクリプト例は下記の通りです。
        1ノード8GPU実行、経過時間 1時間でのバッチリクエストを実行するスクリプトになります。

         

      ノード間実行(MPI)

        OpenACCディレクティブでGPUを利用するMPIプログラムのスクリプト例は下記の通りです。
        1ノード8GPU実行、2ノード利用(1ノードにつき8プロセス生成、計16プロセス利用)、経過時間 1時間でのバッチリクエストを実行するスクリプトになります。