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

マルチカラー接触判定法のハイブリッドMPI/OpenMPによる並列化

N/A
N/A
Protected

Academic year: 2021

シェア "マルチカラー接触判定法のハイブリッドMPI/OpenMPによる並列化"

Copied!
12
0
0

読み込み中.... (全文を見る)

全文

(1)Vol.2014-HPC-146 No.19 2014/10/3. 情報処理学会研究報告 IPSJ SIG Technical Report. マルチカラー接触判定法の ハイブリッド MPI/OpenMP による並列化 河村. 祥太 1,A). 加藤. 淳也 1. 竹田. 宏2. 片桐. 孝洋 3. 堀端. 康善 1. 概要:実用で扱う多くの粉体は,億,兆,あるいは,それ以上の膨大な数の粒子から構成されているに. もかかわらず,逐次計算では計算時間の制約から 100 万個程度の粒子を解析することが限界となってい る.そのため,粉体解析アルゴリズムの並列化が早急の課題となっている.特に粉体解析アルゴリズム では,接触判定計算部分について高い並列性を確保するのが課題となっている.ところが,近年普及し ているマルチコア計算機では,性能に大きく影響をおよぼすキャッシュメモリやローカルメモリが多階 層化されている理由から,粉体解析ソフトウェアではスレッド並列化時に実行状況に依存し,並列性が 確保できないことがある.そこで本研究では,ノード内の計算にスレッド並列性を高めるマルチカラー 接触判定法を用いた MPI 並列化を行うことで,高効率を実現するハイブリッド MPI/OpenMP 実装の実現 を目指す.擬似的な MPI コードを用いた実験の結果,演算部分については 12 ノードを用いて 11.4 倍の 速度向上を実現した.. 1. はじめに 1.1 研究目的. 1.2 N 体問題や MD との問題性質の違い 宇宙物理分野で取り扱う粒子シミュレーションでは,粒 子間の相互作用について遠方の粒子に働く力も取りあつか. 実用で扱う多くの粉体は,億,兆,あるいは,それ以. わなければならない.その相互作用の力を近似するため,. 上の膨大な数の粒子から構成されているにもかかわらず,. 高速多重極法 (FMM)法や Barnes Hut 法などにより,計算量. 通常の逐次計算では計算時間の制約から 100 万個程度の粒. の削減と並列性の向上をしている.また,MD (Molecular. 子を解析することが限界となっている.そのため,粉体解. Dynamics) の分野ではカットオフ距離がある.多数の分子. 析アルゴリズムの並列化が早急の課題となっている.粉体. がそのカットオフ距離内に入ることで,負荷バランスの劣. 解析では,接触判定計算の計算負荷が最も大きく高速化が. 化を生じることがある.. 必要となる.本研究では,粒子の接触判定計算を主な対象. 以上の N 対問題や MD における並列化の問題と,粉体解析. とし,解析領域内の粒子分布に依存しない手法の研究開発. に利用される DEM (Discrete Element Methods)とでは,並. を目的とする.. 列処理の観点で問題の性質がまったく異なる.粉体解析で. 一方,近年マルチコア計算機が広く普及している.この. は,遠方の粒子の力の計算はほとんど必要とせず,粒子間. マルチコア計算機は,スーパーコンピューター(スパコン). の衝突による力の計算が主体となる.また,全ての粒子が. に代表されるハイエンド計算機だけではなく,企業におけ. すべての粒子と接触する可能性があるため,接触判定の計. るものづくりで使われる PC まで使われている.したがって,. 算量を FMM のような物理法則を利用して削減することがで. マルチコア計算機において高い並列化性能を達成できる並. きない.したがって DEM は,N 対問題などの宇宙物理分野の. 列化方式を実現することが必須となっている.そこで本研. シミュレーションや MD とは問題の性質がまったく異なる.. 究では,マルチコア計算機に向く並列化方式の研究を目的. さらに計算負荷のばらつきの観点では,メモリ量が許容さ. とする.. れる範囲において接触判定格子の数を多く確保し,接触判. マルチコア計算機に向く並列化方式として,ノード内は. 定格子の大きさを粒子直径とほぼ等しくすることで,接触. OpenMP によるスレッド並列化,ノード間は MPI による分散. 判定格子内に入る粒子数を高々数個にすることができる.. 並列化を行うハイブリッド MPI/OpenMP 実行形態が現在の. また,粒子が存在する接触判定格子内の演算のみ行うこと. 並列化の主流になっている.ハイブリッド MPI/OpenMP 実行. で,余分な演算が生じない.この理由から,負荷バランス. のためには,ノード内およびノード間において,それぞれ. の劣化を少なくすることが原理的に可能である.. 効率的な実装方式と数値計算アルゴリズムを探求しなくて はならない. †1 法政大学大学院理工学研究科 Graduate School of Science and Engineering, Hosei University †2 株式会社アールフロー R-flow Corporation, Ltd. †3 東京大学情報基盤センター Information Technology Center, The University of Tokyo A) shota.kawamura.2d@stu.hosei.ac.jp. ⓒ 2014 Information Processing Society of Japan. このように MD と DEM の問題特性の違いから,並列化時の 特性がまったく異なる.本研究では,粉体解析に用いられ る DEM を取り扱う. 1.3 粉体解析の処理と本研究での焦点 粉体解析においては,粒子同士の接触判定計算の計算負 荷が大きくなる.接触判定計算部分について,高い並列性. 1.

(2) Vol.2014-HPC-146 No.19 2014/10/3. 情報処理学会研究報告 IPSJ SIG Technical Report を確保するのが課題となっている.ところが,近年普及し. は,いくつか報告がされている[3][4][5].. ているマルチコア計算機では,性能に大きく影響をおよぼ すキャッシュメモリやローカルメモリが多階層化されてい る.粉体解析ソフトウェアではスレッド並列化においても, 実行状況により並列性が確保できないことが報告されてい る. そこで本研究では,主に接触判定計算部分において,近 年普及したマルチコア計算機を用いて計算負荷の均等化に よる並列化効率の向上と,マルチコア計算機特有の階層キ ャッシュの最適化に焦点を当てた研究を行う 一方,上記スレッドレベルの高並列化の研究に加えて, 近年開発されたスパコンによる実行では,1 万並列を超える 並列性を確保しないといけない.この状況では,MPI に代表 される分散メモリ並列化への対応が必須となる.そこで, 粉体解析における分散メモリアルゴリズムの設計を目的に. 図 1 プログラム全体のフローチャート[6]. する. 以上から,近年の超並列実行の前提となる MPI によるプ ロセス実行と OpenMP によるスレッド実行の混合によるハ. 2.2 接触判定計算と接触判定格子 接触判定計算には,接触する可能性のある粒子を効率よ. イブリッド MPI/OpenMP 実行が実現される.. く判定するために,接触判定格子を用いる.この接触判定. 1.4. 格子では,計算領域を格子状に分割する.格子内に入って. マルチカラー接触判定法. 以上の背景から,DEM においては,特に粒子の接触判定 計算において,ノード内で高いスレッド並列性を引き出す. いる全粒子を,対応する判定格子上に登録する.図 2 に接 触判定格子の例を示す.. ことが重要となる.そこで我々は,DEM におけるデータ依 存関係を考慮し,接触判定格子に対するマルチカラー法を 提案した.この方法を,マルチカラー接触判定法[1][2]と 呼ぶ. 1.5. 本稿の目的. 本稿では DEM において,マルチカラー接触判定法をノー ド内のスレッド並列化に用い,ノード間の MPI 並列化を行 うハイブリッド MPI/OpenMP 実装の検討を行うことを目的 とする.特に本稿では,このハイブリッド MPI/OpenMP 実行 を行う場合において,演算効率の観点から,ハイブリッド MPI/OpenMP 実装においてもマルチカラー接触判定法が有 効であることを示すことを目的にする. 本稿の構成を以下に述べる.まず 2 章では,DEM におけ る接触判定計算のアルゴリズムを説明する.3 章はマルチ カラー接触判定法のアルゴリズムを説明し,MPI 並列化時 の問題を検討する.4 章では,性能評価結果を示す.最後 に,本原稿で得られた知見をまとめる.. 図 2 接触判定格子の例(2 次元) 接触判定格子の格子幅は,粒子直径と同じ,または粒子 直径以上にとる必要がある.本研究では,格子幅を粒子直 径と同じに設定する.接触判定格子を用いることにより,. 2. 接触判定計算 2.1 プログラム全体の流れ. 接触する可能性のある粒子を同一格子内と隣接格子内に存 在する粒子に限定することができる.そのため,接触判定 のための計算量を減らすことが可能となるだけではなく,. 本研究における接触判定計算までの,プログラム全体の. 接触判定処理におけるデータ依存関係を緩和することがで. 手順を図 1 に示す.初めに,粒子を疑似乱数(以後,乱数). きる.このことは,後述するマルチカラー接触判定法にお. で発生させて粒子を登録する.次に粒子番号の並び替えを. ける前提となるため,重要である.. 行う.この並び替えは,データアクセスを局所化するため. また,均一粒子直径を対象とした DEM では、接触判定. に行うものである.DEM における粒子の並び替えの有効性. 格子内に入る粒子数は数個(1~3個)程度であるため,. ⓒ 2014 Information Processing Society of Japan. 2.

(3) Vol.2014-HPC-146 No.19 2014/10/3. 情報処理学会研究報告 IPSJ SIG Technical Report 極端な数の不均衡は起こる事はない.後述するが,このこ. ここで,粒子番号 0 番の粒子の図 3 での処理は,n=0 お. とも,スレッド実行時における負荷不均衡が生じない理由. よび n1=1 に相当する.このとき,スレッド 0 において,. である.. fxyz(*,n1)の更新(ここでの n1 は 1)を行っている最中に, スレッド 1 において,fxyz(*,n)(ここでの n は 1)の更新を. 2.3 接触判定計算. 行う状況がありうる.すなわち,スレッド 0 とスレッド 1. いま,接触判定が終了し,接触する粒子に対する接触力. の間で,fxyz(*,n)と fxyz(*,n1)が同じ配列の要素を指してお. の計算を行うことを考える.このとき,自分自身の接触力. り,同時に値を更新しようとするタイミングがありうる.. だけでなく,相手側の接触力も同時に更新しなくてはなら. この状態では,スレッド 0 もしくはスレッド 1 の結果のみ. ない.このことが,並列処理において,排他制御を必要と. が反映され,逐次の結果と一致しなくなる.したがって,. する要因である.. 図 3 の処理は,排他制御が必要である.. また一方で,作用-反作用の法則から,相手側の接触力と 自分の接触力は,向きが違うだけである.すなわち,いま. 以降,図 3 の衝突判定計算において,スレッド間で値を 同時に書き込むことを「競合」と呼ぶことにする.. 自分の接触力を F とすると,相手側の接触力は-F となる. したがって,この力の計算においては,作用-反作用の法則 を用いて演算量を 1/2 に削減することができる.図 3 にプ ログラムの一部分を記載する.. 2.4 競合の回避方法 図 3 をスレッド並列化した場合の競合について前節で説 明した.ここでは,この競合の問題を回避する実装につい て述べる.従来,図 3 の競合を回避するには,OpenMP で. <1>do n=ns, ne. 提供される critical 指定子を用いたディレクティブである. <2>. critical 文や atomic 文により,排他制御を行うことで競合の. do n1=n1s, n1e …. 問題を制御してきた[7].このように,OpenMP 等の排他制. <4>. fxyz(1,n)=fxyz(1,n)+fx. 御を使う方法を,排他制御法とよぶ.. <5>. fxyz(2,n)=fxyz(2,n)+fy. また,critical 文を使わない方法として,図 3 の演算につ. <6>. fxyz(3,n)=fxyz(3,n)+fz. いて,接触時に相手の情報を更新しないようにすることで,. <7>. fxyz(1,n1)=fxyz(1,n1)-fx. 競合を回避してきた.ただしこの方法では,接触力計算は. <8>. fxyz(2,n1)=fxyz(2,n1)-fy. 相手側の接触力の再計算が必要となるため,演算量が 2 倍. <9>. fxyz(3,n1)=fxyz(3,n1)-fz. に増加する.そのため,この方法を冗長計算法とよぶ.. <10>. …. <3>. 一方,後ほど説明するマルチカラー接触判定法では,接. <11> end do. 触判定格子のデータ依存関係を利用することで,冗長計算. <12>end do. 法を用いずに,演算量は排他制御法と同じ量で実現が可能 となる.また,データ依存関係を考慮しているので,排他. 図 3 作用-反作用を用いた接触力の計算. 制御も不要である。 以上の実装のプログラムの概略を図 4 に示す.. ここで図 3 では,粒子 i における 3 次元の接触力が配. 図 4<3>~<11>では,critical 文を使う従来法では,対象. 列 fxyz(*, i)に収納されており,現在計算された接触力の x,. 範囲を critical 文で囲み,排他制御を行う.図 4<12>~<15>. y,z 成分を fx,fy,fz としている.ここで,図 3 中の n は,. の冗長計算をする方法では,相手の接触力の値を更新しな. 現在注目している粒子番号である.一方,接触している粒. いため,fxyz(*, n1)の式が存在しない.一方,図 4<16>~<23>. 子群の番号は n1 であり,その番号は n1s~n1e である.. では,本研究による提案法であるマルチカラー接触判定法. 図 3 からわかるように,自分の接触力である図 3<4>~. での計算になる.マルチカラー接触判定法では,相手の接. <6>の fxyz(*,n)の更新と,相手の接触力である図 3<7>~. 触力の更新である fxyz(*, n1)の式があるが,critical 文は存. <9>fxyz(*, n1)の情報をループ内で更新しているので,図 3. 在しない.. のループを並列実行すると,相手側の配列 fxyz(*, n1)のデ ータを加算するときに,逐次と結果が異なることがある. そのため,排他制御が必要となる. 図 3 の処理について,図 3<1>のループ n を OpenMP 並列. 3. マルチカラー接触判定法 3.1 概要. 化する場合を考える.このとき,n について,粒子番号 0. 我々は,DEM の接触判定計算において更なる高速化を達. 番と粒子番号 1 番の粒子が,同一格子内にあるとする.ま. 成するため,新しい接触判定計算の方法を提案した[2].. た,粒子番号 0 番の粒子はスレッド 0,粒子番号 1 番の粒. DEM で必要となる接触判定計算では,すでに説明したよう. 子はスレッド 1 で処理されるとする.. に,作用-反作用の法則により演算量の削減を行っている.. ⓒ 2014 Information Processing Society of Japan. 3.

(4) Vol.2014-HPC-146 No.19 2014/10/3. 情報処理学会研究報告 IPSJ SIG Technical Report この従来法をスレッド並列化する時には,接触する相手の. 用いる接触判定格子を用いるaが,接触判定計算のためのア. 情報も同時に更新することになるため,複数のスレッド間. クセスの仕方が異なる接触判定格子のことである.ここで. でデータの読み書きが競合する.結果として,排他制御が. はまず,1 次元の場合における例を示すことで,マルチカ. 必要となることを述べた.この排他制御は OpenMP を利用. ラー接触判定法のアルゴリズムを説明する.. する場合,critical 指示子や atomic 指示子を入れるのが普通 であることも述べた. <1> do n1 = n1s, n1e <2> <3>. if( 排他制御法 ) then. <4>!$omp critical <5>. fxyz(1,n)=fxyz(1,n)+fx. <6>. fxyz(2,n)=fxyz(2,n)+fy. <7>. fxyz(3,n)=fxyz(3,n)+fz. <8>. fxyz(1,n1)=fxyz(1,n1)-fx. <9>. fxyz(2,n1)=fxyz(2,n1)-fy. <10>. fxyz(3,n1)=fxyz(3,n1)-fz. <11>!$omp end critical. 接触判定格子上のデータ依存を回避するため,2 色に色 分けする.接触判定格子への色の付け方を,図 5 に示す. まず,図 5(a)の接触判定格子を 2 個ずつの単位格子(1 次元単位格子)にグループ分けする.図 5(b)は,1 次元 単位格子を示す(iは1以上の整数).図 5(b)のように, 1 次元単位格子の左位置(格子番号 2i-1)の格子に対し て色“1”を付与する.また,右位置(格子番号 2i)の格 子に対して色“2”を付与する.この操作を,すべての 1 次元単位格子に対して,単位格子内の同じ位置の格子に同 じ色を付与する.このようにして,図 5(c)に示したマル チカラー接触判定格子を定義することができる.. 1. 2. 3. 4. 5. 6. 7. 8. 9. <12> else if( 冗長計算法 ) then <13>. fxyz(1,n)=fxyz(1,n)+fx. <14>. fxyz(2,n)=fxyz(2,n)+fy. <15>. fxyz(3,n)=fxyz(3,n)+fz. (a). <16> else if ( マルチカラー接触判定法 ) then <17>. 2i-1. 2i. 1. 2. fxyz(1,n)=fxyz(1,n)+fx. <18>. fxyz(2,n)=fxyz(2,n)+fy. <19>. fxyz(3,n)=fxyz(3,n)+fz. <20>. fxyz(1,n1)=fxyz(1,n1)-fx. <21>. fxyz(2,n1)=fxyz(2,n1)-fy. <22>. fxyz(3,n1)=fxyz(3,n1)-fz. (b). 1. 2. 3. 4. 5. 6. 7. 8. 9. 1. 2. 1. 2. 1. 2. 1. 2. 1. <23> end if <24> <25>end do 図 4 接触判定計算の実装概略 一方で,冗長計算法は,相互排除法に対し約 2 倍の演算 量の増大になる.つまり,排他制御法では演算量が 1/2 に なるメリットがある反面,排他制御によるスレッド並列化. (c) 図 5. 1 次元でのマルチカラー接触判格子の例. 図 5 は,1 次元の解析対象領域に対するマルチカラー接 触判定格子と格子番号を示している.. のオーバーヘッドが生じる.一方,冗長計算法では演算量. 図 5 では,従来の接触判定格子のデータ・アクセスパタ. が増える反面,スレッド並列化時のオーバーヘッドが少な. ーンは,粒子の接触判定をする理由から,格子につけられ. い.両者は欠点と利点があり,状況に応じて最適な方法が. た番号(格子番号)順にアクセスする.図 5 の例では,従. 異なる. そこで本研究では,演算量は相互排除法と同じく 1/2 に なるが,排他制御を必要としない方法である,マルチカラ. 来法では,格子番号順に 1→2→3→4→5→…とアクセスし ていく. このとき,DEM での接触判定計算のデータ依存を考慮す. ー接触判定法を提案した.. ると,対象格子番号 i の両隣格子(隣接格子)である,格. 3.2 マルチカラー接触判定法. 子番号(i-1)と格子番号(i+1)には依存関係があるが,それ以. まず,マルチカラー接触判定法に用いる接触判定格子を. 外の格子には依存関係がない.ここで,依存関係がないと. 定義する.これを,マルチカラー接触判定格子と呼ぶ. マルチカラー接触判定格子とは,従来の接触判定計算に. ⓒ 2014 Information Processing Society of Japan. a 高速化のため,カラーごとに別の接触判定格子を用意することもできる. ただし,粒子は頻繁に移動するため,粒子情報の更新の手間(コード実装 のコスト,および更新のための時間)が増えることが予想される.. 4.

(5) Vol.2014-HPC-146 No.19 2014/10/3. 情報処理学会研究報告 IPSJ SIG Technical Report は,データの競合が起き得ないために並列実行が可能であ. 以上は 1 次元の解析対象に対するマルチカラー接触判定. ることをいい,依存関係があるとは,データの競合が起き. 法の説明である.2 次元,3 次元に解析対象を広げる場合に. 得るために並列実行ができないことをいう.そのため,た. おいても,マルチカラー接触判定法は,マルチカラー接触. とえば,格子番号 i と格子番号(i-2)と(i+2)の計算は並列実. 判定格子を 2 次元,3 次元に拡張することで拡張が可能と. 行が可能である.. なる.マルチカラー接触判定法を 3 次元問題に適用するに. ここで注意点は,格子内にある粒子は接触しているため,. は,図 6 のように,3 次元にマルチカラー接触判定格子を. データ依存がある.そのため,格子内にある粒子の接触判. 拡張する.図 6 では,接触判定格子上のデータ依存を回避. 定計算は逐次(スレッドごとに逐次)で行う.また,対象. するため,8 色に色分けする.. 格子番号 i の接触判定を行うとき,格子番号(i-1)は格子番 号(i-2)とも接触判定を行うため,接触相手の情報を更新す. 図 6 の 8 色の色分けを行い,接触判定計算の方法を 3 次 元に拡張する.図 7 に処理の流れを示す.. る際,格子番号(i-1)内に存在する粒子はバッティングを起 開始. こし,正しい結果が得られない可能性がある.しかしなが ら,冗長計算をする場合を除いては、接触計算が 2 重に行 格子番号が. われることを防ぐため,通常,格子番号(i-1)の格子は接触. 番の接触判定計算. 判定時に参照しないという条件を課すようになっている. したがって,このようなバッティングが起きることもない.. 格子番号が. 番の接触判定計算. 格子番号が. 番の接触判定計算. 図 5 の例では,並列実行が可能である格子番号が奇数番 の接触判定格子 i (i=1, 3, 5, 7, 9,…)の接触判定計算を,まず 並列に行う.その後,格子番号が偶数番の接触判定格子 j (j=2, 4, 6, 8)の接触判定計算を並列に行う.以上の 2 工程を 格子番号が. 交互に繰り返し行う.このように演算するのが,マルチカ. 番の接触判定計算. ラー接触判定法である. マルチカラー接触判定法の適用の前提は,接触格子の格. 格子番号が. 番の接触判定計算. 子幅を粒子直径,あるいはそれ以上に取ることである.そ うすることで,同じ色の格子内にある粒子同士は接触する ことがない.そのためマルチカラー接触判定法では,自分. 格子番号が. 番の接触判定計算. 格子番号が. 番の接触判定計算. と相手の接触力を更新する際に,原理上,競合が起きない. その結果,並列化をしても複数のスレッド間でデータの競 合が起きない. なお,マルチカラー接触判定法では,逐次の接触判定計. 格子番号が. 番の接触判定計算. 算とは加減算の順序が異なる.ただし,数学上における演. ( は 0 以上の整数). 算結果の一致は保証される.. 5 5 1 5 1. 7 8 5 7 8 7 86 5 6 6 57 8 68 6 5 6 8 4 6 6 2 4 8 2 1 6 2 2 8 4 6 5 6 6 2 4 2 1 2 2. 終了 図 7. 3 次元でのマルチカラー接触判定法を用いた 接触判定計算の順序. 3.3. OpenMP の実装. ところで,マルチカラー接触判定法に限らず,従来手法 にお い ても , 格子 番 号を そ のま ま ルー プ にし て 回し て OpenMP 並列化すると,粒子が存在しない接触判定格子を 割り当てられるスレッドがあるため,負荷不均衡が生じる. そのため,この実装では,OpenMP での実行性能が出ない. 以下にその例を示す。 !$omp parallel do do i=1, MAX_NUM_GRIDS 格子番号 i における接触判定計算 enddo. 図 6. 3 次元のマルチカラー接触判定格子例. ⓒ 2014 Information Processing Society of Japan. !$omp end parallel do. 5.

(6) Vol.2014-HPC-146 No.19 2014/10/3. 情報処理学会研究報告 IPSJ SIG Technical Report なお,MAX_NUM_GRIDS とは,接触判定格子の番号のう. 3.4 MPI の実装. ち,もっとも大きな格子番号である.. MPI 並列化を行うに当たり,以下の2つの方針がある.. そこで本研究においては,接触判定計算に入る前に,粒. 1.. 通信回数を最少にする方法 衝突判定格子の構造を元に,各 MPI プロセスに割. 子が存在しない接触判定格子の番号を取り除き,接触判定. り当てる.. 計算用のループの回転数を変更する. いま,MAX_NONZERO_NUM_GRIDS を,粒子が存在す. 例えば,3 次元の衝突判定格子があるとき,X 軸方. る接触判定格子の数とする.また,CDG(j)を,ループ変数. 向を分割した立方体を各 MPI プロセスに割り当てる. j における,対応する元の接触判定格子番号を収納した配. ことを考える.このとき,通信は 2 つの隣接プロセス. 列とする.この時,以下の OpenMP 並列化を実装する.. しか生じない.そのため,最大で各 MPI プロセス当 たり 2 回の通信になる.. !$omp parallel do private(i). 欠点は,各 MPI プロセスに割り当てた衝突判定格. do j=1, MAX_NONZERO_NUM_GRIDS. 子内に粒子が偏在するとき,MPI 並列での負荷バラン. i = CDG( j ) 格子番号 i における接触判定計算 enddo !$omp end parallel do. スが悪くなり,並列性能が劣化することである. 2.. 負荷バランスを最少にする方法 衝突判定格子の内部にある粒子数を考慮して,各 MPI プロセスに割り当てられる粒子数が均等になる ように,各 MPI プロセスに担当となる衝突判定格子. 以上の実装により,ループ j を OpenMP 並列化する際に は,対応する接触判定格子には必ず粒子が存在するため,. を割り当てる.この方法では,MPI 並列での負荷バラ ンスが悪くなり,並列性能が劣化することがない.. スレッド間で負荷の不均衡が生じない.またすでに説明し. しかし通信の観点では,通信回数が最少で 2 回であ. たが,メモリ量が許す範囲において,粒子直径と接触判定. り,最大の通信回数は保証できない.また,粒子は頻. 格子間隔を等しく設定することにより,接触判定格子内の. 繁に移動するため,割り当てた衝突判定格子を再度割. 粒子の個数は高々数個となるため,粒子が密集した場合に. り当て直さないと,負荷バランスの劣化を修正できな. おいても,負荷の不均衡が生じない. またこの実装は,マルチカラー接触判定法に限らず,排 他制御法,冗長計算法にも適用できる. マルチカラー接触判定法では,接触判定格子の色ごとに, 接触判定格子を再構築することで,簡単に実装ができる. 以下にその例(3 次元の場合)を示す.. い.そのため,通信量も増加する. 本稿では,ハイブリッド MPI/OpenMP 並列化時において 理想的なデータ分散を行った場合に,演算部分のみの評価 を行い,有効性を示すことを目的とする.したがって,上 記 2 の負荷バランスを最少にする方法の実装を想定する. 具体的には,従来手法においては,粒子が入っている衝 突判定格子を列挙した上で,粒子が入っている衝突判定格. do icolor=0, 7. 子を均等になるように各 MPI プロセスに割り振る.そのた. !$omp parallel do private(i). め,通信処理を実装すると通信回数は隣接プロセスの数だ. do j=1, MAX_NONZERO_NUM_GRIDS(icolor). けにはならない.また,マルチカラー接触判定法において. i = CDG( j, icolor ). は,マルチカラーの色ごとの格子に対して同様のことを行. 格子番号 i における接触判定計算. うため,より通信が複雑になる.. enddo !$omp end parallel do. 以上から,通信実装の最適化で通信時間を改善できる余 地が大きいため,本稿では通信時間を評価対象にしない.. enddo ここで,MAX_NONZERO_NUM_GRIDS(icolor)は,接触 判定格子の色 icolor におけるマルチカラー接触判定格子の うち,粒子が空でない格子の数である.また,CDG( j, icolor ) を,マルチカラー接触判定格子の色 icolor における,ルー プ変数 j における,対応する元の接触判定格子番号を収納 した配列とする.以上より,マルチカラー接触判定法にお いても,スレッド実行時の負荷バランスの劣化が生じない.. ⓒ 2014 Information Processing Society of Japan. 6.

(7) Vol.2014-HPC-146 No.19 2014/10/3. 情報処理学会研究報告 IPSJ SIG Technical Report. 4. 性能評価. マルチカラー接触判定格子を用いて並列化するプログラム を method5 とする.. 4.1 計算環境・初期設定 本性能評価では,東京大学に 2012 年に導入された FX10 スーパーコンピュータシステム(富士通 PRIMEHPC FX10, 以降 FX10 と呼ぶ)の 12 ノードを用いて行った.1 ノード 内のコア数は 16 であるため,OpenMP による並列化は最 大の 16 スレッドまで行った.また,12 ノードを用いたの で,MPI による並列化は,192 プロセスまで行い,OpenMP と MPI の各組み合わせでのデータを取得した. 表 1. FX10 構成 項目. 仕様. 理論演算性能 ノード. プロセッサ. 236.5GFlops. プロセッサ数. 16. (コア数) 主記憶容量. 32GB. プロセッサ名. SPARC64 IX-fx. 周波数. 1.848GHz. 理論演算性能. 14.78GFlops. (コア) OS. 4.2. 台数効果について. FX10 の 12 ノードを占有し,OpenMP では 1~16 スレッ ド、MPI では 1~192 プロセスで並列実行したときの計算時 間と台数効果について性能を評価する.ここで台数効果と は,並列処理の効果を示す一般的な指標である.式(1) の ように「1 ノードのピュア MPI 実行時計算時間」に対する 「並列実行における実行時間」の比で表される.. S=. 1ノードのピュアMPI 実行時計算時間 (1) 並列計算に要する計算 時間. なお,式(1)における計算時間とは,接触判定計算に 要する計算時間 Tc と粒子の接触力計算時間 Tf を合計し た総計算時間 TALL の事を指す. 4.3 接触判定計算の性能評価 4.3.1 計測時間の比較 各実装方式において,逐次計算と並列計算(1~12 ノード,. Red Hat Enterprise. 1~192 プロセス,1~16 スレッドの各組み合わせ)での計算. Linux Server 6.1. 時間の比較を行う.ここで計算時間とは,5 ステップ目以. Fujitsu Fortran. 降の計算時間を測定し,その値を平均したものである.計. コンパイラ. Compiler. ソフトウェア. 算時間の結果を,以下の表 3,図 8,9,10 に示す.. -Kfast,openmp -x コンパイラ. fptclcont_1_3 -x. オプション. fptclcont_2_4 -x fptclcont_5. 今回 の 性能 評 価で は ,粒 子 直径 は 0.0032 ,粒 子 数は 15,258,790,ステップ数は 20 に設定した.また判定時に各 粒子は接触数の情報を更新するが,3 次元の接触判定格子 を利用するため,1 粒子あたりの接触数情報の上限は 12 と する. 提案手法の有効性を見るために,表 2 のように 3 つのプ ログラムを用意した. 表 2. Method による実装方式の違い Method. 実装方式. Method 3. 接触判定格子並列. Method 4. 接触判定格子並列(冗長計算). Method 5. マルチカラー接触判定格子並列. ここで,接触判定格子番号で最外ループを回し,その最 外ループを並列化する方法を接触判定格子並列と呼ぶ. 接触判定格子並列化時のデータの競合を防ぐために critical 文を入れたプログラムを method3 とする.接触判定 格子並列において,相手の情報書き込まず,計算量が 2 倍 になるプログラムを method4 とする.以上の method3~ method4 は従来法である.最後に,今回の提案手法である. ⓒ 2014 Information Processing Society of Japan. 7.

(8) Vol.2014-HPC-146 No.19 2014/10/3. 情報処理学会研究報告 IPSJ SIG Technical Report. 排他制御. 冗長計算 P1T16. P2T8 1node. 1node. P1T16 P4T4 P8T2 P16T1. 2node. 2node. P8T4 P16T2. 4node. 4node. P8T4 P16T2 P4T16. P8T8 P16T4 P32T2 P64T1. P8T8 P16T4 P32T2 P64T1. P6T16. P6T16. P12T8 6node. 6node. P4T8. P32T1. P4T16. P24T4 P48T2 P96T1. P12T8 P24T4 P48T2 P96T1. P8T16. P8T16. P16T8 8node. 8node. P8T2 P2T16. P4T8. P32T1. P32T4 P64T2 P128T1. P16T8 P32T4 P64T2 P128T1. P10T16. P10T16 10node. P20T8 P40T4 P80T2. P20T8 P40T4 P80T2. P160T1. P160T1. P12T16. P12T16. P24T8. P24T8. 12node. 10node. P4T4 P16T1. P2T16. 12node. P2T8. P48T4 P96T2 P192T1. P48T4 P96T2 P192T1. 0. 5. 10. 15. 20. 25. 時間[s]. 図 8 排他制御における接触力判定計算時間 [秒]. ⓒ 2014 Information Processing Society of Japan. 0. 0.5. 1. 1.5. 2. 時間[s]. 図 9 冗長計算における接触力判定計算時間 [秒]. 8.

(9) Vol.2014-HPC-146 No.19 2014/10/3. 情報処理学会研究報告 IPSJ SIG Technical Report. 表 3. 各実装方式の実行時間[秒]. マルチカラー P2T8 P4T4 P8T2. 12node. 1node. P1T16. P16T1 P4T8 P8T4 P16T2. 10node. 2node. P2T16. P32T1 P8T8 P16T4. 8node. 4node. P4T16. P32T2 P64T1 P12T8 P24T4. 6node. 6node. P6T16. P48T2 P96T1 P16T8. 4node. 8node. P8T16 P32T4 P64T2 P128T1 P20T8. 2node. 10node. P10T16 P40T4 P80T2 P160T1. 1node. 12node. P12T16 P24T8 P48T4 P96T2 P192T1. MPIprocess × OMPthread. 排他 制御. 冗長 計算. マルチ カラー. P192T1 P96T2 P48T4 P24T8 P12T16 P160T1 P80T2 P40T4 P20T8 P10T16 P128T1 P64T2 P32T4 P16T8 P8T16 P96T1 P48T2 P24T4 P12T8 P6T16 P64T1 P32T2 P16T4 P8T8 P4T16 P32T1 P16T2 P8T4 P4T8 P2T16 P16T1 P8T2 P4T4 P2T8 P1T16. 0.080 0.118 0.176 0.476 1.740 0.096 0.140 0.211 0.575 2.096 0.120 0.175 0.264 0.717 2.627 0.155 0.228 0.351 0.952 3.491 0.227 0.334 0.523 1.424 5.259 0.447 0.661 1.037 2.844 10.521 0.893 1.318 2.076 5.711 21.003. 0.056 0.068 0.077 0.110 0.160 0.070 0.079 0.090 0.131 0.191 0.091 0.097 0.112 0.162 0.237 0.123 0.129 0.148 0.215 0.315 0.184 0.196 0.222 0.324 0.473 0.374 0.396 0.447 0.649 0.946 0.760 0.792 0.904 1.299 1.895. 0.049 0.049 0.052 0.071 0.103 0.061 0.060 0.065 0.085 0.123 0.073 0.075 0.081 0.107 0.153 0.098 0.098 0.106 0.141 0.201 0.144 0.146 0.157 0.209 0.298 0.278 0.283 0.306 0.412 0.589 0.556 0.563 0.610 0.826 1.174. 表 3 より,提案するマルチカラーが,すべての実行形態. 0. 0.5. 1. 1.5. 2. 時間[s]. 図 10 マルチカラーにおける接触力判定計算時間 [秒]. ⓒ 2014 Information Processing Society of Japan. において高速であることがわかる.また,すべての実装方 式において,P192T1 の【ピュア MPI】実行が,ハイブリッ ド MPI/OpenMP 実行よりも高速である.スレッド数が増え るにつれ,排他制御は,性能が劣化(実行時間が増加)し ていくことがわかる.. 9.

(10) Vol.2014-HPC-146 No.19 2014/10/3. 情報処理学会研究報告 IPSJ SIG Technical Report. マルチカラー. 4.3.2 台数効果の比較. P192T1. マルチ カラー. P80T2. 冗長 計算. P128T1. 排他 制御. P96T1. MPIprocess × OMPthread. P64T1. 表 4. 台数効果. 12 10 8 6 4 2 0 P32T1. 以下の表 4,図 11,12,13 に示す.1ノードのピュア MPI の実行時間を基準とする .. 台数効果. MPI/OpenMP での組み合わせの時間に対する,台数効果を. P16T1. 各実装方式において,各ノードの最高速のハイブリッド. 1node 2node 4node 6node 8node 10node12node. 1node 2node 4node 6node 8node. P16T1 P32T1 P64T1 P96T1 P128T1 P160T1 P80T2 P192T1. 10node 12node. 1.00 1.00 2.00 2.03 3.93 4.13 5.76 6.18 7.44 8.35 9.30 10.86. 1.00 2.00 3.86 5.67 7.62. 図 13. マルチカラーにおける台数効果. 表 4 より,排他制御では,高スレッド実行での性能劣化 の発生を確認できた.すべてのノード実行時で、16 スレッ ド実行が最も悪く,排他制御にかかるコストの高さが原因 であると考えられる.また,最高速なハイブリッド. 9.27 11.35. 11.16 13.57. MPI/OpenMP 実行の形態での 1 ノードでの実行に対する 12 ノードでの台数効果は,排他制御,冗長計算,マルチカラ ーで,それぞれ 11.2 倍,13.6 倍,11.4 倍であることがわ かる.提案法は最高速であるが,台数効果も良好である.. P192T1. P160T1. P128T1. P96T1. P64T1. P32T1. 12 10 8 6 4 2 0 P16T1. 台数効果. 排他制御. 1node 2node 4node 6node 8node 10node12node. 図 11. 排他制御における台数効果. P192T1. P160T1. P128T1. P96T1. P64T1. P32T1. 12 10 8 6 4 2 0 P16T1. 台数効果. 冗長計算. 1node 2node 4node 6node 8node 10node12node. 図 12. 冗長計算における台数効果. ⓒ 2014 Information Processing Society of Japan. 10.

(11) Vol.2014-HPC-146 No.19 2014/10/3. 情報処理学会研究報告 IPSJ SIG Technical Report. 表 6 プロファイルデータ(マルチカラー) 浮動小数点 L1D ミス ロード メモリスル dm 率 キャッシュアクセス ープット (/L1D ミス数) 待ち (GB/sec). 4.3.3 FX10 を用いたプロファイル FX10 を用いて冗長計算とマルチカラーの,1 プロセス 16 スレッド実行時(P1T16)のプロファイルを取得した. 表 5 に,冗長計算でのメモリスループット,L1D ミス dm 率,および浮動小数点ロードキャッシュアクセス待ちの内 訳を示す.表 6 に,マルチカラーでのメモリスループット, L1D ミス dm 率,および浮動小数点ロードキャッシュアク セス待ちの内訳を示す.. 表 5 プロファイルデータ(冗長計算) 浮動小数点 L1D ミス ロード メモリスル dm 率 キャッシュアクセス ープット (/L1D ミス数) 待ち (GB/sec) Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15. Process. Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15. 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.33 0.34 0.33 0.34 0.34 0.33 0.33 0.33. 68.42% 68.45% 68.53% 67.72% 66.84% 66.86% 66.82% 66.80% 66.71% 66.76% 66.77% 66.75% 66.88% 66.84% 66.82% 66.83%. 4.58% 4.57% 4.44% 4.15% 5.13% 5.13% 5.17% 5.17% 5.23% 5.24% 5.23% 5.23% 5.08% 5.08% 5.07% 4.89%. 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07. 80.22% 80.23% 80.35% 80.83% 79.36% 79.33% 79.34% 79.33% 79.22% 79.26% 79.22% 79.22% 79.37% 79.37% 79.38% 79.30%. 5.78% 5.84% 5.38% 5.84% 12.12% 12.08% 12.12% 12.12% Process 5.36 67.19% 4.96% 11.90% 表 5,6 より,マルチカラーは冗長計算に比べて,メモリ 11.93% スループットが大きい.また,浮動小数点ロードキャッシ 11.95% ュアクセス待ち,および,L1D ミス dm 率も低い.したがっ 11.92% て,マルチカラーは冗長計算と比べて,良い性能が出てい 11.76% ることが確認できた. 11.75% 11.67% 11.44% 5. まとめ. 1.07. 79.60%. 10.35%. 本研究は,マルチカラー接触判定法をハイブリッド MPI/OpenMP 化し,従来法に対する性能評価を行った. 我々の先行研究[4]では格子並列を採用しているが,計算 の効率化のために,粒子番号のリナンバリングを行ってい る.また,我々の先行研究[1]では,このリナンバリングに 加え,格子のアクセスの仕方を工夫することで,スレッド 並列化時にデータ競合が起こらないようにしている.その ため,ハイブリッド MPI/OpenMP 実装を実現することで, より高い並列化効率が期待できる. 今回の性能評価では,マルチカラー接触判定法はすべて の結果で他の手法よりも計算時間が短く,優れていた。 また,性能プロファイラの結果より,マルチカラー接触 判定法は,メモリスループットや浮動小数点ロードキャッ シュアクセス待ち時間,L1D ミス dm 率の結果が良く,従 来法より有効であることが確認できた.しかし,L1D ミス dm 率について,マルチカラー接触判定法で,先行研究[1]. ⓒ 2014 Information Processing Society of Japan. 11.

(12) 情報処理学会研究報告 IPSJ SIG Technical Report. Vol.2014-HPC-146 No.19 2014/10/3. より改善されているものの 67%と高く,改善するための方 法の提案も今後の課題である. 今後の展望として,L1D ミス dm 率の改善,および,通 信処理を最適化したうえで,全体時間の観点から提案手法 を評価することがあげられる.. 6. 謝辞 本研究の一部は,学際大規模情報基盤共同利用・共同研 究拠点,および,革新的ハイパフォーマンス・コンピュー ティング・インフラの支援による.. 7. 参考文献 1) 加藤淳也,河村祥太,竹田宏,片桐孝洋,堀端康善:マルチカ ラー接触判定格子を用いた粒子接触判定計算の OpenMP によ る並列化,情報処理学会研究報告 2013-HPC-142,第 199 回 ARC・第 142 回 HPC 合同研究発表会 (2013) 2) 片桐孝洋,竹田宏,河村祥太,加藤淳也,堀端康善:DEM にお けるマルチカラー接触判定法の適用とマルチコア計算機に よる性能評価,粉体工学会誌,第 51 巻 8 号,pp.564-570 (2014) 3) Yusuke Shigeto, Mikio Sakai : Parallel Computing in Computational Granular Dynamics by Using Multi-Core Processors -Practical Usage of the DEM in Complicated Powder Systems in Industries-, J. Soc. Powder Technol, Japan, 47, pp.707-716 (2010) 4) 和田直樹, 高木翔, 岡大樹, 竹田宏, 片桐孝洋, 堀端康善: 粒子 接触判定計算の OpenMP による最適化,情報処理学会研究報 告,Vol.2012-HPC-136, No.3(2012) 5) 高木翔,和田直樹, 岡大樹, 竹田宏, 片桐孝洋, 堀端康善: 粒子分 布を考慮した粒子接触判定計算の MPI および OpenMP による 並列化,vol.2012-HPC-137-34(2012) 6). Sakaguchi, H. and Nishiura, D.: “Development of Hyper Intelligent Discrete Element Method (HiDEM) and its Application for Science and Industry”, JAMSTEC-R IFREE Special Issue, 201-210 (2009). 7) 酒井幹夫編著:粉体の数値シミュレーション,丸善出版 (2012). ⓒ 2014 Information Processing Society of Japan. 12.

(13)

表 3 より,提案するマルチカラーが,すべての実行形態 において高速であることがわかる.また,すべての実装方 式において,P192T1 の【ピュア MPI】実行が,ハイブリッ ド MPI/OpenMP 実行よりも高速である.スレッド数が増え るにつれ,排他制御は,性能が劣化(実行時間が増加)し ていくことがわかる.  表 3

参照

関連したドキュメント

ところで、ドイツでは、目的が明確に定められている制度的場面において、接触の開始

血は約60cmの落差により貯血槽に吸引される.数

本節では本研究で実際にスレッドのトレースを行うた めに用いた Linux ftrace 及び ftrace を利用する Android Systrace について説明する.. 2.1

0.1uF のポリプロピレン・コンデンサと 10uF を並列に配置した 100M

[r]

12―1 法第 12 条において準用する定率法第 20 条の 3 及び令第 37 条において 準用する定率法施行令第 61 条の 2 の規定の適用については、定率法基本通達 20 の 3―1、20 の 3―2

サンプル 入力列 A、B、C、D のいずれかに指定した値「東京」が含まれている場合、「含む判定」フラグに True を

少子化と独立行政法人化という二つのうね りが,今,大学に大きな変革を迫ってきてい