研究課題/領域番号 |
17K12694
|
研究機関 | 国立研究開発法人理化学研究所 |
研究代表者 |
Lee Jinpil 国立研究開発法人理化学研究所, 計算科学研究機構, 特別研究員 (30764873)
|
研究期間 (年度) |
2017-04-01 – 2020-03-31
|
キーワード | SIMD並列化 / OpenMP / 並列化コンパイラ |
研究実績の概要 |
本研究の目的はハードウェアのベクトル幅にかかわらずSIMD並列化を行うための中間言語の開発とOpenMPをベースにするプログラミングモデルの提案および処理系の実装である。本年度の研究ではオープンソースコンパイラLLVMをベースにC言語のループ文をデータストリームとしてあらわす中間形式の設計と処理系の開発を行った。対象とするARM SVE命令セットを用いるSIMDプログラミングでは固定ベクトル長を想定しないため、一次元の入力データをwhile文にとる繰り返しによって繰り返して処理する。 本研究で開発したフレームワークはループ文のイテレーション空間やデータの参照パターンを解析し、連続かつ要素毎に独立したアクセスが行われるようにループ変形を行う。この時に参照されるデータは一次元のストリームとして表現されるため、ARM SVEによるSIMD並列化が可能である。本年度はこのフレームワークをプログラミング可能なハードウェアであるFPGAにマッピングする処理系の実装を行った。FPGAの性能向上においてもSIMDベクトル化によるメモリバンド幅の利用効率の改善が性能向上のために重要である。また、既存のCPUのような固有のベクトル幅を持たず、メモリバンド幅が許す限り大きなベクトル幅を実現することが可能である。C言語から独自のデータストリームの中間形式に変換し、FPGA向けハードウェア記述言語に変換を行う処理系を開発した。 また、OpenMPプログラミングの中で明示的なSIMD実装を与える拡張構文の提案を行った。ARM SVEに限らず、CPUのIntrinsic関数で記述されたSIMD実装をOpenMPのSIMDループ文で明示的に呼び出すためのインターフェイスを提案し、コード変換のメカニズムの設計を行った。ARM SVEのシミュレーターによる性能評価を行った。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
本年度の主な計画はベクトル幅を限定しない中間言語の設計と実装である。ループ文とその中のデータ参照をデータストリームとしてあらわす中間形式を設計し、実装を行うことで予定していた計画を達成することができた。開発を行ったフレームワークではループ文の変形によってSIMD命令が生成可能なデータストリームを生成している。これを従来のLLVMのOpenMP実装で使うことで現在のOpenMP実装を大きく変えず、プロトタイプを実現することが可能である。しかし、現在のプロトタイプはループ文のstrideが1であるなど、いくつかの制限があり、研究計画で書いた通り簡単なループ文のみを対象にしている。 本年度の研究成果はOpenMPの言語仕様や処理系の実装に関する国際学会であるIWOMPに論文発表を行うことで報告している。また、HPC研究会にも研究報告を行った。研究計画で想定していたARMアーキテクチャ以外に最近HPCの分野で注目を集めているFPGAにも適用できることがわかり、その応用を報告している。HPC研究会の結果を元に論文を執筆し、FPGAやアクセラレータに関する国際学会であるHEARTに投稿し、採択された(来年度発表・出版予定)。 ARM SVEの性能評価においてシミュレーターを用いているが、これはまだSVE命令セットをサポートするハードウェアが存在しないためである。そのため、FLOPSや時間などの性能指標を用いず、発行命令数による疑似的な性能評価を行った。ハードウェアの実装はベンダーに依存する部分であるため、SVEをサポートするハードウェアが利用可能になるまで同様の評価を行う。
|
今後の研究の推進方策 |
来年度も計画通りに研究を続ける。平成30年度の主な研究計画はOpenMP 4.5仕様に相当するSIMD指示文の実装である。本年度で開発を行った処理系の適用範囲を拡大し、分岐や1以外のstrideを持つループ文からARM SVEやFPGAハードウェアを生成する変換メカニズムや処理系の開発を行う。 OpenMPの処理系の実装においてはIWOMPで提案を行ったSIMD関数呼び出しの実装を行う。論文では言語仕様の定義とコード変換アルゴリズムについて設計を行っており、処理系の実装には至っていない。LLVM処理系をベースにARM SVEのintrinsic関数をOpenMP SIMD指示文で明示的に用いるコード変換を行うように処理系を実装する。 ARM SVEはビットマスクによる選択的な実行をベクトル要素毎に制御することができる。このような機能を利用することでループ文の中に分岐が存在してもベクトル化を行うことが可能である。来年度の研究では中間形式を用いたベクトル化で分岐やstrideが2以上のループ文に関してもSIMDベクトル化を行うようにコード変換を行う解析アルゴリズムを設計する。 FPGAへの適用もARM SVEのSIMD並列化で設計したアルゴリズムを元に機能を改善する。現在はstrideが1のループを対象にするので連続したデータストリームのみを処理できるが、改善されたアルゴリズムでより複雑なループ文をFPGAでハードウェア化できるように改善を行う。前提としてはARM SVEと同様ビットマスクを用いた選択的な実行をデータストリームに対して行うようにハードウェアを生成する。
|
次年度使用額が生じた理由 |
研究開発のためのデスクトップPCや周辺機器を購入することで物品に関する予算を消費している。本年度は研究の初年度であるため、処理系の実装や資料調査などを主に行っているため、研究成果となる論文発表のタイミングが遅くなっている。旅費で予想より少ない金額を消費しているため差額が生じている。本年度執筆した二つ目の国際学会であるHEARTの論文の採択が平成30年の4月に行われ、論文発表が6月であるため、その旅費は次年度の旅費で消費する予定がある。 本年度で研究に必要なソフトウェアの基礎構造が開発されている。来年度はその結果を用いて学会参加による論文発表や意見交換を行う予定である。特に同様の研究開発を行っている海外の研究グループ(LLVMによる処理系の開発、ARM SVEの研究などを行うグループ)との共同研究を模索するため、対外活動を活発に行う。 来年度の物品購入は開発環境の周辺機器に用いる。論文発表に関連してポスター作製などに必要であればソフトウェアの購入も検討を行う。
|