演算加速機構を持つ並列システム向けPGAS言語コンパイラの研究

 
田渕 晶大
富士通研究所 研究員

[背景]演算加速機構を持つ並列システムの普及
[問題]プログラミングの生産性
[貢献]生産性と性能を両立したプログラミング環境の提案


 高性能計算の分野では,性能と消費電力あたりの性能を向上させるために演算加速機構(アクセラレータ)を搭載した並列システムが増加している.アクセラレータは多数の演算器と高バンド幅のメモリにより高性能で省電力であるが,並列処理やホストメモリと独立したアクセラレータメモリの利用が必要なためプログラミングする際の生産性が低く,アクセラレータごとに記述が異なるため他のアクセラレータを利用するには大幅にコードの書き換えが必要となることから可搬性が低いという問題がある.そこで指示文を用いて簡易で可搬性の高い記述ができるOpenACCが注目されている.他方で並列システムの分散メモリプログラミングもデータや処理の分散とMPIによる通信や同期を記述しなければならないため,生産性が低い.そこで分散メモリ環境で仮想的な大域名前空間を提供するPGASモデルが提案されている.筑波大と理研で開発しているXcalableMP(XMP)もPGAS言語であり,指示文やcoarrayを用いて簡易に記述が可能である.coarrayは配列添字に加えてノード番号を指定することが可能な配列で,他のノードのcoarrayに対する読み書きにより通信ができる.これらOpenACCとXMPの組合せによりアクセラレータを搭載した並列システム向けにプログラミングが可能ではあるが,アクセラレータ間の通信で問題がある.通信を直接記述する方法がないためホストを経由しなければならず,記述量の増加やアクセラレータ間の通信機能が使えないことによる性能の低下が起こる.

 本研究では,アクセラレータを搭載した並列システム向けのプログラミングを簡易にして生産性を向上するとともに高性能を達成することを目的とし,理研と共同でOpenACCとXMPを統合したPGAS言語XcalableACC(XACC)を提案する.XACCはXMPとOpenACCの記述に加えてアクセラレータ間の通信を記述できるように指示文を拡張している.XACCの評価のため,NVIDIA GPUとPEZY Computingが開発したアクセラレータであるPEZY-SCを対象としてコンパイラを開発する.まずGPUとPEZY-SC向けのOpenACCコンパイラを設計・実装した.GPUに対応した商用コンパイラが存在していたが当初は十分に最適化されておらず,PEZY-SCに対応したコンパイラは存在しなかったからである.最適化や指示文の拡張を行うことにより,GPUでは既存のOpenACCコンパイラよりも高い性能を,PEZY-SCでは従来の記述とほぼ同等の性能を達成した.

 次にXACCのコンパイラを設計しGPUとPEZY-SCクラスタ向けに主にアクセラレータ間通信を実装した.XACCは指示文を用いる記述では逐次コードベースで簡易に記述でき,領域分割データの境界部分に追加した袖領域を隣接ノード間で更新する袖交換のような典型的な通信のプログラムでは従来の記述と同等の性能が得られた.coarrayを用いて通信を行う記述ではデータと処理分散をユーザが直接記述しなければならないが通信をcoarrayで直感的かつ柔軟に記述でき,複雑な通信を必要とするプログラムにおいても従来の記述と同等の性能を達成した.加えて,GPUクラスタとPEZY-SCクラスタ向けにほぼ同一のXACCコードで記述できたことから可搬性の高さも示した.本研究は提案するPGAS言語によって生産性と性能を両立しつつ多様なアクセラレータを持つ並列システムを活用できることを示した.

 
 
 (2018年5月30日受付)
取得年月日:2018年3月
学位種別:博士(工学)
大学:筑波大学



推薦文
:(ハイパフォーマンスコンピューティング研究会)


本博士論文は,GPUやPEZY-SCなどの演算加速機構を持つ並列システムのためのプログラミング言語,およびその処理系の開発の成果をまとめたものである.開発したプログラミング言語は,システムの性能を十分に引き出すことが可能であり,またコードの生産性がきわめて高いという特徴がある.論文速報に掲載する価値があると認める.


研究生活


研究を進める上でご指導くださいました佐藤三久先生と朴泰祐先生,XACCの仕様・実装でお世話になりました理研の皆様,その他関係した多くの方にこの場を借りて心から感謝申し上げます.GPUやプログラミング言語に興味を持って研究室に入り,一貫して簡易にアクセラレータを使うためのプログラミングの研究を行えたことに大きな意義があると感じております.研究室での経験を糧に,今後のHPCの発展に寄与できるよう尽力してまいります.