製品&サービス Gaussian 16 新機能
  • 新しいモデリング性能

    • 励起状態の振動数/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を使ってHartree-FockおよびDFT計算を行うことが可能です(詳細はUsing GPUsタブをご参照ください)。
    • 多数のプロセッサー上での並列性能が向上しました(複数のCPUを持つマシンやクラスター上で最善の性能を得る方法については、Parallel Performanceタブにある情報をご参照ください)。
    • Gaussian 16では、CCSD繰り返し計算時のI/Oを避けるために最適化されたメモリーアルゴリズムを採用しています。
    • GEDIIS最適化アルゴリズムについて、性能を強化したところがいくつかあります。
    • アクティブスペースが(10,10)以上のCASSCF計算の改良により、計算性能が向上しかつアクティブスペースを最大16軌道まで取り入れることが可能になりました(適用する分子系に依存)。
    • W1化合物モデルの内殻相関エネルギー計算の大幅な速度向上を実現しました。
    • Gaussian 16では、composite electron propagator (CEP)法の対角二次自己エネルギー近似 (D2)項の計算の大幅な速度向上を実現したアルゴリズムの改良を実装しています。 キーワードEPTをご参照ください。
  • 使用法の強化

    • FortranやCのようなコンパイラー型言語や、PythonやPerlのようなインタープリター型言語で書かれたプログラムと、Gaussianとのインターフェイスを担うツールが用意されています。
    • 入力ファイルのLink 0 (%) やDefault.Routeファイルに設定していた変数を、コマンドラインの引数で指定したり環境変数で指定することが可能になりました。
    • 構造最適化計算で、力の定数を最適化のnステップ毎に計算するように設定できます:キーワードOpt=Recalcをご参照ください。
  • 計算のデフォルト設定

    以下のデフォルト設定が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を使って計算を実行することが可能です。 それ以前のGPUでは、Gaussian 16のアルゴリズムを実行するために必要な演算能力やメモリー量がありません。 Gaussian 16は、Tesla-Pascalシリーズにはまだ対応しておりません。

ジョブへのメモリーの割り当て

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を計算に使用しています。

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つの方法のうちのいずれかで設定することができます。優先順位の高いものから並べると以下の通りです:

  1. Link 0入力(%行):特定のジョブを制御する通常の方法であると同時に、多段階のジョブを記した入力ファイルのある特定の段階を制御する唯一の方法です。 例:%CPU=1,2,3,4
  2. コマンドライン・オプション:プログラム実行時によく使う個別の方法を、エイリアスやショートカットで使い分けたい時に便利です。 例:g16 -c="1,2,3,4" …
  3. 環境変数:例えばバッチ処理システム上でジョブを作成して実行する時のように、標準的なスクリプトを使う際に最も有用です。 例:export GAUSS_CDEF="1,2,3,4"
  4. Default.Routeファイル内の指示文:全てのジョブについてプログラムのデフォルト設定を変更するのに最も有用です。 例:-C- 1,2,3,4
  5. Default.Routeファイルを探す時は、最初にデフォルトの作業ディレクトリをチェックし、 次にGaussian 16実行ファイルのパスが設定されているGAUSS_EXEDIR環境変数が指示しているティレクトリ(通常$g16root/g16)を見に行きます。

    以下の表に、最も重要なLink 0コマンドとそれに対応する設定をまとめます。

    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-     GAUSS_HDEF コンピューターのホスト名
    -O-   GAUSS_ODEF 所属する組織(サイト)名
    ユーティリティープログラムのデフォルト設定
    -F-     GAUSS_FDEF formchkユーティリティーのオプション
    -U-     GAUSS_UDEF ユーティリティーに使用するメモリー量
    スクリプトや外部プログラム用のパラメーター
    # section -x GAUSS_XDEF ジョブのルートセクションの全指定(入力ファイルにあるルートセクションは読み込まない)
    %Chk -y GAUSS_YDEF Checkpointファイル名
    %RWF -z GAUSS_ZDEF Read-writeファイル名

    コマンドラインや環境変数では通常、シェルにより変数文字列が修正されるのを防ぐために、設定する値の前後に引用符が必要になりますので、ご注意ください。

Gaussian & GaussView 技術サポート
Gaussianを利用する上で生じる疑問等(計算方法やエラーの対処方法)に、弊社の技術スタッフが迅速に回答します。
詳しくはこちら。
GaussianとCONFLEXの連携利用
柔らかい構造の分子をGaussianで計算する際は、配座異性体それぞれの計算が必要です。 CONFLEXを用いれば、配座空間を探索し必要な配座異性体をもれなく見つけ出すことが可能です。両者を組み合わせた応用手法を提案しています。 詳しくはこちら。
Gaussian16リリースノート
・Rev.A.03 新機能
Gaussian,GaussViewの価格
Gaussianは、ライセンスの種類やOS等により価格が大きく変わります。ご予算に応じて最適なライセンスを提案しますので、詳しくはお問い合わせ下さい。

<見積依頼・お問い合わせ先>
TEL: 03-6380-8290


◆Gaussian 09の情報はこちら

◆Gaussian講習会の日程

◆年間技術サポートや個別の講習会も承っております。

Gaussian16M動作環境
macOS Intelプロセッサー
macOS 10.6.8, 10.7.5, 10.8.5, 10.9.5, 10.10.5, 10.11.2, 10.12.2
1GB以上のメモリー
700MB以上のディスクスペース
CDROM
Mouse
Gaussian16W 動作環境

64bit版
CPU: AMD64またはIntel64 (EM64T)
OS: 64-bit Windows

  • 7 Home, Premium, Professional, Ultimate
  • 8, 8.1
  • 10
  • Server 2012 R2
2GB以上のメモリー
ディスクスペース:
  • プログラム用:1.5 GB以上
  • スクラッチ用:2.0 GB以上
DVDドライブ
Mouse

32bit版
CPU: Intel Pentium 4, AMD Athlon以降
32bitマルチCPU版は4並列まで対応
OS: Windows XP, 7, 8, 8.1, 10
Server 2012 R2
1GB以上のメモリー
ディスクスペース:
プログラム用:1.7 GB以上
スクラッチ用:500 MB以上
CD-ROMドライブ
Mouse

参考資料
Gaussian, GaussView カタログ (PDF)
CONFLEX&Gaussian連携(PDF)
文献
コンピュータプログラム

  © 2000- CONFLEX Corporation. All Rights Reserved.