コンピュータシステムの特性によっては、性能上の理由から、プログラムに組み込まれた既定値の一部を上書きしたい場合があります。この設定には カスタマイズファイルを使用します。UNIX 系システムではファイル名は Default.Route で、配置先は $g16root/g16 です。Windows では既定ファイル名は Default.Rou で、Gaussian 16W のスクラッチサブディレクトリ(例: C:\G16W\scratch)にあります。ファイル形式はどのシステムでも共通です。
以下では、Default.Route で設定できる情報の種類を説明します。
Route 既定値
これらのパラメーターは -#- で指定し、通常のルートセクションコマンドと同じ形式を使います。たとえば、次の行は既定の SCF アルゴリズムを従来型(非 direct)に設定します。
-#- SCF=Conventional
-#- の行は、ファイル内に複数記述できます。
Default.Route に記述したコマンドは 既定値のみを変更します。入力ファイルのルートセクションで指定した内容があれば、そちらが優先されます。したがって、Default.Route に次を記述した場合:
-#- MP2=NoDirect
この場合、入力ファイルのルートセクションで MP2 を指定すると従来型の MP2 アルゴリズムが使われますが、MP2=Direct を指定すれば直接法が使われます。
-R- は -#- と同義です。
最大ディスク使用量
通常は、Default.Route の MaxDisk キーワードで使用可能なスクラッチディスク容量を指定します。たとえば、次の行は MaxDisk を 2GB に設定します。
-#- MaxDisk=2GB
使用可能なディスク容量は、既定では 8 バイトワード単位で指定します。値の末尾に KB、MB、GB、TB、KW、MW、GW、TW を付けると、キロ、メガ、ギガ、テラのバイトまたはワード単位で指定できます(空白は入れません)。
スクラッチディスク容量の既定値は無制限、すなわち MaxDisk=-1 です。これは、冗長な再計算を避けられるだけの十分なディスク容量があることを前提にしています。したがって、使用可能なメモリ量とディスク量を適切に指定することは、計算性能を最適化するうえで非常に重要です。これにより Gaussian は利用可能な各種アルゴリズムの中から、その計算環境に最適なものを選択できます。特に MP2 では、利用可能なディスク容量が大きいほど評価が高速になります。
メモリ既定値
Gaussian ジョブに過大なメモリを割り当てると、システム全体に深刻な影響が出ることがあります。メモリディレクティブ -M- では、既定の動的メモリ上限を設定します。たとえば次の行は、既定のメモリ使用量を 3GB に設定します。
-M- 3GB
使用可能なメモリ量は、既定では 8 バイトワード単位で指定します。値の末尾に KB、MB、GB、TB、KW、MW、GW、TW を付けると、キロ、メガ、ギガ、テラのバイトまたはワード単位で指定できます(空白は入れません)。既定のメモリサイズは 800MB(100MW)です。この上限は Link 0 コマンド %Mem で上書きできます。
メモリディレクティブ -U- は、formchk や freqchk などのユーティリティで使用する既定のメモリ量を設定します。
組織名とホスト名
ホスト名は -H- で設定できます。ここで指定した値は、Gaussian が生成するアーカイブエントリ中のホスト名として使われます。既定値は現在のホスト名です。
組織名またはサイト名は -O- で設定できます。ここで指定した値は、Gaussian が生成するアーカイブエントリ中のサイト名として使われます。既定値はありません。
ユーザー既定ファイル
Gaussian ユーザーは、独自の Default.Route ファイルを作成して個人既定値を設定できます。Gaussian はジョブ開始時に、現在の作業ディレクトリに同名ファイルがあるかを確認します。ローカルファイルの設定はサイト全体の設定より優先され、さらにジョブのルートセクションで指定したオプションが最優先されます。
コマンドラインオプションと環境変数の対応
これらのディレクティブは、環境変数または UNIX/Linux のコマンドライン引数でも設定できます。環境変数 GAUSS_xDEF は、Default.Route の -X- と等価です。同様に、コマンドライン引数 g16 -x="value" でも同じ設定を指定できます。次の 3 つはすべて等価です。
-M- 4GB Default.Route 内で指定
export GAUSS_MDEF=4GB
g16 -m="4GB" …
優先順位
優先順位は次のとおりです。
- コマンドライン引数
- 環境変数
- Default.Route の設定
- プログラム内部の既定値
Default.Route 制限事項
Default.Route ですべてのルートセクションキーワードを指定できるわけではありません。一般に、特定のジョブタイプ専用のオプションは無視されます。したがって、既定の積分グリッドを変更する Integral=SuperFine は有効ですが、ジョブタイプ依存の設定である Freq=Raman は無効になります。
並列計算オプション
共有メモリマルチプロセッサでの並列実行
Gaussian の既定設定では 1 プロセッサのみを使用します。システムに複数のプロセッサ/コアがあり、利用中の Gaussian が並列処理をサポートしている場合は、-C- ディレクティブで使用する CPU を指定できます。たとえば次の指定では、6 コア環境のうち先頭 5 コアを使用し、1 コアを他用途のために残します。
-C- 0,1,2,3,4
CPU リストは範囲指定も可能です(例: 0-5)。さらに、範囲の後ろに /n を付けると、その範囲内で n 個おきのプロセッサを使用します。たとえば /2 は 1 つおきのプロセッサ/コアを指定します。
旧来の -P- ディレクティブでは、使用するプロセッサ総数のみを指定できます(具体的な選択は OS に委ねられます)。要求数は利用可能なプロセッサ数を超えないようにしてください。超えると性能が大きく低下します。
ネットワーク/クラスタ並列実行
-W- ディレクティブを使うと、Default.Route で Linda ワーカーの一覧を指定できます。
-W- dalton,lavoisier:2,priestley,agassiz:3,curie
この例では、指定した 5 つのノードを並列実行に使用し、lavoisier には 2 個、agassiz には 3 個、そのほかのシステムには各 1 個のワーカープロセスを配置します。ジョブを開始したマスターノードがこの一覧に含まれていない場合は、そのマスターノード上でも 1 個のワーカーが動作するため、合計 6 ノードが使われます。
このディレクティブは Link 0 コマンド %LindaWorkers に対応しており、そちらを指定すると上書きされます。
-S- ディレクティブは、ワーカープロセスの起動に使うプログラムを指定します。引数には rsh(既定)または ssh を指定します。
SMP とネットワーク並列の併用
-W- を -C- または -P- と組み合わせると、ノードリスト中の各ノード(または同一ノードに複数ワーカー指定がある場合はその数)で SMP 並列ワーカープロセスが起動します。各ワーカーは SMP 設定に従って並列実行されるため、設定がノード構成に合わないとそのノードで失敗します。たとえば次の指定では、各システム上でワーカーをマルチプロセッサジョブとして起動します。
-W- alpha,beta,gamma -C- 0,1,2,3
ただし、たとえば beta がデュアルコアのワークステーションであれば、そのマシンにはプロセッサ 2 や 3 が存在しないため、ワーカープロセスは失敗します。この仕組みは、主に同一構成のノードで構成されたクラスター環境を想定しています。
参照されるのはマスターノード上の Default.Route のみです。ワーカーノード側に存在する Default.Route は使用されません。
GPU での並列実行
-G- ディレクティブでは、使用する GPU の既定リストを設定します。GPU を使う場合は、各 GPU を特定の CPU が制御する必要があり、その CPU は対応する GPU に物理的に近いことが望まれます。リストでは GPU番号=コア番号 という構文を使い、使用する GPU と、それぞれを担当するコアを指定します。たとえば次の指定では、Gaussian に GPU0 から GPU3 を使用するよう指示します。
-G- 0,1,2,3=0,1,16,17
GPU0 と GPU1 はコア 0 と 1 に固定され、GPU2 と GPU3 は (それぞれ) コア 16 と 17 に固定されます。
このディレクティブでは、GPU および/またはコアの範囲を使用できます。たとえば、次は前述のものと同等です。
-G- 0-3=0-1,16-17
formchkオプション
-F- ディレクティブは、formchk ユーティリティの既定オプションを設定します。既定では、formchk は Gaussian の旧バージョンとも互換性のあるフォーマット済みチェックポイントファイルを生成します。
-F- には -3 または -2 を指定でき、それぞれ対応する版のフォーマット済みチェックポイントファイルを作成します(既定はバージョン 3)。また -c を含めると、分子力学の原子タイプを整数ではなく文字列として出力します。
ユーティリティのメモリ量は -U- ディレクティブで設定します。これは formchk や freqchk などに適用されます。
実例
8GB のメモリと 1TB のディスクを備えたデュアルコアワークステーションでは、既定のアルゴリズムとメモリ割り当てで問題ありません。ただし、実行に使用する既定 CPU と MaxDisk は指定しておく必要があります。
-C- 0,1 -#- MaxDisk=200GB
大規模なジョブに使用するように設計された 4 つのオクタコア プロセッサと 256 GB のメモリを備えたサーバーでは、デフォルトで 8 コア (コア 0 から始まる最初の 8 つの奇数コア) を使用する必要があります。また、各ジョブにはより多くのメモリ (2 GB/コア) を割り当てる必要があります。
-M- 16GB -C- 0-16/2 -#- MaxDisk=500GB
一部の古い Intel プロセッサ(Nehalem 以前)では、チップ上のすべての CPU を十分に稼働させるだけのメモリ帯域幅がありません。この場合は、CPU の半分だけを使い、そのぶん各 CPU により多くのメモリを割り当てる方が有利なことがあります。たとえば、4 基の 12 コアチップと 128GB のメモリを備え、最初のチップが CPU 0〜11、2 番目が 12〜23、という構成のマシンでは、48 CPU すべてを 1.5GB ずつで使うより、24 CPU(各チップ 6 CPU)に絞って 72/24 = 3GB ずつ割り当てた方が良いでしょう。適切なディレクティブは次のとおりです。
-M- 72GB -C- 0-47/2
/2 つまり、チップ 0 のコア 0、2、4、6、8、10、チップ 1 のコア 12、14、16、18、20、22 など、1 つおきのコアを使用するように指示されています。
概要
Default.Route の設定は、Link 0 コマンド、コマンドラインオプション、環境変数と相互に対応しています。
詳細な対応表は次の「等価オプション」にまとめており、この節では設定体系の全体像だけを簡潔に示します。
等価オプション
Gaussian 16 の動作を制御するほとんどのオプションは、4 つの方法のいずれかで指定できます。優先順位の高いものから低いものまで、次のとおりです。
- Link 0 入力(%-line)として指定: 特定ジョブを制御する標準的な方法であり、複数ステップ入力の個別ステップを制御できる唯一の方法です。実例: %CPU=1,2,3,4。Link 0 コマンドの詳細は Link 0 Commands を参照してください。
- コマンドラインオプションとして指定: 実行方法ごとにエイリアスやショートカットを定義したい場合に便利です。実例: g16 -c="1,2,3,4" …
- 環境変数として指定: 標準的なスクリプト運用、特にバッチキューへのジョブ生成・投入で有効です。実例: export GAUSS_CDEF="1,2,3,4"
- Default.Route のディレクティブとして指定: すべてのジョブに対するプログラム既定値を変更したい場合に有効です。実例: -C- 1,2,3,4
Default.Route を検索する際は、まず現在の既定ディレクトリを確認し、次に Gaussian 16 実行ファイルのパス(環境変数 GAUSS_EXEDIR、通常は $g16root/g16)を確認します。
次の表は、Link 0 コマンド、コマンドラインオプション、Default.Route 項目、および環境変数の対応を示しています。-h、-o、-i*、-o* の各オプション群は [REV B] で導入され、対応する環境変数も同時に追加されました。
| Default.Route | Link 0 | Option | Env. Var. | 説明 |
| Gaussian 16 の実行既定値 | ||||
| -R- | -r | GAUSS_RDEF | ルートセクションのキーワード一覧。 | |
| -M- | %Mem | -m | GAUSS_MDEF | Gaussian ジョブに割り当てるメモリ量。 |
| -C- | %CPU | -c | GAUSS_CDEF | マルチプロセッサ並列ジョブで使用するプロセッサ/コアの一覧。 |
| -G- | %GPUCPU | -g | GAUSS_GDEF | GPU 並列ジョブで使用する GPU とコアの対応一覧。 |
| -S- | %SSH=command | -s | GAUSS_SDEF | ネットワーク並列ジョブでワーカー起動に使用するプログラム。%UseSSH は %SSH=ssh と等価で、%UseRSH は同様に rsh を指定します。 |
| -W- | %LindaWorkers | -w | GAUSS_WDEF | ネットワーク並列ジョブで使用するホスト名の一覧。 |
| -P- | %NProcShared | -p | GAUSS_PDEF | マルチプロセッサ並列ジョブで使用するプロセッサ/コア数。 非推奨。-C- を使用してください。 |
| -L- | %NProcLinda | -l | GAUSS_LDEF | ネットワーク並列ジョブで使用するノード数。非推奨。-W- を使用してください。 |
| アーカイブエントリ用データ | ||||
| -H- | -h | GAUSS_HDEF | コンピュータのホスト名。 | |
| -O- | -o | GAUSS_ODEF | 組織名(サイト名)。 | |
| ユーティリティプログラムの既定値 | ||||
| -F- | GAUSS_FDEF | formchk ユーティリティのオプション。 | ||
| -U- | GAUSS_UDEF | ユーティリティに割り当てるメモリ量。 | ||
| スクリプトおよび外部プログラム用パラメーター | ||||
| # section | -x | GAUSS_XDEF | ジョブ全体のルート指定(入力ファイルからルートを読み込まない)。 | |
| %Chk | -y | GAUSS_YDEF | ジョブ用のチェックポイントファイル。 | |
| %RWF | -z | GAUSS_ZDEF | ジョブ用の read-write ファイル。 | |
| %OldChk | -ic | GAUSS_ICDEF | 入力を読み込む既存のチェックポイントファイル。 | |
| %OldMatrix | -im | GAUSS_IMDEF | 入力を読み込む行列要素ファイル。 | |
| %OldMatrix=(file,i4lab) | -im4 | GAUSS_IM4DEF | 4 バイト整数を用いる、入力読込み用の行列要素ファイル。 | |
| %OldMatrix=(file,i8lab) | -im8 | GAUSS_IM8DEF | 8 バイト整数を用いる、入力読込み用の行列要素ファイル。 | |
| %OldRaw | -ir | GAUSS_IRDEF | 入力を読み込む raw 行列要素ファイル。 | |
| %OldRaw=(file,i4lab) | -ir4 | GAUSS_IR4DEF | 4 バイト整数を用いる、入力読込み用の raw 行列要素ファイル。 | |
| %OldRaw=(file,i8lab) | -ir8 | GAUSS_IR8DEF | 8 バイト整数を用いる、入力読込み用の raw 行列要素ファイル。 | |
| -oc | GAUSS_OCDEF | 出力用チェックポイントファイル。通常は -y/GAUSS_YDEF と重複します。 | ||
| -om | GAUSS_OMDEF | 出力用の行列要素ファイル。 | ||
| -om4 | GAUSS_OM4DEF | 4 バイト整数を用いる出力用の行列要素ファイル。 | ||
| -om8 | GAUSS_OM8DEF | 8 バイト整数を用いる出力用の行列要素ファイル。 | ||
| -or | GAUSS_ORDEF | 出力用の raw 行列要素ファイル。 | ||
| -or4 | GAUSS_OR4DEF | 4 バイト整数を用いる出力用の raw 行列要素ファイル。 | ||
| -or8 | GAUSS_OR8DEF | 8 バイト整数を用いる出力用の raw 行列要素ファイル。 | ||
シェルによるパラメーター文字列の変換を避けるため、コマンドライン引数や環境変数の値は、通常は引用符で囲んで指定してください。