2018 Fiscal Year Research-status Report
ベクトル長agnosticなアーキテクチャのためのSIMD IRコード生成技法
Project/Area Number |
17K12694
|
Research Institution | Institute of Physical and Chemical Research |
Principal Investigator |
Lee Jinpil 国立研究開発法人理化学研究所, 計算科学研究センター, 特別研究員 (30764873)
|
Project Period (FY) |
2017-04-01 – 2020-03-31
|
Keywords | SIMD並列化 / OpenMP / 並列化コンパイラ / FPGA |
Outline of Annual Research Achievements |
本研究の目的はハードウェアのベクトル幅にかかわらずSIMD並列化を行うための中間言語の開発とOpenMPをベースにするプログラミングモデルの提案および処理系の実装である。本年度の研究では昨年度開発を行ったLLVMの処理系をベースにループ間のデータの読み書きを解析を行うアルゴリズムの設計と実装を行った。 LLVMのPollyプロジェクトによるPolyhedral Modelによってソースコードの静的な解析が可能である。本研究ではその機能を用いることでデータがループ文の前後でどのように用いられているかを解析することができる。前年度の研究では一つのループ文をデータストリームとして表現することでARM SVEやFPGA向けのコードを生成している。ソースコードの中で複数のループ文が存在する場合、各々のデータストリームを生成し、Pollyによるループ文の間の解析によってデータストリームがどのようにループ間を流れるかを解析することができるようになる。 現在ARM SVEの実ハードウェアが存在しないため、FPGA向けの処理系を実装している。各ループ文からFPGAモジュールを生成し、その間のデータストリームの流れを解析してデータパスを生成する。ループ文のモジュールやデータパスを含む上位モジュールをトップモジュールとして生成することで前年度では表現できなかった複数のループ文からのFPGAコード生成が可能になった。 OpenMP 4.5相当のsimd指示文の実装は引き続き開発を行っている。こちらもLLVM向けにsimdループ文で明示的なFPGAの実装が与えられるように開発を行う。明示的な実装はverilogやOpenCLによる実装を想定する。
|
Current Status of Research Progress |
Current Status of Research Progress
3: Progress in research has been slightly delayed.
Reason
本年度の主な研究計画はsimd指示文の実装であるが、ARM SVEのハードウェアがまだ利用できないことやFPGA向けの解析機能を優先したことが原因である。研究の遅れを取り戻すために、実ハードウェアではなくシミュレーターを用いて処理系を実装することを考える。ARM SVEのシミュレーターの機能が充実してきたため、研究で取り扱っているコードもシミュレーターで実行が可能になったため、実ハードウェアが利用できるまでシミュレーターで実装されているSIMD命令をターゲットにした処理系の開発を行う。また後述する言語仕様の検討を先行して行っているなど、実装の遅れをカバーしている。 本年度で開発を行った複数のループ文の解析機能によって扱えるコードの範囲が広がったことなど、FPGA向けのコード解析機能が充実した。前年度までの研究ではプロトタイプとして単一ループ文のみを解析してコード変換を行っていたため、ループ文の前後でCPU-FPGA間のPCIインターフェイスを用いたデータの転送が発生し、性能低下の原因となっていた。複数のループ文をまとめてFPGA化することによってループ間のデータパスを生成し、データの再利用を行うことでCPU-FPGA間のデータ転送を削減することができるため、性能が向上している。 筑波大学との共同研究によってOpenMPのタスク機能によってソースコードの一部をFPGAで実行することを検討しており、それに関連する論文を2018年のIWOMPに共著として投稿している。更にこのようなタスクをまとめてバッチ処理化する処理系の検討を行い2019年度のIWOMPに論文を投稿している。来年度の研究計画としてOpenMPの言語仕様の拡張を計画しているが、このようにバッチ処理を支援する仕様を取り入れることによって新しいアーキテクチャ向けの並列化が可能であると考えている。
|
Strategy for Future Research Activity |
研究の最終年度になるため、計画していた項目の完成と新しく最終年度に計画していた項目の研究を行う。前年度まで計画していたが、進行が遅れている項目としてはARM SVE向けSIMD処理系の実装がある。ARM SVEのSIMD命令を実行できるハードウェアが利用できるまで所内で開発を行っているgem5ベースのシミュレーターを用いた処理系の開発を行う。処理系が完成したあとではいくつかのアプリケーションを用いた性能評価を行う。シミュレーターを利用する場合、実ハードウェアと比較して実行時間が長くなるため、マイクロベンチマークや簡略化したアプリケーションの計算カーネルを用いた評価になる。 最終年度の研究項目は従来のOpenMPになかった新しい言語仕様の設計と実装である。これは従来のデータ並列の延長で処理系の解析を助ける言語仕様の追加と新しい並列化手法を記述する言語仕様の二つの要素を考える。 従来のデータ並列化の延長とはOpenMP simd指示文の言語仕様の拡張である。simd指示文の節(clause)はSIMD並列化のための解析を助けるために情報を提供する役割があるはARM SVEなどベクトル長が決まっていないアーキテクチャ向けの仕様は検討されていない。これを支援する節を新たに設けることで従来のループ文をベースにしたデータ並列化を新しいアーキテクチャでも可能にする。 新しい並列化手法とはタスクをベースにした言語モデルである。ループ文を用いるデータ並列化は伝統的なHPCアプリケーションを並列化することに適しているが、コア数が増えるにつれて同期のオーバーヘッドが問題になる。タスク間の依存関係を用いて同期を局所化することでこのような問題点が解消されると考えている。タスクをベースにした言語モデルをFPGAなどで適用しSIMD並列化されたモジュールを生成する手法を検討する。
|
Causes of Carryover |
研究2年目であるため、1年度で購入した物品で研究を進めており、新しいものを購入する必要がなかった。来年度はノードパソコンなどの物品を購入するため、予算を物品と出張旅費として使うことを計画している。最終年度の成果発表と、次の研究につながる打ち合わせのため、来年度は1、2年度より打ち合わせや出張の機会が増えると考えており、旅費は学会参加費が前年度より多く必要であると考えている。
|
Research Products
(9 results)