• 検索結果がありません。

2.3. 中性化

2.4.1. ハードウェア

並列演算環境を構築するにあたって,当研究では市販の自作PCパーツを使用することを 重視した.故障した時のメンテナンス性に加え,実際に構築する時の設定のし易さを配慮 すると,メーカー製の既製PCよりも価格などを含めて利点が大きい.

使用したパーツの一覧を以下のTable 2.2に示す.また,完成した並列環境を設置したラ ックをFig. 2.17に記す.

Table 2.2 使用パーツ一覧.

製品名 メーカー 型番 数量

CPU AMD FX-8170 3.9 [GHz] 8 Core 4

Motherboard ASUS M5A88-M 4

PC Case Scythe GX-3901-BK 4

RAM Silicon Power PC10600 DDR3 16 [GB] (4[GB]x4) 4

HDD WD S-ATA 500 [GB] 7200 [RPM] 4

Power Supply Scythe Core Power 400 [W] 4

35 / 83

Fig. 2.17 並列演算環境の全体図.

(新並列環境は奥のラック最上段4台である.)

2.4.2. ソフトウェア

並列演算環境の土台となるOSは,長時間稼働の安定性を配慮して,数あるLinuxの中の RHEL(Red Hat Enterprise Linux)CloneであるCentOS 5 を選択した.CentOSは有料である RHELのコードを無料公開したものであり,大企業や公立研究機関での利用実績がある.な お,アメリカのフェルミ国立加速器研究所がLinuxクラスターを構築する上で自主開発した Scientific Linux(旧Fermi Linux)もRHEL Cloneである.

次に,前節で述べたメモリ・モデルによって,要求されるプログラムやソース・コード が異なってくる.分散メモリ・タイプの並列プログラミングとして例を挙げるなら,PC間 の通信を制御する,MPICHやOpenMPI等のMPI (Message Passing Interface) がある.本研究 では,メモリ使用量の軽減や互換性の関係上,MPI-2規格に対応したOpenMPIを使用する.

なお,MPIとはMPIフォーラムで規格化された並列コンピューティングを利用するため の標準化された規格である.このMPIは特定のソフトウェアがあるわけでなく,並列処理 用のメッセージ・パッシング規格[23, 24]である.並列コンピューティングにおいて数値計算 の過程に各ノード間を様々なデータが送受信されるわけだが,その送受信の手順を定めた ものがMPIである.

36 / 83

2.4.3. 演算能力(姫野ベンチマーク・テスト)

構築した並列環境の運用テストと性能を計るために,姫野ベンチマークを活用する[25]. 姫野ベンチマークとは,理化学研究所情報基盤センター・センター長の姫野龍太郎氏が考 えたもので,流体力学シミュレーションを使用したベンチマーク・プログラムである.ポ アソン方程式をヤコビの反復法で解く構成であり,その主要なループの処理速度を計るも のである.特徴としては,四則演算しか含まれない,メモリ・アクセスに比べ演算量が少 なく、即座に実測速度求めたいときに有用である.

姫野ベンチはまずヤコビの反復法を三回行い,それに掛った時間から 1 分間に実行でき る反復回数を再度計算し,時間と反復回数から 1 秒間に実行した浮動小数点計算の回数 (MFLOPS)を求める.この際,計算に使用するデータ配列の大きさを固定しないと公平な測 定値が得られないため,今回姫野ベンチマークを使うにおいてMサイズで固定し,測定を 行っている.

なお,並列環境で使用したCPUは8コア仕様であるため,このテストは1コアと全CPU を合計した32コアの状態で行う.結果を以下のTable 2.3に示す.

Table 2.3 ベンチマーク結果.

状態 MFLOPS

1コア 3612

32コア 16495

※上記は姫野ベンチマークのFORTRAN 77バージョンを使い,Intel Fortran Composer XE 2013にてコンパイル・オプション「-O3 -xHost -ipo -shared-intel」を設定してコンパイル,実 行したものである.

【各コンパイル・オプションの説明】

・O3:通常の最適化レベルO2より過激な最大限の最適化を実行する.

・xHost:利用可能なCPU固有の命令セットをすべて活用する.

(ただし,Intel社製以外のCPUでは最大性能が発揮されない可能性がある.)

・ipo:複数のソースファイルに渡って,インライン展開等の最適化を行う.

・shared-intel:MPIライブラリが静的リンクできない仕様のため,

Intelのライブラリを含めてすべて共有リンクでコンパイルする.

37 / 83

2.4.4. 同期通信と並列化

この節では,シミュレーション・コードの並列化について説明する.シミュレーション・

コードの作成手順に関しては,まず1台のPC(1スレッド)で動作するものを構築し,必 要な演算が正しく動作していることを確認してから,並列化を行う.

まず,大まかな計算順序をFig. 2.18に示す.

Fig. 2.18 計算手順の概要図.

Figure 2.18において,各並列演算器のプロセッシング・ユニット(以下ノードとする)が

別々に異なる演算を行うのは,粒子軌道計算の部分だけである.その他の工程では,全ノ ードが同じ処理を行う.一見無駄のようであるが,MPI を使用した並列演算では,なるべ く同じ処理を全ノードで行い,データに矛盾が生じた場合のみに同期通信を行って解消す る.同期通信はLANを通して行う関係上,処理が遅く,なるべく少ない方が好ましい.

本研究のコードでは,粒子軌道計算において,演算対象の粒子を Fig. 2.19のように各ノ ードに均等に振り分けている.ある特定の粒子について演算を行うのに,他の粒子の情報 は必要なく,場の情報は前タイム・ステップの非並列化部で算出されているため,領域分 割による並列演算は行わない.

38 / 83

Fig. 2.19 粒子振り分けの概要図.

次に,データに矛盾が生じた場合の同期通信について説明する.以下のFig. 2.20 におい て,4つの色が4つの粒子を示しているとする.また,この色分けされた配列は,その対象 粒子の演算に必要な情報配列だとする.上記で述べた通り,ある特定の粒子について演算 を行うのに,他の粒子の情報は必要なく,必要な情報は縦一列に格納されている.

Fig. 2.20 各粒子の演算に必要な情報配列の例.

各ノードにおいて,Fig. 2.20の配列の内,そのノードに振り分けられた粒子の色の部分だ け更新される.よって,粒子軌道計算後の場の更新において,全ノードで同じ処理を行い たいが,それぞれのノードが有する配列の情報が異なっている,という矛盾が生じる.す なわち,同期通信が必要となる.同期通信の方法としては,バタフライ通信と呼ばれる,

各ノードがお互いにデータを受渡しするのに一番効率的(通信が少ない)方式を使用して いる,MPI_ALLGATHERというMPIの命令を活用する.

(1,1) (1,2) (1,3) (1,4)

(2,1) (2,2) (2,3) (2,4)

(3,1) (3,2) (3,3) (3,4)

(4,1) (4,2) (4,3) (4,4)

39 / 83

2.5. FRC プラズマの場合

前節までで説明したシミュレーション・モデルは主に Spheromak プラズマを対象とした ものであったが,FRC プラズマでもほぼ同様である.本節では,シミュレーション・モデ ルの異なる部分について記述する.

関連したドキュメント