このキーワードは、さまざまなキャッシュブロッキングアルゴリズムで使用するプロセッサごとのデフォルトのキャッシュ量を(8バイト単位のワード数で)指定します。 この値を適切に設定することで、バッチサイズを利用可能なキャッシュ量に合わせ、関連するアルゴリズムの効率を最大化できます。
通常、このキーワードは Default.Route ファイルで使用します。現在のシステムにインストールされているGaussianバイナリーのデフォルト値は、 testrt ユーティリティを用いて確認できます。LinuxやほとんどのUNIX系のシステムでは、 cachesize スクリプトを使用してこのパラメータの最適な値を決定できます(下の実例を参照)。
Gaussian 16のバイナリをビルドする際、この値は各種CPUタイプの現行バージョンに対して正しく設定されてますが、その後にリリースされたチップではキャッシュサイズやコア間キャッシュ共有方式が異なる場合があるため、変更が必要になることがあります。 Gaussian 16をソースコードからビルドする場合、この値はコンパイルを実行したシステムのハードウェアに対応した設定になります。
実例
以下の testrt コマンドの出力は、Gaussian 16バイナリーに対する値を一覧表示しています:
$ testrt sp Revision: EM64M-G16RevA.02 9-Aug-2016 NErtGn=1000 NextEG=955 MaxAtm=250000 MDCach=131072 testrtコマンドの出力の残り部分 …
この131,072という値は、倍精度で128Kワード、つまり1MBに相当します。 このMac OS Xシステムには、6MBのL3キャッシュを備えたクアッドコア64ビットIntelプロセッサが搭載されています。 利用可能なキャッシュの50%を使用するのが妥当とされるため、コアあたり0.75MB(1.5MBの50%)が適切な値となります:これは、 CacheSize=98304 (値は8バイトワード単位)に相当します。
Linuxシステムでは、キャッシュのサイズは /proc/cpuinfo に記録されています。 $g16root/g16/bsd サブディレクトリーにある cachesize スクリプトを実行すると、合計キャッシュサイズが表示されます:
$ $g16root/g16/bsd/cachesize 524288 バイト
これは、この旧式のデュアルコアシステムには512KBのキャッシュがあることを示しています。 この場合、コンピューターが古いため、プロセッサごとのキャッシュサイズが出力されます。 このスクリプトに何らかの引数を渡すと、使用する CacheSize キーワードが表示されます:
$ $g16root/g16/bsd/cachesize 1
CacheSize=32768
この場合、コアあたり0.25 MBのキャッシュが使用されます。