研究課題/領域番号 |
17H01749
|
研究機関 | 東京大学 |
研究代表者 |
伊田 明弘 東京大学, 情報基盤センター, 特任准教授 (80742121)
|
研究分担者 |
横田 理央 東京工業大学, 学術国際情報センター, 准教授 (20760573)
岩下 武史 北海道大学, 情報基盤センター, 教授 (30324685)
大島 聡史 九州大学, 情報基盤研究開発センター, 助教 (40570081)
平石 拓 京都大学, 学術情報メディアセンター, 助教 (60528222)
|
研究期間 (年度) |
2017-04-01 – 2020-03-31
|
キーワード | 近似計算 / 低ランク / H行列 / ライブラリ / アルゴリズム / 並列計算 / 高性能計算 / ハイパフォーマンスコンピューティング |
研究実績の概要 |
H行列法ライブラリHACApKの高機能化を目的とし、次の5項目について研究を行った。 (1) 本研究で提案した格子H行列の行列分解に取り組み、近似LU分解および近似QR分解を行う計算手法を開発した。格子H行列の特殊な場合であるBLR行列について、これらの分解手法を実装し、数値実験を行った。近似精度および計算コストについて調査し、開発手法の有効性を確かめた。(2)HACApKで扱う任意のカーネルに対応できように、FMMを拡張した。また、境界要素法のコードからこのFMMを呼び出すことにも成功した。(3)GPUを用いたH行列計算法コードの開発を実施した。特にGPUを用いたH行列ベクトル積に注目し、従来より高速な実装の実現に向けたコード開発に取り組んだ。さらに、複数GPU環境における格子H行列に対するLU分解についての研究を実施した。分散環境におけるLU分解は行列ベクトル積と比べて通信パターンが複雑なため実装や最適化の難易度が高く、大変挑戦的な研究である。(4)H行列ベクトル積の高速化について取り組んだ。スレッド並列処理における負荷均衡戦略として,スレッド間にまたがる少数の部分行列を分割することで,ほぼ完全な負荷均衡化を図ることができることを示し、HACApKライブラリに含まれる従来実装の性能改善が可能なことを示した。また、H行列内の部分行列の一部を単精度化する新たな手法を考案し、計算の高速化、精度の悪化の程度について、実験的な調査を行った。(5)H行列の分割構造生成処理について、動的負荷分散を用いた高速化に取り組んだ。特に、並列実装の性能改善に注力した。分割構造を表現する木の生成において、ノード間だけでなくノード内の並列化を組み合わせ、さらにタスクの最小粒度等の性能パラメータのチューニングを施すことにより、良好な並列性能を得ることができた。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
下記の通り、5つの研究項目ごとに達成度は異なるが、総じて概ね順調である。 (1)格子H行列について、近似分解計算手法を構築した。格子H行列の特殊な場合であるBLR行列について逐次コードを実装し、数値実験を通じて有効性を確かめた。格子H行列は分散メモリ計算システム向けに開発した低ランク近似手法であり、大規模計算に向けた基礎を築けた。(2)FMMコードをHACApKで扱うGreen関数に拡張し、それを実際の境界要素法のアプリケーションから呼び出すことにより、実アプリケーションコードを高速化することに成功した。従来のFMMで用いられてきた空間充填曲線を用いた負荷分散では境界要素法のような低次元の超平面において最適な空間分割が得られない問題があったが、これを直交再帰二分割法を用いて解決し、電磁界解析の実アプリケーションで高い分散並列化効率を実現した。(3)GPUを用いたH行列計算法のさらなる性能向上のためには、大量の小さな部分行列を効率よく計算することが重要であることを明らかにした。また、複数GPU環境における格子H行列に対するLU分解の実装を行った。高速な実装を実現するとともに、通信時間の削減や負荷の均等化の難しさも明らかにした。(4)H行列・ベクトル積計算のスレッド並列処理の負荷均衡については、アルゴリズム上はほぼ最適な手法を考案することができた。低精度演算を導入することによる行列・ベクトル積の高速化については、すでに一部のアプリケーション上で有用な結果を得ている。(5)H行列の分割構造生成処理については、分散メモリ環境対応の実装までは至らなかったものの、共有メモリ環境における木の構築処理については、ほぼ期待通りの性能が得られた。
|
今後の研究の推進方策 |
5つの研究項目ごとの推進方策は次の通りである。 (1)分散メモリ計算システム上で、格子H行列に対して近似分解を行うための研究を推進する。まずは現状のBLR行列分解の共有メモリ並列化アルゴリズムを開発し、その後、分散メモリ並列化アルゴリズムの開発を行う。分散メモリシステムを用い、大規模行列について計算精度および計算コストを調べる。ここまでの検証をBLR行列で行い、問題点を全て解決してから格子H行列に移行する。(2)これまでに開発したFMMコードとは別に、多重極展開・局所展開の変換行列を保存し、インタラクションの対称性を利用してGEMMに落とし込む手法を採用したFMMコードを開発中である。これらのFMMコードの統合とHACApKとの融合が今後の課題である。(3)GPUを用いた高速なH行列計算法・格子H行列計算法の実装を継続して行う。行列・ベクトル積や行列分解の計算性能を観測し、行列生成時のパラメタ最適化を行う手法を検討していく。(4)H行列に低精度演算を取り入れる方式による性能改善は、現在の所、その有効性が明らかとなりつつあるので、引き続き研究を推進する。具体的にはアプリケーションにおける性能評価を行い、その報告を行うと共に、アルゴリズムの改良についても検討する。(5)H行列の分割構造生成処理を分散メモリ環境で行う実装に本格的に取り組む。共有メモリ環境向け実装についても、参照局所性の向上等によるさらなる性能改善の余地があるため、改良を続けていく。さらに、格子H行列を対象とした分割構造生成についても並列化を行う。
|