現在位置: ホーム torrent No.6 日本語版 CMSIにおけるソフトウェア開発

CMSIにおけるソフトウェア開発

P1画像スーパーコンピュータ京の一般利用がこの9月から開始されました。このような最先端のコンピュータを使いこなすにはアルゴリズムの発展のみならずコミュニティーコードの整備が不可欠です。本号では、計算物質科学分野でのソフトウェア開発の現状を俯瞰するとともに、CMSI内ですでに始動しているオープンソースプログラム開発の試みと、国際共同体制で開発が進められているオーダーN第一原理ソフトウェアCONQUESTを紹介。今後のソフトウェア開発の進むべき方向を考えます。

計算機の性能向上とアルゴリズムの進歩
世界で最初の汎用コンピュータENIACの誕生(1946年)から66年、最先端のスーパーコンピュータの演算性能はこの間に50兆倍以上もの進化をとげました。最初のTOP500リスト(http://top500.org/)が公開された1993年以降の19年間だけを見ても約27万倍の性能向上です。この計算機の圧倒的な進化のおかげで、100万原子系の第一原理計算、あるいは1000万原子系の分子動力学計算など、従来と比べ飛躍的に大規模な系をより高い精度でシミュレーションすることが可能になってきています。
私たちCMSIの研究分野である、物性物理・分子科学・材料科学においては、ほかにも量子化学計算やモンテカルロ法、行列の厳密対角化、あるいは複数の手法をつなぎ合わせたマルチスケール/ハイブリッド法など、さまざまな手法が用いられてきました。これらの分野を網羅する「計算物質科学」 におけるシミュレーションの最も大きな特徴の一つは、ある特定の初期状態から得られる系の時間発展よりむしろ、相関の強い系の平衡状態や定常状態に興味がある点です。あるいは、非平衡状態を議論する場合にも、フェムト秒からピコ秒、ナノ秒といった非常に長時間のシミュレーションが要求されます。さらには、シミュレーションの対象となる系の次元も必ずしも三次元とは限りません。相関の強い量子多体系のシミュレーションにおいては、量子相関の効果を正確かつ効率的に取り込む、あるいは、できる限り少ない反復回数で平衡状態にたどりつくための工夫として、非局所的な演算が用いられることも多く、一般的に膨大な演算量とネットワーク通信量が必要となります。
スーパーコンピュータ京のような最先端の計算機をフル活用し、次世代の物質科学研究を進めていくには、計算機自体の演算性能の進化だけでは十分ではありません。物質科学の基礎方程式を効率的に解くための計算科学的な理論、すなわち「アルゴリズム」の発展もまた非常に重要な役割を果たしてきました。高速フーリエ変換やモンテカルロ法など、与えられた方程式をより速く解くための工夫だけでなく、これまで Torrent で紹介してきた、高速多極子法(Torrent No.2)や分割統治法(Torrent No.5)、本号で取り上げるオーダーN法など、精度を落とすことなく計算量を大幅に減らすことのできる近似手法の開発、あるいは、実空間法(Torrent No.3)のような現代の計算機アーキテクチャに向いた方法の開発などがその代表例です。

計算物質科学分野の現状
計算物質科学分野においては、日々新しい手法が提案され、その応用も活発に試みられています。現実の物質に見られる現象を説明するための「有効模型」の抽出 ~ さまざまなアイデアにもとづくアルゴリズム開発 ~プログラミング ~ シミュレーション ~ 結果の解析 ~「有効模型」へのフィードバック、といった一連のサイクルを、たった一人の研究者、あるいはごく少人数のグループで行っていることも珍しくありません。実験や応用に近い領域では、量子化学計算における GAUSSIAN (p.5 コラム参照)のような超巨大なアプリケーションソフトも広く使われていますが、これはむしろ例外的で、多くの研究グループにおいては、グループごとに固有のプログラムが使われています。大学院生の卒業などでグループ内の利用者がいなくなってしまうと、そのプログラムの存在は忘れ去られてしまうことになります。
独自コードが多いということは、計算に用いるパラメータの入力やシミュレーション結果の出力についても、独自形式のものが多いことを意味します。その結果、統一的な形でのデータの保存・検索が困難となります。また、他の研究者が開発したツールを用いた解析や連成計算(二つ以上の異なるアプリケーションを組み合わせたハイブリッド計算)などを進める上でも大きな障害となりつつあります。
その一方で、現在主流の超並列計算機・マルチコアアーキテクチャに対応するためのハイブリッド並列化やキャッシュチューニング、ネットワークのトポロジに合わせた通信の最適化など、アプリケーションの開発・高度化のコストが増大してきています。スーパーコンピュータ京のような大規模な計算機を使いこなすためには、ソフトウェア開発においても個人を越えて組織的に進めることが不可欠となってきました。また、計算科学分野内だけでなく、計算機科学・数値計算の専門家との協働作業もますます重要となってきています。

「ソフトウェアの公開」とは?
CMSIが進めている拠点研究員制度(Torrent No.3参照)は、これまでの博士研究員とは異なり、特定の研究グループ内で閉じ
るのではなく、計算物質科学分野全体の振興、すなわち次の世代の計算物質科学にとって重要な先端的要素技術開発や基盤技術整備をミッションとする、他に例を見ない極めてユニークな制度です。これと対応して、今後はプログラム自体も分野全体で育てていく、すなわちソフトウェアの公開を推進していく必要があります。
ここでいう「公開ソフトウェア」とは、比較的緩やかな利用条件(ライセンス)のもとで、利用者がwebなどからソースコードをダウンロードし、自身でコンパイル・実行し、シミュレーション結果を公表することができるようなものを指します。共同研究契約が必要なものや、バイナリのみの配布のものは、ここでの(狭義の)公開ソフトウェアには含めないことにします。利用条件はソフトウェアによって少しずつ異なりますが、利用者は計算対象に応じて、ソースコードを改変したり、自身のプログラムに取り込んだり、あるいは修正を加えたコードを再配布することが可能な場合さえあります。このような形で公開されているプログラムは、しばしば「オープンソースソフトウェア」と呼ばれます。基本OSの Linux、エディタ Emacs、コンパイラ GCC などが有名です。
計算物質科学分野において、利用者のタイプはさまざまです。理論研究者は自身の新しい理論・近似法の検証や、新しいアイデアを試すための基盤として、あるいは実験研究者や企業の研究者は実験結果の解釈や実験物質のモデリングに利用するでしょう。計算科学の専門家にとっても、自身のプログラムの出力結果の検証や計算速度のベンチマーク、連成計算のモジュールの一つとして公開ソフトウェアは役に立つでしょう。その一方で、公開ソフトウェアに対する要求も利用形態によって、使いやすさや機能の豊富さ、実行速度や計算精度などさまざまです(図1)。

コミュニティコードの必要性
ソースコードをweb上で公開するだけでは「公開ソフトウェア」とは呼べません。広く利用者に使ってもらうためには、まず、正しく動くコードと利用しやすいGUIなどのユーザインターフェイス、インストール方法や使用方法に関するマニュアルや典型的な利用法に関するチュートリアルなどの日本語や英語によるドキュメントの整備が必須です。また、電子メールや掲示板などを用いた利用者支援や、定期的な利用者講習会も不可欠でしょう。バグフィックスや新機能の要望にも継続的に対応していく必要があります。
計算物質科学分野、特に日本発の公開ソフトウェアはまだそれほど多くありません。その理由としては、まず第一にこのような公開にともなう手間・コストがあげられます。プログラムの公開やメンテナンスにともなう障壁を少しでも低くするため、CMSIでは、ソースコード管理やドキュメント、プログラムの公開サイトの作成のためのツールの整備や利用講習会、アプリケーションの紹介サイト(通称「アプリカフェ」)の充実など、拠点研究員のスキルアップと並行して継続的に取り組んでいきます。
それでは逆に、ソフトウェアを公開することにはどのような意義があり、また開発者にはどのような利益があるのでしょうか? プログラムを公開し、多くの人からフィードバックをもらうことにより、プログラムはより信頼性の高いものとなります。協力者からのコードを受け入れることにより、新たな機能を付け加えソフトウェアをより充実させていくことも可能となります。また、利用者とのやり取りが新たなアルゴリズムの開発、新たな共同研究やコミュニティの創出につながっていくことも多いでしょう。たとえ、いかに優れたアルゴリズムを開発したとしても、それがソフトウェアという形で具現されていなければ、その手法が評価されるチャン
スはほとんどありません。
この傾向は量子化学計算の分野で最近特に顕著ですが、今後、計算科学分野全体に広がっていくでしょう。理想的には、新規計算手法のコードを公開し広く使ってもらうと同時に、そのプログラムが新たな手法を実装するための基盤ソフトとしてコミュニティの中で成長していく。そのような「コミュニティコード」を育てることができれば、開発者のみならず分野全体にとって大きな利益となります。プログラムの公開はけっして他人のためのサービスではなく、自身の業績(サイエンス)をソフトウェアという形で残すことにほかなりません。
国内では、2012年9月末にスーパーコンピュータ京の一般利用が開始されたばかりですが、次世代のエクサフロップス級のスーパーコンピュータの建設に向けた調査研究もすでに動き始めています。計算物質科学分野にとって重要なアプリケーションプログラムを超並列アーキテクチャ向きにチューニングされた形で整備し、さらにそれらにもとづき計算機科学分野の研究者といっしょに次の世代のスーパーコンピュータのデザインにも主体的に関わっていく。そのようなサイクルを確立するためにも、計算物質科学のコミュニティコードの充実を戦略的に進めていくことが今後より重要となっていくに違いありません。

(CMSI広報小委員会代表/東京大学物性研究所 藤堂眞治)