田渕 晶大 富士通研究所 研究員 |
[背景]演算加速機構を持つ並列システムの普及
[問題]プログラミングの生産性
[貢献]生産性と性能を両立したプログラミング環境の提案
[問題]プログラミングの生産性
[貢献]生産性と性能を両立したプログラミング環境の提案
高性能計算の分野では,性能と消費電力あたりの性能を向上させるために演算加速機構(アクセラレータ)を搭載した並列システムが増加している.アクセラレータは多数の演算器と高バンド幅のメモリにより高性能で省電力であるが,並列処理やホストメモリと独立したアクセラレータメモリの利用が必要なためプログラミングする際の生産性が低く,アクセラレータごとに記述が異なるため他のアクセラレータを利用するには大幅にコードの書き換えが必要となることから可搬性が低いという問題がある.そこで指示文を用いて簡易で可搬性の高い記述ができる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言語によって生産性と性能を両立しつつ多様なアクセラレータを持つ並列システムを活用できることを示した.
本研究では,アクセラレータを搭載した並列システム向けのプログラミングを簡易にして生産性を向上するとともに高性能を達成することを目的とし,理研と共同で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日受付)