7. GPUの利用

7.1. 概要

GPUに対応したRev. B.01からGPUの利用が可能です。 利用の詳細はhttp://gaussian.com/gpu/をご確認下さい。 系によってはCPUだけの計算よりも遅くなる場合がありますので安易な利用は推奨しません。
GPUは、DFTのエネルギー、グラジエントおよび振動数(基底、励起状態の両方)計算を行うときには効果的ですが、小規模系やMP2やCCSDなどのpost-SCF計算効果がありません。 複数ノードのGPU利用はf_nodeでのみ可能です。

7.2. GPUを利用する計算の実行

GAUSS_CDEF環境変数及びGAUSS_GDEF環境変数を設定することにより、インプットファイル中での%cpuや%gpucpuの指定や、コマンドオプション-c及び-gの指定を省略できます。 手動で設定しても構いませんが、TSUBAMEでは、Gaussianモジュール gaussian16/B01_gpuGAUSS_CDEF環境変数及びGAUSS_GDEF環境変数が自動設定されます。
h_nodeでの実行例を以下に示します。

$ cd [利用したいディレクトリ]
$ module load gaussian16/B01_gpu
$ echo $GAUSS_CDEF
14-27
$ echo $GAUSS_GDEF
0-1=14-15
$ g16 [インプットファイル]

上記モジュールを使用せず手動で指定したい場合は、Link0コマンドに%cpu及び%gpucpuを記述するか、コマンドオプション-c及び-gを指定してください。 その際、確保した資源タイプによってGPU数が異なりますのでご注意ください。
Link0コマンドへの記述例を以下に示します。 コマンドオプションについては、インタラクティブ実行をご参照ください。

f_nodeの場合

%cpu=0-27
%gpucpu=0-3=0,1,2,3

f_node以外の資源タイプを使用してバッチジョブ投入を行う場合は、バッチスクリプト内でsedawkを利用してコア番号をパースする必要があります。

h_nodeの場合

echo "%cpu=`numactl -s | awk '/physcpubind:/ { print $2 "-" $15 }'`" >> ${INPUT}
echo "%gpucpu=0-1=`numactl -s | awk '/physcpubind:/ { print $2 "," $3 }'`" >> ${INPUT}

q_nodeの場合

echo "%cpu=`numactl -s | awk '/physcpubind:/ { print $2 "-" $8 }'`" >> ${INPUT}
echo "%gpucpu=0=`numactl -s | awk '/physcpubind:/ { print $2 }'`" >> ${INPUT}

バッチスクリプト例については、バッチジョブスケジューラーUGEによる実行をご覧ください。