科学計算におけるオブジェクト指向プログラミング

オブジェクト指向プログラミング(Object Oriented Programming, OOP)では,共通するクラスを作ってそれを継承し異なる部分だけ変更したり,付け加えたりできる。
Arabas et al. (2013)は,C++, Fortran, Pythonで移流コードMPDATAを実装し,必要なメモリ量,計算性能や使い勝手を比較している。Fortranは,一番速いものの,コードの行数が一番長く,C++のテンプレートに対応する機能多相性がない。Fortran 2003は継承が可能でgfortranにも実装されている。しかし,OOPは使う人が少なく,ライブラリの設計に生かされていない。C++は,Fortranに次いで速いが多次元配列のライブラリが様々あることが問題。Pythonは(欧米の)科学技術の世界で普及しているが,遅い。CPythonをPypyに置き換えると,かなり速くなるそうであるが,共有メモリ並列は考慮されていない。気候モデルに関しコードが資産でなく負債となるかもしれないという懸念はもっともだ。
論文ではBlitz++が用いられているが,Armadilloが速くて分かりやすいようである。科学計算用の並列ライブラリPETscにも,C++用の多次元配列が含まれているようである。

コメント

このブログの人気の投稿

静的サイト生成ツールの導入

uptex

TeXのソースを分割してTeXShopでタイプセット