11.3 簡単!オブジェクト指向並列プログラミング
   

図11-5

通常のプログラミングとオブジェクト指向プログラミング

 通常のプログラミング法では「計算に関わるデータの構造」よりも「計算手続き」に重点を置いてプログラムが構成されています。これに対して、オブジェクト指向プログラミング法では処理対象としての分割されたデータとこれに関係する計算手続きとを一体化して「クラス」を作り、処理は各クラス内で行われるようにプログラムを構成します。

 

図11-6

オブジェクト指向シミュレーション・フレームワークで求めた衝撃波

左からの流れに対して円柱の前面にできる衝撃波を有限体積法で求めました。利用者は部分領域内のデータに対するソルバーを用意するだけで、部分領域への分割と解の接続はフレームワークによってなされ並列化について意識しないですみます。

 

 


 並列・分散計算の時代を迎えて計算プログラムが大型化し複雑化する一方、プログラムの開発や利用の過程でモデルやアルゴリズムの変更が必要になることもしばしば起こります。そこでプログラム開発や改良・修正を容易にするために「オブジェクト指向プログラミング法」に従いシミュレーション・フレームワークを開発して有効性を実証しました。
 通常行われているプログラミング法では「計算に関わるデータの構造」よりも「計算手続き」に重点を置いてプログラムが構成されています。このため並列化に際してはデータを分割して各CPUに配分するという「データ構造依存部分」が数値計算のための「手続き依存部分」と一体化した構造をとらざるを得ないのでプログラミングが難しくなります。オブジェクト指向プログラミング法では処理対象としての分割されたデータとこれに関係する計算手続きとを一体化して「クラス」を作り、処理は各クラス内で行われるようにプログラムを構成します(図11-5)。偏微分方程式を領域分割法で解くような時、部分領域に分割したり部分毎の解を接続する機能をフレームワークに持たせて利用者に意識させないようにできます。この結果、プログラム要素の「再利用性」が高まり並列化のためのプログラム構造を意識しないですむので異なる並列計算機間の「可搬性」が向上します。
 図11-6はこのフレームワークのもとで、領域を15の部分領域に分けて有限体積法で円柱の前面にできる衝撃波を解いた結果を示しています。


参考文献

T. Ohta, An Object-Oriented Programming Paradigm for Parallel Computational Fluid Dynamics on Memory Distributed Parallel Computers, Proc. Parallel Computational Fluid Dynamics, May 19-21, 1997, 561 (1998).

ご覧になりたいトピックは左側の目次よりお選び下さい。  



たゆまざる探究の軌跡−研究活動と成果1998
copyright(c)日本原子力研究所