gaussian 16 は pascal 世代の GPU に未対応?

Share This:

先日、nVIDIA の GTX 1080 Ti を自作パソコンに入れました。
これからは GPGPU をフル活用していこうと思っており、これまで作ったプログラムを cuda 仕様に書き換えている今日この頃です。

さて、今年発売された Gaussian16 ですが、新しく追加された機能の一つとして GPU 対応したことが注目されています。公式 HP では Tesla K40, K80 をサポートしているが Pacal 世代の GPU は未対応である旨が書かれています。

Gaussian 16 can use NVIDIA K40 and K80 GPUs under Linux. Earlier GPUs do not have the computational capabilities or memory size to run the algorithms in Gaussian 16. Gaussian 16 does not yet support the Tesla-Pascal series.

公式にはサポートされていないものの、手元の GTX 10 シリーズで使えたりしないかなぁと思い、自作 PC で試してみることにしました。

管理人の環境

CPU: Intel CPU Core i7-7700 3.6GHz 8Mキャッシュ 4コア/8スレッド LGA1151
m/b: ASUS PRIME H270-PRO
メモリ(64 GB): Crucial DDR4 2400 MHz 16GB 4枚
グラフィックボード: GEFORCE GTX 1080 Ti 11GB
: GEFORCE GTX 1060 6GB

GTX 1080 Ti を導入後、lspci で確認すると

と表示されてしまい、GTX 1080 Ti の名前が表示されないという寂しい思いをしました。その後 PCI ID をアップデートしました。

現在は、しっかりと GeForce GTX 1080 Ti と表示されるようになりました。

GPU を使って計算する際の input ファイル

詳しくは、こちらのページに書かれていますが、%CPU と %GPUCPU というキーワードを指定することにより、Gaussian16 での GPU を用いた計算が可能となります。
以下にサンプルを置いておきます。

メモリについては、どれくらい確保すれば良いのか分からないので、かなり多めにとりました。

管理人の自作 PC は 4 コア 8 スレッドなので %cpu=1-8 と書いてしまいそうなところですが、CPU の番号のカウントは 0 からなので、%cpu=0-7 と書きます。(自分でプログラミングする人にとっては 0 から数え始めるのは普通のことですが、そうでない人にとってはわかりづらいかもしれません。)

%GPUCPU では GPU のデバイスとそれを制御する CPU を指定します。ここで指定する CPU の数が GPU の数よりも多い場合、エラーが起きて計算がスタートしませんでした。使用する GPU が 1 つだけの場合、%GPUCPU=0=0 のように書けば良いと思います。

Pascal 世代には対応していない

上述したような形式で input ファイルを作成すると、一応計算はスタートします。しかし、scf 計算の最初のサイクルで止まります。

この時、terminal には以下のエラーメッセージが表示されます。

Amber や Gromacs は Pascal 世代に対応しているのに Gaussian はまだ対応していない。。。先日インストールした AutoDock GPU 版も CUDA 8.0 未対応でした。。。しかし、今更前世代の GPU に戻るわけにもいかず、新しい revision に期待するしかありません。

一方、log ファイルでは、最初に CPU と GPU の割り当てなどが記載されています。その後、scf 計算の途中で止まります。

公式ページには Tesla に関しての記載しかありませんが、GTX 9 シリーズで Gaussian16 が動くか非常に興味があります。

 

管理人は専門の研究者ではありませんので、もしも記事内容に間違い等を発見した際は、コメント欄またはメールにて教えてくだされば幸いです。

参考文献

  1. GPUの使用

関連する記事

汎関数一覧に戻る

計算手法に戻る

コメントを残す(投稿者名のみ必須)