新たにGaussian16 Rev.C.01で加えられた新機能は、[Rev C] を付けて示しています。
Gaussian16 Rev.A.03 2017年1月リリース
Gaussian16 Rev.B.01、TCP Linda 9.1 2018年3月リリース
Gaussian16 Rev.C.01、GaussView 6.1.1、 TCP Linda 9.2、 GMMX 3.1 2019年7月リリース
Gaussian16 Rev.C.02 2022年3月リリース ※NVIDIA A100 GPUがサポートされました。その他機能の変更はありません。
M1/M2チップ対応のGaussian16 for Mac 2022年9月リリース ※価格や詳細は、お問い合わせください。

新しいモデリング性能
[Rev C] NBO ver.7に対応し、Populationキーワードのオプションとして以下が追加されました:
Pop=NPA7:Natural Population Analysis
Pop=NBO7:Natural Bond Orbital Analysisの全機能
Pop=NBO7Read:入力行から読み込んだNBO用の入力に基づくNBOの全機能
Pop=NBO7Delete:いくつかの相互作用を削除した影響を考慮したNBO解析
これらは、外部インターフェースを通じてNBO7を使用します。
さらに、Natural Energy Decomposition Analysisを実行するためのキーワードPop=NEDAが追加されました。この解析では、counterpoise計算と同様にフラグメントに関する入力情報を使用します。(分子軌道やFock行列要素等の)消去および消去に伴う最適化が、NBO6またはNBO7のどちらでも機能するようになりました。
以下、ご参照ください: http://nbo7.chem.wisc.edu/
[Rev C] ポテンシャル由来の電荷を計算する際に、RESP(restrained electrostatic potential)による制約を課すことができるようになりました。例えば、Pop=(MK,Resp=N)を指定した場合、電荷の二乗に対してN x 10-6 Hartreeの重みを適用します。他の静電相互作用由来の電荷の求め方(CHelp, HLYなど)にも、この指定で同様に制限を適用することができます。Nはデフォルトで2です。
[Rev C] Pop=SaveHirshfeldまたはPop=SaveCM5を指定することで、指定した手法で求めた電荷がその後の計算のMM電荷として保存されます。
[Rev B] CISおよびTDレベルにおいて、励起状態の静的ラマン強度が計算できるようになりました。TD Freq=Ramanを指定することで、電場についての数値微分から分極率を算出します。そのため、Freq=Raman指定によるこれらの手法での計算コストは、ラマン強度を計算しない場合の振動計算の7倍になります。
励起状態の振動数/IRおよびラマンスペクトルの予測、および遷移状態構造の最適化とIRC計算を実行するための、TD-DFT解析的二次微分計算の導入
励起状態構造最適化のためのEOMCC解析的勾配計算の導入
VCDおよびROAスペクトルへの非調和振動解析の追加:キーワードFreq=Anharmonicを参照
振電スペクトルとその強度の計算機能の導入:キーワードFreq=FCHTおよび関連するキーワードを参照
共鳴ラマンスペクトル計算の導入:キーワードFreq=ReadFCHTを参照
新しいDFT汎関数の追加:M08ファミリーMN15MN15L
新しいdouble-hybrid法の追加:DSDPBEP86, PBE0DH, PBEQIDH
PM7半経験的手法の追加
Adamoにより開発された励起状態電荷移動診断法の導入:キーワードPop=DCTを参照
CaricatoによるEOMCC溶媒和相互作用モデルの導入:キーワードSCRF=PTEDを参照
制限付きの最適化や他の目的のために任意のredundant内部座標を定義して使用することを容易にした、一般化内部座標の導入:キーワードGeom=GIC を参照
計算性能の強化
Linux環境下で、GPUのNVIDIA K40, K80およびP100 (Pascal) を使ったHartree-FockおよびDFT計算を行うことが可能です。
[Rev B]からP100、[Rev C]からV100が新たにサポートされ、両リビジョンともに全てのGPU上でのパフォーマンスが改善されました。詳細は、「GPUの利用」タブをご参照ください。
多数のプロセッサー上での並列性能が向上しました(複数のCPUを持つマシンやクラスター上で最善の性能を得る方法については、「並列性能」タブにある情報をご参照ください)。
[Rev B] Linda worker間でのタスクの動的割り当てがデフォルトになり、並列性能が改善されました。
Gaussian 16では、CCSD繰り返し計算時のI/Oを避けるために最適化されたメモリーアルゴリズムを採用しています。
GEDIIS最適化アルゴリズムについて、性能を強化したところがいくつかあります。
アクティブスペースが(10,10)以上のCASSCF計算の改良により、計算性能が向上しかつアクティブスペースを最大16軌道まで取り入れることが可能になりました(適用する分子系に依存)。
W1化合物モデルの内殻相関エネルギー計算の大幅な速度向上を実現しました。
Gaussian 16では、composite electron propagator (CEP)法の対角二次自己エネルギー近似 (D2)項の計算の大幅な速度向上を実現したアルゴリズムの改良を実装しています。キーワードEPTをご参照ください。
使用法の強化
[Rev C] 各振動モードのROA不変量は、デフォルトで出力するのではなく、基準振動モードの微分を計算するように指定した場合のみ、G16またはfreqchkによって出力されるようになりました。
[Rev C] ユーティリティーで使用可能なメモリ量を、コマンドラインの引数-mで指定できるようになりました。例:
formchk -m=1gb myfile
-mオプションは、必ずファイル名や他の引数よりも前に指定してください。
[Rev C] %SSHとこれに対応するLink 0コマンドで、rshまたはsshの代わりに、Lindaワーカーを起動するために実行するコマンドを指定することができます。
[Rev C] Geom=AllCheckを指定した場合のデフォルトのいくつかを上書きできるようになりました:
  • Field=NoChkにより、チェックポイントファイルから外場の係数を読み込まないようにすることができます。
  • Geom=GenConnectivityにより、チェックポイントファイルにある情報を使用せずに、強制的にconnectivityを再計算します。
  • Geom=UseStandardOrientationを指定すると、チェックポイントファイルにある標準配向座標を新しいジョブの入力配向として用います。
[Rev C]エネルギー極小への構造最適化中のデフォルトのいくつかを上書きできるようになりました:
  • Opt=NGoUp=Nを指定すると、エネルギーがN回増加した後線形探索のみを行うようになります。デフォルトは1(2回連続でエネルギーが増加した場合、それ以降は線形探索のみ実行する)です;N=-1では、エネルギーが上昇するたびに強制的に線形探索のみ行います。
  • 鞍点に近い場合、Opt=NGoDown=Nを指定すると、プログラムはHessian行列の最大N個の固有ベクトルを負の固有値と混合して、鞍点から離れるようなステップを形成します。デフォルトは3です;N=-1でこの機能がオフになり、通常のRFOステップのみのアルゴリズムが用いられます。
  • Opt=MaxEStep=Nは、鞍点から離れる時のステップの長さをN/1000 (Bohrまたはradians) とする指定です。通常の最適化ではN=600 (0.6)、ONIOM Opt=Quadmacを指定した計算ではN=100 (0.1)がデフォルトになります。
[Rev C]多次元の緩和スキャンに関する情報は、平坦化されずに、軸に関する詳細と共にformatted checkpointファイルに保存されるようになりました。そのため、これらのデータはGaussViewや他のプログラムで表示できます。
[Rev C]checkpointファイルにバージョン番号を保存して、読み込む際チェックするようになりました。これにより、古いcheckpointファイルを指定した場合の曖昧な失敗を回避します。c8616ユーティリティを使用して、checkpointファイルを更新できます。入力として用いるformatted checkpointファイルにバージョンがない場合でも、作成したcheckpointポイントファイルに現在のバージョンを記す-fixverオプションがunfchkにあります。
[Rev B] ChkChkユーティリティーが、ジョブの状況(正常終了、異常終了、実行中など)を出力するようになりました。
[Rev B] 有限の(点でない)大きさの原子核を用いる場合、原子の入力行で原子核の半径をオプションのパラメーターとして指定することが可能になりました。半径は、RadNuclear=valを用いて原子単位の浮動小数点数として指定します。例:
C(RadNucl=0.001) 0.0 0.0 3.0
FortranやCのようなコンパイラー言語や、PythonやPerlのようなインタープリター型言語で書かれたプログラムと、Gaussianとのインターフェイスを担うツールが用意されています。詳細は、Interfacing to Gaussian 16をご参照ください。
  • [Rev C]4バイトまたは8バイトの整数を用いた生のバイナリファイルをサポートします。前者はNECのシステム以外ではデフォルトです。この機能のサポートには、Outputキーワードとformchkユーティリティの新しいオプション、新しいLink 0コマンド、新しいコマンドラインオプションと環境変数が含まれます。
  • [Rev C]ONIOMレイヤ、最適化、およびトラジェクトリーの結果に関する情報を行列要素ファイルに追加します。またOutputキーワードに、AOの2電子積分、重なり積分の微分、コアハミルトニアン、その他の行列、またはAOの2電子積分の微分を含めるための、新しいオプションを追加します。
  • [Rev B] 原子のポピュレーション、一電子および物性演算子行列、非断熱結合ベクトルを含む多くの物理量が行列要素ファイルに追加されています。新しい項目は、以下のラベルセクションです:
    QUADRUPOLE INTEGRALS, OCTOPOLE INTEGRALS, HEXADECAPOLE INTEGRALS, [MULLIKEN,ESP,AIM,NPA,MBS] CHARGES, DIP VEL INTEGRALS, R X DEL INTEGRALS, OVERLAP DERIVATIVES, CORE HAMILTONIAN DERIVATIVES, F(X), DENSITY DERIVATIVES, FOCK DERIVATIVES, ALPHA UX, BETA UX, ALPHA MO DERIVATIVES, BETA MO DERIVATIVES, [Alpha,Beta] [SCF,MP2,MP3,MP4,CI Rho(1),CI,CC] DENSITY and TRANS MO COEFFICIENTS およびスカラー量63,64
  • [Rev C]スクリプトの利用を容易にする機能強化
    • ExternalキーワードのAllAtomsおよびActiveAtomsオプションは、ONIOMで外部プログラムまたはスクリプトを用いる際に、全ての原子またはモデル系(highレイヤー)内の原子に関する情報を取得するのに使用します。
    • $g16root/g16/bsd/inp2matファイルは、Gaussianの入力ファイルを読み込み、そのファイルに含まれる情報(座標、基底関数など)を含む行列要素ファイルを、計算を最後まで実行することなく生成するスクリプトです。これは、GauOpenのPythonインタフェースでこの情報を行列要素ファイルオブジェクトにインポートするために使用されますが、Gaussian入力ファイルを解析する必要性を回避するために他のスクリプトでも使用できるようにしています。
    • 行列要素ファイルで使用するデフォルトの整数のサイズをスクリプトでチェックできるように、G16で使用する整数のサイズをtestrtユーティリティーで出力するようにしました。
  • 入力ファイルのLink 0 (%) やDefault.Routeファイルに設定していた変数を、コマンドラインの引数で指定したり環境変数で指定することが可能になりました。[Rev B] では、入力またはデータとしてチェックポイントあるいは行列要素ファイルを指定するコマンドラインオプション(入力ではLink 0コマンドの%OldChkまたは%OldMatrixに相当)を導入しました。
  • 構造最適化計算で、力の定数を最適化のnステップ毎に計算するように設定できます:
    キーワードOpt=Recalcをご参照ください。
  • [Rev B] DFTBパラメーターが、基底関数を構築する前のLink 301で読み込まれるようになりました。これにより、元素にd型関数が含まれているかどうかをパラメーターファイルから見ることができます。
  • [Rev B] 入力またはデータをチェックポイントあるいは行列要素ファイルへ書き込む、あるいはこれらをチェックポイントまたは行列要素ファイルから読み込むことを指定するコマンドラインオプションが用意されています。
Gaussian 16 Rev.A.03からの変更点
ソースコードからの構築の手順に若干の修正があります。詳細は、こちらの書類をお読みください。
Gaussian 09からの変更点
計算のデフォルト設定
以下のデフォルト設定がGaussian 16では異なっています:
  • 積分の精度が、Gaussian 09のデフォルトである10-10から10-12になりました。
  • 一般的な使用の際のデフォルトのDFTグリッドとして、G09で採用されていたFineGridからUltraFineに変更しました;CPHFのデフォルトのグリッドはCoarseGridではなくSG1になります。詳細につきましては、キーワードIntegralの中での議論をご参照下さい。
  • SCRFのデフォルトが、IEFPCMの非対称バージョンから対称形式 になりました(Gaussian09にはありません)。
  • 物理定数を、Gaussian 09で使用していた2006年の数値から2010年の数値に変更しました。
最初の2つの項目は、幾つかの新しい計算のタイプ(例えばTD-DFTの振動計算や非調和ROA)に対する精度を保証する変更になります。上述の理由により、Integral=(UltraFine,Acc2E=12)がデフォルトになりました。上記の設定を採用することで、数値積分を含む計算、例えばDFTの溶液中での最適化、の信頼性が一般的には向上します。Gaussian 09のデフォルトであるIntegral=(FineGrid,Acc2E=10)と比べて、これらのオプションによりCPUへの負荷はやや増加します。
G09Defaultsキーワードを設定することで、上記4つのデフォルト設定がGaussian 09での値に戻ります。これは以前行った計算との互換性のために用意されたものですが、新しい研究に用いる場合は新しいデフォルト設定を適用することを強くお薦めします。
デフォルトのメモリー使用量
Gaussian 16では、%Mem=100MW (800MB)がデフォルトになりました。より大きな分子の計算や、多くのプロセッサーを使う場合は、より多くのメモリーを設定するのが適切です。詳細につきましては並列性能タブを参照してください。
TD-DFT振動計算
TDDFTの振動計算は、デフォルトで二次微分を解析的に計算しますので、数値微分(Gaussian 09ではこれしか選択できませんでした) よりも計算が大幅に速くなります。

Gaussian 16では、Linux環境下でGPUのNVIDIA K40, K80および[Rev B] P100、[Rev C]V100を使って計算を実行することが可能です。それ以前のGPUでは、Gaussian 16のアルゴリズムを実行するために必要な演算能力やメモリー量がありません。

ジョブへのメモリーの割り当て
GPUを効率的に使用するためには多くの処理を同時に実行する必要があるので、ジョブに十分な量のメモリーを割り当てるのはCPUよりもGPUを使う時の方がより重要になります。K40やK80ユニットでは、搭載できるメモリーは16GBまでです。一般的に、このメモリー空間のほとんどをGaussianで使えるようにする必要があります。各GPUで12GBメモリーがある場合、8-9GBをGaussianに割り当てれば十分動作します;同様に、16GBのメモリーを持つGPUであれば、11-12GBをGaussianに割り当てるのが適切です。加えて、GPUを制御する各CPUスレッドにも最低限同じメモリー量を割り当てる必要があります。
制御CPUについて
GPUを使う場合、各GPUは特定のCPUにより制御される必要があります。制御CPUは、それが制御するGPUとできるだけ物理的に近い位置にあるべきです。複数のGPUで、制御CPUを共有することはできません。
GPU制御用に用いられているCPUは、計算ノードとしては使用できないことに注意してください。
GPUを含むシステムのハードウェア構成は、nvidia-smiユーティリティーを使って確認することができます。以下に、16コアHaswell CPUチップ2つと4枚のK80ボード(それぞれGPUを2つずつ搭載)で構成されたマシンの出力を例示します:
GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7 CPU Affinity
GPU0 X PIX SOC SOC SOC SOC SOC SOC 0-15 1番目のチップ上のコア
GPU1 PIX X SOC SOC SOC SOC SOC SOC 0-15
GPU2 SOC SOC X PIX PHB PHB PHB PHB 16-31 2番目のチップ上のコア
GPU3 SOC SOC PIX X PHB PHB PHB PHB 16-31
GPU4 SOC SOC PHB PHB X PIX PXB PXB 16-31
GPU5 SOC SOC PHB PHB PIX X PXB PXB 16-31
GPU6 SOC SOC PHB PHB PXB PXB X PIX 16-31
GPU7 SOC SOC PHB PHB PXB PXB PIX X 16-31

この出力で重要な箇所はCPU affinityです。この例ではGPU0および1(最初のK80カード)がチップ0上のCPUと接続し、一方GPU2-7(他の3枚のK80カード)はチップ1上のCPUと接続しています。

Gaussianジョブ実行時のGPUと制御CPUの指定
計算に使用するGPUとそれらを制御するCPUは、%GPUCPU Link 0コマンドで指定します。このコマンドで設定する変数は1つです:

%GPUCPU=gpu-list=control-cpus

ここでgpu-listはコンマで区切られたGPU番号のリストで、数値の範囲を含める(例えば0-4,6)ことも可能です。またcontrol-cpusは、同様の書式で制御CPUの番号をリストしたものです。この2つのリストの並び順は、GPUとそれを制御するCPUに対応しています。

例として、32プロセッサーと6つのGPUがあるシステムで、全CPU〜26個のCPUが計算、6個のCPUがGPUの制御〜を使うジョブでのLink 0コマンドは以下になります:

%CPU=0-31制御CPUもこのリストに含まれます
%GPUCPU=0,1,2,3,4,5=0,1,16,17,18,19

これらのコマンドは0-31番CPUがジョブ(全てを計算に使わない場合でも)に使われることを示しています。0-5番のGPUを用い、GPU0はCPU0に、GPU1はCPU1に、GPU2はCPU116に、GPU3はCPU17に、などとしてそれぞれ制御されます。制御用CPUは%CPUに含まれていることに注意してください。

上述の例では、GPUおよびCPUリストを短縮して表記することもできます:

%CPU=0-31
%GPUCPU=0-5=0-1,16-19

通常は番号が連続したプロセッサーを用いますが、特別な場合はこれと異なる関連付けをすることも可能です。例として、同じマシン上ですでにCPUを6つ使用したジョブが、%CPU=16-21で実行されている場合を仮定します。この場合、6つのGPUを制御しながら他の26個のCPUを使用するためには、以下のように指定します:

%CPU=0-15,22-31
%GPUCPU=0-5=0-1,22-25

このジョブでは全部で26個のプロセッサーを使用し、6つのGPUをそれぞれCPU 0, 1, 22, 23, 24, 25で制御しながら、残り20個のCPUを計算に使用しています。

[Rev B] から、CPUとGPUのリストをソートしてから組み合わせるようになりました。これにより、GPUを持っているCPU上で、最小数のスレッドの実行が保証されるようになりました。そうすることにより、メモリーの制限などにより使用するプロセッサー数を計算の一部で減らさなければいけなくなった時、優先的にGPUのスレッドを使用・保持することを保証します(スレッドの削除は逆順で行われるため)。
GPUとジョブ全体の性能向上
大きな分子について、DFTのエネルギー、グラジエント、および振動数(基底状態と励起状態の双方で)の計算を行う場合、GPUを用いることは効果的ですが、小さい系のジョブには効果がありません。また、MP2やCCSDのようなpost-SCF計算への適用も効果的ではありません。
各GPUは、CPUよりも数倍演算が速いです。しかしながら最新のマシンでは、GPUよりCPUの方が多く搭載されているのが一般的です。GPUだけでなくCPUも全て用いることで、最高の性能を発揮します。
Gaussian 16では多くのCPUを効率的に使いますので、環境によってはGPUの使用により見込まれる速度向上は制限されます。例えば、GPUがCPUより5倍速いとすると、GPUを用いた場合CPUのみと比べて5倍速くなります。しかし、32個のCPUと8個のGPUで構成されたより大きなコンピューターでGPUを用いる場合、見込まれる速度向上は2倍になります:
GPU無し:32*1 = 32
GPU有り:(24*1) + (8*5) = 64制御CPUは計算には使われないことにご注意ください
速度向上比:64/32 = 2
どのプロセッサーとGPUを使って計算を行うかを決める際には、使用するマシン環境の性質を注意深く解析することが必要です。
計算機クラスター中のGPU
クラスタ内のノードにあるGPUを使うことが可能です。%CPUおよび%GPUCPUの設定はクラスタ中の各ノードに適用されますので、ノードは同一の構成(GPUの数とそれらのCPUとの関係性)である必要があります:大抵のクラスタは同じ構成のノードの集まりなので、通常問題になることはありません。

並列計算の設定方法と並列化性能

共有メモリー型並列
メモリー割り当て:より大きな分子や多くの基底関数を含む計算では、より多くのメモリーを割り当てるのが効果的です。50原子以上または基底関数が500以上、およびこれら両方に該当する計算には、プロセッサー当たり4GB以上設定するのがお薦めです。freqmemユーティリティーは、基底状態での振動計算に最適な1スレッドあたりのメモリーサイズを見積ってくれます。また励起状態の振動計算においても同じ値が妥当です。基底状態および励起状態の最適化では十分過ぎる値でしょう。
メモリー量はプロセッサー数に応じて増やすべきです:1プロセッサーで4GB設定するのが妥当である場合、同じジョブを8個のCPUで実行する時はメモリーを32GBにすると効率よく実行します。もちろん、より小さな数値を上限として課されるハードウェアもありますが、CPUの数に比例してメモリー量をスケーリングすることを最終目標としてください。特に、メモリーサイズを固定したままCPUの数だけ増やすのは、多数のプロセッサを使用しても良い性能向上は得られません。
大きな系の振動計算やCCSDおよびEOM-CCSDのエネルギー計算では、関連する大きなディスクファイルをバッファするための十分なメモリーを空けておくことも好ましいことです。したがいまして、Gaussianジョブではシステム上の全メモリーの50-70%までを上限として割り当ててください。例えば、全メモリーが128GBのマシンでは、通常全CPUを使用するジョブには64-80GBのメモリーを設定し、残りはOSがディスクキャッシュとして使用するために空けるべきです。
スレッドのCPUへの固定:スレッドがあるCPUから別のCPUへ移動すると効率が失われ、それによりキャッシュが無効になり他のオーバーヘッドが生じます。大抵のマシンにおいて、Gaussianではスレッドと特定のCPUを結び付けることが出来、特に多数のプロセッサーを使う場合にはこれが推奨される操作モードになります。Link 0の%CPU行により、使用する特定のCPUの番号を指定します。例えば、8コアのチップが一つあるマシンであれば、%NProc=8よりも%CPU=0-7を使うべきです。後者では最初のスレッドがCPU 0、次のスレッドがCPU 1、という形で結びつけられるからです。
いくつかの古いインテルプロセッサー(Nehalemおよびそれ以前)では、チップ上の全てのCPUをビジー状態に保つための十分なメモリーバンド幅が有りません。そのため、CPUのうちの半分だけ使い、各CPUで全CPUを使う時の2倍のメモリーを使えるようにした方が、より好ましい場合が多いです。例として、12コアのチップが4つと128GBのメモリーを搭載するマシンでは、0-11のCPUが最初のチップ、12-23が二番目のチップ、などのようになりますので、24プロセッサー(各チップで6)を使用し各プロセッサーに72 GB/24 = 3 GBのメモリーを設定した方が、各プロセッサーにメモリーを1.5 GBしか割り当てずに全48プロセッサーを使うよりも効率良く実行します。この場合必要な指示文は以下の通りです:
%Mem=72GB
%CPU=0-47/2
ここで/2は使用するコアが一つおきであることを意味します:すなわち、0, 2, 4, 6, 8, 10(チップ0にあるコア), 12, 14, 16, 18, 20, 22 (チップ1にあるコア)などです。
最新の世代のインテルプロセッサー(Haswell以降)では、メモリーバンド幅が向上しており各チップの全コアを使っても、うまく動作します。
十分なメモリが利用可能で、スレッドが特定のコアに結び付けられていさえすれば、大きな分子を計算する時の並列化効率は64コアかそれ以上のコア数まで良好です。
ハイパースレッディングの無効化:ハイパースレッディングは、同じ物理CPU上においてメモリーバンド幅等のリソースをスレッド毎に事実上分割するため、Gaussianを使う際には有効ではありません。ハイパースレッディングを無効化できなければ、Gaussianジョブでは各物理CPU上で1ハイパースレッドのみ使うようにする必要があります。Linuxでは、異なるプロセッサー上のハイパースレッドがグループ分けされています。すなわち、チップが2つでそれぞれに8コアあり、3-wayハイパースレッディングのマシンの場合、「CPU」番号0-7はチップ0にある8コア、8-15はチップ1の8コア、そして16-23はチップ0の二番目のハイパースレッド、などになります。そのためこのマシン上では%CPU=0-15でジョブを実行するのが最善です。
AIXでは、ハイパースレッドは、使用するハイパースレッド数が8未満であっても、各CPUで最大8つのハイパースレッド番号でグループ分けされます。そのため、8コアのチップ2個で4-wayハイパースレッディングの場合、「CPU」番号0-3はチップ0にあるコア0の全スレッド、8-11はチップ0のコア1、などになります。したがいまして、%CPU=0-127/8として「CPU」番号0,8,16,...を選択することで、個別のコアを使えるようになります。
クラスター型(Linda)並列
有用性:Hartree-FockやDFTのエネルギー、グラジエント、および振動数の計算は、MP2のエネルギーやグラジエントと同様に、クラスター間の並列計算を実行します。MP2の振動、CCSDやEOM-CCSDのエネルギーおよび最適化は、クラスター並列ではなくSMP並列です。DFTの非調和振動やCCSDの振動計算などの数値微分は、各ノードで完全なグラジエントまたは二次微分の計算を行い、クラスター内のworker同士で微分の方向を分割することで、クラスターのノード間で並列化されています。
共有メモリー並列との結合:共有メモリーとクラスター並列は同時に指定することができます。クラスターの各ノードにある全CPUを、共有メモリー並列に用いるのが一般的です。%CPU%Memの指定は、クラスターの各ノードに適用されることに注意してください。たとえば、applebananaおよびcherryという名前の3ノードにそれぞれ、CPUが8個あるチップが2つずつ搭載されている場合、以下のような指定になります:
%Mem=64GB
%CPU=0-15
%LindaWorkers=apple,banana,cherry
# B3LYP/6-311+G(2d,p) Freq 〜〜〜
この場合、3つのノードそれぞれでCPUを固定して16スレッド実行します。合計48スレッドそれぞれに4GBのメモリーを設定していることになります。
数値微分〜例えば、Freq=AnharmCCSD Freqなど〜を求める特別な場合では、計算結果を収集するために余分に1 worker使用します。そのため、このようなジョブではマスターノード(Gaussian 16を起動するノード)に 2 workers設定して実行する必要があります。上記の例で非調和振動を計算するジョブの場合、以下の設定を使います:
%Mem=64GB
%CPU=0-15
%LindaWorkers=apple:2,banana,cherry
# B3LYP/6-311+G(2d,p) Freq=Anharm 〜〜〜
ここではappleノードでGaussian 16を起動するものとします。この入力ではappleノードで2 workers設定しています。そのうちの一つは結果の収集を行い、appleノードのもう一つのworkerとbananaおよびcherryのworkerを使って計算が実行されます。
CCSD, CCSD(T), EOM-CCSD計算に必要なメモリー量
これらの計算では、I/Oを回避するようにメモリーを使うことが可能で、振幅とベクトル積をメモリー上に保存するための十分なメモリー領域を確保することで計算効率が大幅に向上します。アクティブな占有軌道がNO個(出力ではNOA)で非占有軌道がNV個(出力ではNVB)の場合、メモリーはおおよそ9NO2NV2 words必要になります。このメモリー量は、使用するプロセッサー数には依存しません。

Gaussian16の動作を制御するほとんどのオプションは、以下に示す4つの方法のうちのいずれかで設定することができます。優先順位の高いものから並べると以下の通りです:

Link 0入力(%行):
特定のジョブを制御する通常の方法であると同時に、多段階のジョブを記した入力ファイルのある特定の段階を制御する唯一の方法です。例:%CPU=1,2,3,4
コマンドライン・オプション:
プログラム実行時によく使う個別の方法を、エイリアスやショートカットで使い分けたい時に便利です。例: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コマンドとそれに対応する設定をまとめます。「-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- %UseSSH -s GAUSS_SDEF ネットワーク並列ジョブのworkerを起動するプログラム: rshまたはssh
-W- %LindaWorkers -w GAUSS_WDEF ネットワーク並列ジョブのホスト名のリスト
-P- %NProcShared -p GAUSS_PDEF マルチプロセッサ上での並列ジョブ実行時のプロセッサー/コアの数。廃止予定: -C-を使用してください
-L- %NProcLinda -l GAUSS_LDEF ネットワーク並列ジョブのノード数。廃止予定:-W-を使用してください
アーカイブに入れるデータ
-H-   -h [Rev B] GAUSS_HDEF コンピューターのホスト名
-O-   -o [Rev B] GAUSS_ODEF 所属する組織(サイト)名
ユーティリティープログラムのデフォルト設定
-F-     GAUSS_FDEF formchkユーティリティーのオプション
-U-     GAUSS_UDEF ユーティリティーに使用するメモリー量
スクリプトや外部プログラム用のパラメーター
# section -x GAUSS_XDEF ジョブのルートセクションの全指定(入力ファイルにあるルートセクションは読み込まない)
%Chk -y GAUSS_YDEF Checkpointファイル名
%RWF -z GAUSS_ZDEF Read-writeファイル名
[Rev B] %OldChk -ic GAUSS_ICDEF 入力を読み込むための既存のチェックポイントファイル名
[Rev B] %OldMatrix -im GAUSS_IMDEF 入力を読み込むためのMatrix Elementファイル名
[Rev B] %OldMatrix=(ファイル,i4lab) -im4 GAUSS_IM4DEF 入力を読み込むための、4バイト整数を使用しているMatrix Elementファイル名
[Rev B] %OldRaw -im GAUSS_IRDEF 入力を読み込むためのRaw Matrix Elementファイル名
[Rev B] %OldRaw=(ファイル,i4lab) -im4 GAUSS_IR4DEF 入力を読み込むための、4バイト整数を使用しているRaw Matrix Elementファイル名
[Rev B]   -oc GAUSS_OCDEF 出力チェックポイントファイル名。通常、-y/GAUSS_YDEFの冗長
[Rev B]   -om GAUSS_OMDEF 出力Matrix Elementファイル名。
[Rev B]   -om4 GAUSS_OM4DEF 4バイト整数を使用する出力Matrix Elementファイル名。
[Rev B]   -or GAUSS_ORDEF 出力Raw Matrix Elementファイル名。
[Rev B]   -or4 GAUSS_OR4DEF 4バイト整数を使用する出力Raw Matrix Elementファイル名。
コマンドラインや環境変数では通常、シェルにより変数文字列が修正されるのを防ぐために、設定する値の前後に引用符が必要になりますので、ご注意ください。