@SIMでガウシアンを始めるブログへようこそ!
このブログでは、Webブラウザを使って簡単にガウシアンを始められるサービス「@SIM」を使って、一人でも見よう見まねで化学シミュレーションができるようになることを目指して、使い方を解説していきます。
「ガウシアンやってみたい」「@SIMってところでやれるらしいけど、使い方わからない・・・」とお困りの方の助けになれば幸いです。
昨日は先端的大規模計算利用サービス第4回シンポジウムが無事開催され、「量子化学計算ASPにおけるアプリケーションレベルの有効な資源配分の研究」という題目でポスター報告しました。Gaussianの計算時間やメモリについて興味深く質問いただき、サンプリングデータの有意義な活用の重要性をご理解いただけました。
このブログについて、だいぶ@SIMのWebMOを使ったGaussianについて情報を書きつくした感がありますので、勝手ながら、更新頻度を不定期(WebMO・Gaussian・量子化学関連のニュースがあったときのみ)とさせていただきます。ご了承ください。
計算時間を予測できますか?シリーズに関連する、計算時間サンプリングデータベース作成に関する発表を7/1(木) 先端的大規模計算利用サービス 第4回シンポジウム にてHPCシステムズが行います。具体的にはT2Kオープンスパコン東大版を用いて次の条件のサンプリングを行った結果についての報告となります。
並列コア数の大きい環境でのサンプリングはスパコンを使わせていただかないと、なかなか行えませんので、大変貴重で興味深いサンプリングデータになっています。並列数に応じて計算時間はどうなるのか?最短な計算時間にするにはどんな計算条件がよさそうか?を知るのに活用いただけます。
お時間の都合が合いましたら是非ご参加ください。
なお、参加には事前登録が必要です。事前登録は↓公式ページから行えます。登録受付は6/28(月)までです。
開催日時: 2010年7月1日(木) 13:30~18:30
開催場所: 丸ビル ホール(東京都千代田区丸の内2-4-1 丸ビル7階:詳細)
定 員: 200名(参加登録:6月24日まで 6月28日(月)まで延長)
参加費: 無料(懇親会は会費2,000円です)
GPUで量子化学計算をする上で気になること(気にすべきこと)は、計算精度です。速くなっても、計算精度がCPUと比べて悪くなったら効果は半減(場合によっては消滅)してしまいます。
GPUと精度
GPUは元来グラフィックカードであることから、計算結果が不安定であったという過去があります。肉眼では何千万色のうちの少しずれたり、1ピクセル欠けたりしてもほとんど気付かないので、それを見込んで作られているためか?、たまに計算結果を多少間違える事実が知られています。
選ぶべきGPU環境
2010年6月現在出回っているGPUでどうなっているかというと、大雑把に言うと、安物では度々計算結果を間違えるが、高い物では間違いが起こってもそれを検出し訂正してくれる(ECC付き)、という状況です。NVIDIA社のGPUで言うと、GeForce系(GTX470等)は価格が安いですが、ECCが無効なため計算結果を間違えても検出さえできません。一方、同じFermiアーキテクチャのTesla系(C2050等)は価格が高いかわりにECCが付いてて安心して使用できます。
また、HPC用途では計算精度以外に性能が重視されますが、、性能面でもTeslaはお勧めです。Teslaに比べてGeForceが、倍精度浮動小数点演算が3倍程度遅いことが知られています。
「アーキテクチャが同じなら開発時は安いものでも良いのか」という議論が出来ますが、ECC有無を考えると、無駄なデバッグの手間を防げるという点で、最初からTeslaを持っておくとよいと考えます。
巷では「Tesla C2050手に入らないんじゃないの?」といった噂が流れているらしいですが、それは事実と異なります。HPCシステムズでお取引させていただいているエルザジャパン殿等から潤沢に供給されています。早く試してこそHPCの研究成果の価値が活きますから、買うなら今でしょう。
計算精度
TeraChemの計算精度を調べてみました。インプットはDFTにblyp、3-21G基底を使うように少し改変したtest397ベンチマークです。
| 環境 | G03b01CPU版との誤差[a.u.] | 誤差[kcal/mol] |
| G03b01 CPU | 0 | 0 |
| GAMESS 2009 Jan CPU | -0.000077 | -0.04832 |
| TeraChem beta3 (Tesla C1060) | -0.001476 | -0.92620 |
TeraChemはCPU版ととても近い計算結果を出しています。XA-CUDA-QMについても同様に調べていまして、そちらはTeraChemよりもさらにCPU版に近い(精度が高い)です。
このようにGPUで量子化学計算するソフトはCPUと比較して高い計算精度を保つことができてきています。期待が持てますね。
前回載せた第29回日本シミュレーション学会大会の発表内容にもあるのですが、GPUを使った高速な量子化学計算についてまとめてみます。
GPUとは何か?
大雑把にいえば、PCについているグラフィックカードのことです。近年、3Dゲームが多く登場するにつれて複雑で大規模な計算を素早く行えるよう、高性能化がぐんぐん進んでいます。
GPUの特長として、並列性が挙げられます。もともとピクセル毎の独立した処理を多くこなす等のため、並列処理向きに作られています。
なぜGPUを使うのか?
GPUの特徴は、計算コア数が多いこと。具体的には5月にリリースされたNVIDIA Tesla C2050では480個の単精度浮動小数計算コア、240個の倍精度浮動小数計算コアを持っています。今PCについているCPUコア数がせいぜい12であることを考えると、桁違いに多いことがわかります。
計算コアが多いということは、それを複数同時に使って(=並列に)計算すれば、計算時間を大幅に短縮できることを意味します。また、消費電力で見ると、CPUで同程度の性能を達成するよりもGPUで計算させたほうが桁違いに低消費電力で済みます。高速で低消費電力。とても魅力的ですね。
そこで、GPUを汎用計算に使うGPGPU(General Purpose GPU)計算が注目を浴びています。もちろん計算時間の長い量子化学計算にも使おうという動きが進んでいます。
使えるものはあるのか?
名大・安田耕二先生と株式会社クロスアビリティが共同開発されているXA-CUDA-QMがあります。高速さはもちろん、汎用性も考慮して作られているので、GaussianやGAMESS向けに使うこともできるように設計されています。
他に知られているものとしては、TeraChemがありますが、独自の入力・出力フォーマットとなっておりGaussian等の既存アプリのユーザにとっては手間がかかるでしょう。
GPUを使うには
すでにGPUに興味がおありの方、また初耳の方も、実際にGPUをご自分の計算に活用してみてはいかがでしょうか。もし自作アプリをGPU対応にさせて高速化させたい場合、難しいGPUプログラミングを代行してくれる、HPCシステムズのGPGPU高速化サービスをお勧めします。自作ソースコードを送れば無料でどのくらい高速化されるのかを教えてくれるサービスもやっています。
HPCシステムズ - 計算科学コンサルティング - 高速化サービス
http://www.keisankagaku.com/consultingService/index02.html
第29回日本シミュレーション学会大会(山形大学)にて、HPCシステムズが計算化学クラウドの構想について発表します。セッションは、6/19のオーガナイズドセッション「バイオ・ナノシミュレーション ~その現状と未来展望~」で、オーガナイザーは直島 好伸先生(岡山理科大学)と末岡 浩治先生(岡山県立大学)です。
「高速、かつ簡単に使える」をテーマに、今よりもっと生産性の高い計算化学計算環境をHPCシステムズは追求しつづけます。
お時間の都合が合いましたら、聞いていただけたら幸いです。
@SIMの外部でGaussView等を使ってインプットを作りGaussianで計算した結果を、@SIMに読み込む方法を説明します。
通常ジョブを作成するときにはJob ManagerのCreate New Jobを使います。しかし、外部から読み込んでジョブを作ることもできます。それがCreate New Jobの下にあるImport Jobです。
Import JobをクリックするとImport an Existing Jobページが開きます。
まず、Job Nameを入力します。これはCreate New Job時のConfigure Gaussian Job OptionsページのJob Nameと同じです。必ず指定しましょう。
次に、File TypeをGaussianに変更します。
続いて、2) Local output file の横にある[参照]ボタンをクリックします。すると、ローカル(つまりWebブラウザを起動しているPC)のファイルを選ぶダイアログが出ます。ここでGaussianの出力結果ファイルを選びます。
最後にImport Jobボタンをクリックすれば、この出力結果が、あたかも@SIM内で計算された他のジョブと同じようにJob Managerに追加されます。
セミナーでいただいた質問2つ目「同位体はどうやって指定するんですか?」
@SIMのWebMO+Gaussianで同位体を使って計算させるには、分子構造を(同位体を考えずに)構築した後、Configure Gaussian Job OptionsページにてPreviewタブのGenerateボタンを押し、インプットを直接編集します。
編集の仕方はGaussian User's ReferenceのReadIsotopesの項を参照してください。重水の例を挙げさせていただきます。
#N HF/6-31G(d) FREQ(Readiso) heavywater 0 1 O H 1 B1 H 1 B2 2 A1 B1 0.9420095 B2 0.9419742 A1 105.48186 298.150 1.0 16 2 2 |
Readisoオプションを入れる 通常通りタイトル~分子構造 空行 温度 気圧 原子1(O)の同位体質量 原子2(H)の同位体質量 原子3(H)の同位体質量 空行 |
ゴールデンウィークのため投稿を休ませていただいておりました。これまでどおり、そしてこれまで以上に@SIM(WebMO+Gaussian)がお役に立つよう執筆してまいります。
今回はGaussianセミナーでいただいた「分子構造を編集している間に席を離れなければならなくなったとき、途中の編集状態を保存しておいて後から再開できないか?」という質問にお答えいたします。
Build MoleculeページでJavaアプレット内で分子構造を編集しているときに、FileメニューからSave as... を選びます。xyz形式でローカル(ブラウザを立ち上げているマシン)のファイルとして保存することができます。
続いて、編集作業を再開するには、Job ManagerページのCreate New JobからBuild Moleculeページ行き、Javaアプレット内のFileメニューからOpen... を選びます。ここで先ほど保存したxyzファイルを開けば、作業再開できます。
前回までで予測式が出来ましたので、後は任意のインプットから全基底関数の数さえわかればいい、ということになります。このシリーズの締めくくりとして、そのやり方を説明します。
ポイントは「%KJob L301」です。これをインプットの先頭に加えてやれば、全基底関数の数を(l301が)出力した後にGaussianの計算が終了します。
@SIMのWebMOでは以下のやり方です。
まず、全基底関数の数を求めたいインプットをConfigure Gaussian Job Optionsページまでにつくります。続いて、Configure Gaussian Job OptionsページのPreviewタブを開き、Generateボタンをクリックします。
するとWebMOが内部的に作成し投入しようとしているGaussianインプットがテキストエリア内に表示されます。ここで冒頭に「%KJob L301」という行を挿入します。
これで右矢印をクリックしてジョブを投入します。
すぐにジョブは完了します。View Jobページを開き、Raw outputをクリックすれば、最後の方にbasis functions・・・と見つかります。