特定のコンピューターシステムの特性によっては、性能上の理由から、プログラムに組み込まれているデフォルト値の一部を上書きする必要があります。 これはカスタマイズファイルを作成することで行えます。UNIX 系システムでは、このファイルは Default.Route という名前で、$g16root/g16 に置かれます。 Windows では Gaussian のデフォルトファイルは Default.Rou で、Gaussian 16W のスクラッチサブディレクトリー (例: C:\G16W\scratch)に置かれます。ファイル形式はすべてのコンピューターシステムで同じです。
以下の小節では、デフォルトファイルで指定できる情報の種類を説明します。
Route デフォルト
これらのパラメーターは -#- で導入され、通常のルートセクションコマンドと同じ形式を持ちます。 たとえば、次の行はデフォルトの SCF アルゴリズムを conventional(非 direct)アルゴリズムに設定します。
-#- SCF=Conventional
ファイル中には複数の -#- 行を置けます。
Default.Route に記載されたコマンドはデフォルトのみを変更します。 入力ファイルのルートセクションで指定された内容があれば、それによって上書きされます。したがって、Default.Route に次の指定がある場合、
-#- MP2=NoDirect
ルートセクションに MP2 キーワードが含まれていれば、conventional MP2 アルゴリズムが使用されます。 しかし、ルートセクションに MP2=Direct キーワードが含まれていれば、direct アルゴリズムが使用されます。
-R- ディレクティブは -#- の同義語です。
最大ディスク使用量
通常、Default.Route ファイルでは MaxDisk キーワードを用いて、使用可能なスクラッチディスク容量を指定します。 たとえば、次の行は MaxDisk を 2 GB に設定します。
-#- MaxDisk=2GB
使用可能なディスク容量は、デフォルトでは 8 バイトワード単位で与えます。この値には、空白を挟まずに KB、 MB、GB、TB、KW、 MW、GW、TW を続けて、キロ、メガ、ギガ、テラの バイトまたはワード単位を指定できます。
スクラッチディスク容量はデフォルトで無制限、すなわち MaxDisk=-1 に設定されます。これは、与えられた計算を冗長な作業なしで実行できるだけの十分なディスク容量があると仮定することを意味します。 したがって、使用可能なメモリー量とディスク量を指定することは、計算性能を最適化するうえで非常に重要です。これにより、プログラムは利用可能な各種アルゴリズムの中から、特定のシステム構成に最適なものを選択できます。 特に MP2 では、使用可能なディスク容量が多いほど評価は高速になる点に注意してください。
メモリーのデフォルト
過度のメモリーを不用意に使用する Gaussian ジョブは、システムに深刻な問題を引き起こすことがあります。 メモリーディレクティブ -M- は、デフォルトの動的メモリー制限を強制します。 たとえば、次の行はデフォルトのメモリー使用量を 3GB に設定します。
-M- 3GB
使用可能なメモリー量は 8 バイトワード単位(デフォルト)で与えます。この値には、空白を挟まずに KB、 MB、GB、TB、KW、 MW、GW、TW を続けて、キロ、メガ、ギガ、テラの バイトまたはワード単位を指定できます。デフォルトのメモリーサイズは 800 MB(100 MW)です。この制限は Link 0 コマンド %Mem で上書きできます。
メモリーディレクティブ -U- は、formchk や freqchk などのユーティリティで使用するデフォルトメモリーを設定します。
組織名とホスト名
ホスト名は -H- で設定できます。この値は、Gaussian が生成するアーカイブエントリーで使用するホスト名を指定します。デフォルトは現在のホスト名です。
組織名またはサイト名は -O- で設定できます。この値は、Gaussian が生成するアーカイブエントリーで使用するサイト名を指定します。デフォルトはありません。
ユーザーデフォルトファイル
Gaussian ユーザーは、自分用の Default.Route ファイルを作成して独自のデフォルトを設定できます。 Gaussian はジョブ開始時に、現在の作業ディレクトリーにこの名前のファイルがあるかを確認します。ローカルファイルの設定はサイト全体のファイルより優先され、ジョブのルートセクションで指定されたオプションはその両方より優先されます。
コマンドラインオプションと環境変数の対応
これらのディレクティブはすべて、環境変数または UNIX/Linux のコマンドライン引数でも設定できます。環境変数 GAUSS_xDEF は、Default.Route ファイル中の -X- に相当するコマンドライン指定を与えます。同様に、g16 -x="value" へのコマンドライン引数は同じ設定を指定します。たとえば、次の指定はいずれも同等の効果を持ちます。
-M- 4GB Default.Route 内
export GAUSS_MDEF=4GB
g16 -m="4GB" ...
優先順位
優先順位は次のとおりです。
- コマンドライン引数
- 環境変数
- Default.Route の設定
- プログラム内部のデフォルト
Default.Route の制限
すべてのルートセクションキーワードが Default.Route ファイルで有効になるわけではありません。一般的な規則として、特定のジョブタイプに固有のオプションは無視されます。 したがって、デフォルトの積分グリッドを変更する Integral=SuperFine は有効ですが、特定のジョブタイプの設定を指定する Freq=Raman は無視されます。
並列ジョブディレクティブ
共有メモリーマルチプロセッサーでの並列実行
Gaussian はデフォルトでは単一プロセッサーだけで実行されます。コンピューターシステムに複数のプロセッサーまたはコアがあり、使用している Gaussian のバージョンで並列処理がサポートされている場合は、 -C- ディレクティブで実行に使用する CPU を指定できます。たとえば、次のディレクティブは 6 コアシステムの最初の 5 コアでプログラムを実行するよう指定します(1 コアは他用途のために残します)。
-C- 0,1,2,3,4
ノードリストは範囲として指定することもできます(例: 0-5)。範囲には /n 形式の接尾辞を続けることもでき、これは範囲内の n 個ごとのプロセッサーを使用することを意味します(例: /2 は 2 つおきのプロセッサーまたはコアを指定します)。
古い -P- ディレクティブを使うと、実行に使用するプロセッサー総数を指定できます(プロセッサーの選択はオペレーティングシステムに任せます)。 当然ながら、要求するプロセッサー数が利用可能なプロセッサー数を超えてはならず、超えると性能が大きく低下します。
ネットワーク/クラスター並列実行
Default.Route では、-W- ディレクティブを使って Linda ワーカーのリストを指定できます。
-W- dalton,lavoisier:2,priestley,agassiz:3,curie
この例では、指定された 5 ノードを並列実行に使用し、lavoisier に 2 つ、agassiz に 3 つ、その他の各システムに 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#(s)=core#(s) という構文を用いて、使用する 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 の以前のすべてのバージョンと後方互換の formatted checkpoint ファイルを生成します。
-F- のパラメーターには -3 または -2 を指定でき、対応するバージョンの formatted checkpoint ファイルを作成します(バージョン 3 がデフォルトです)。 パラメーターには -c も含めることができ、これにより分子力学の原子タイプが formatted checkpoint ファイル中で整数ではなく文字列として現れます。
メモリーディレクティブ -U- は、formchk や freqchk などのユーティリティで使用するデフォルトメモリーを設定します。
例
メモリー 8 GB、ディスク 1 TB を備えたデュアルコアワークステーションでは、デフォルトアルゴリズムとメモリー割り当てはそのままで問題ありません。 ただし、MaxDisk と実行に使用するデフォルト CPU は指定する必要があります。
-C- 0,1
-#- MaxDisk=200GB
大規模ジョブ用に設計された、4 個の 8 コアプロセッサーと 256 GB のメモリーを持つサーバーでは、デフォルトで 8 コア、すなわちコア 0 から始まる最初の 8 個の偶数番号コアを使用するのがよいでしょう。 また、各ジョブにより多くのメモリー(2 GB/コア)を与える必要があります。
-M- 16GB
-C- 0-16/2
-#- MaxDisk=500GB
一部の古い Intel プロセッサー(Nehalem 以前)では、チップ上のすべての CPU を十分に稼働させるだけのメモリーバンド幅がありません。そのため、全 CPU を使う場合の 2 倍のメモリーを各 CPU に与えつつ、CPU の半数を使用する方が望ましいことがよくあります。 たとえば、4 個の 12 コアチップと 128 GBytes のメモリーを備えたマシンで、第 1 チップ上の CPU が 0-11、第 2 チップ上の CPU が 12-23 などである場合、48 コアすべてを使用して各コアに 1.5GBytes だけを与えるより、24 プロセッサー(各チップ 6 個)を使い、それぞれに 72/24=3GByte のメモリーを与える方がよいです。適切なディレクティブは次のようになります。
-M- 72GB
-C- 0-47/2
/2 は 1 つおきのコアを使用することを意味します。すなわち、チップ 0 ではコア 0、2、4、6、8、10、チップ 1 ではコア 12、14、16、18、20、22、というようになります。
ディレクティブ一覧
| Default.Route | Link 0 | オプション | 環境変数 | 説明 |
| -#- | -r | GAUSS_RDEF | ルートセクションのキーワードリスト。 | |
| -C- | %CPU | -c | GAUSS_CDEF | マルチプロセッサー並列ジョブ用のプロセッサー/コアリスト。 |
| -F- | GAUSS_FDEF | formchk ユーティリティのオプション。 | ||
| -G- | %GPUCPU | -g | GAUSS_GDEF | GPU 並列ジョブ用の GPUs=Cores リスト。 |
| -H- | GAUSS_HDEF | コンピューターのホスト名。 | ||
| -M- | %Mem | -m | GAUSS_MDEF | Gaussian ジョブ用のメモリー量。 |
| -O- | GAUSS_ODEF | 組織名またはサイト名。 | ||
| -P- | %NProcShared | -p | GAUSS_PDEF | マルチプロセッサー並列ジョブ用のプロセッサー/コア数。 ほとんどの場合は -C- に置き換えられます。 |
| -R- | -r | GAUSS_RDEF | ルートセクションのキーワードリスト。 | |
| -S- | %UseSSH | -s | GAUSS_SDEF | ネットワーク並列ジョブでワーカーを起動するプログラム: rsh または ssh。 |
| -U- | GAUSS_UDEF | ユーティリティ用のメモリー量。 | ||
| -W- | %LindaWorkers | -w | GAUSS_WDEF | ネットワーク並列ジョブ用のホスト名リスト。 |
対応関係
Gaussian 16 の動作を制御するほとんどのオプションは、4 つの方法のいずれかで指定できます。優先順位の高いものから低いものへ並べると次のとおりです。
- Link 0 入力(% 行)として: 特定のジョブを制御する通常の方法であり、複数ステップ入力ファイル内の特定ステップを制御する唯一の方法です。例: %CPU=1,2,3,4。Link 0 コマンドの詳細は Link 0 コマンド を参照してください。
- コマンドラインのオプションとして: コマンドラインオプションは、プログラムの一般的な実行方法に対してエイリアスやその他のショートカットを定義したい場合に有用です。例: 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 | オプション | 環境変数 | 説明 |
| Gaussian 16 実行デフォルト | ||||
| -R- | -r | GAUSS_RDEF | ルートセクションのキーワードリスト。 | |
| -M- | %Mem | -m | GAUSS_MDEF | Gaussian ジョブ用のメモリー量。 |
| -C- | %CPU | -c | GAUSS_CDEF | マルチプロセッサー並列ジョブ用のプロセッサー/コアリスト。 |
| -G- | %GPUCPU | -g | GAUSS_GDEF | GPU 並列ジョブ用の GPUs=Cores リスト。 |
| -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 | 入力を読み込む matrix element ファイル。 | |
| %OldMatrix=(file,i4lab) | -im4 | GAUSS_IM4DEF | 4 バイト整数を使用する、入力読み込み用 matrix element ファイル。 | |
| %OldMatrix=(file,i8lab) | -im8 | GAUSS_IM8DEF | 8 バイト整数を使用する、入力読み込み用 matrix element ファイル。 | |
| %OldRaw | -ir | GAUSS_IRDEF | 入力を読み込む raw matrix element ファイル。 | |
| %OldRaw=(file,i4lab) | -ir4 | GAUSS_IR4DEF | 4 バイト整数を使用する、入力読み込み用 raw matrix element ファイル。 | |
| %OldRaw=(file,i8lab) | -ir8 | GAUSS_IR8DEF | 8 バイト整数を使用する、入力読み込み用 raw matrix element ファイル。 | |
| -oc | GAUSS_OCDEF | 出力チェックポイントファイル。通常は -y/GAUSS_YDEF と重複します。 | ||
| -om | GAUSS_OMDEF | 出力 matrix element ファイル。 | ||
| -om4 | GAUSS_OM4DEF | 4 バイト整数を使用する出力 matrix element ファイル。 | ||
| -om8 | GAUSS_OM8DEF | 8 バイト整数を使用する出力 matrix element ファイル。 | ||
| -or | GAUSS_ORDEF | 出力 raw matrix element ファイル。 | ||
| -or4 | GAUSS_OR4DEF | 4 バイト整数を使用する出力 raw matrix element ファイル。 | ||
| -or8 | GAUSS_OR8DEF | 8 バイト整数を使用する出力 raw matrix element ファイル。 | ||
コマンドラインおよび環境変数で値を指定する場合、通常はシェルによってパラメーター文字列が変更されるのを避けるため、指定値を引用符で囲む必要があります。
最終更新日: 2019年7月15日。[G16 Rev. C.01]