16:00 〜 16:15
[MGI30-09] MN-Core向けOpenACCのインターフェイスとプログラミングについて
キーワード:MN-Core、OpenACC、API、プログラミング、コンパイラ、アクセラレータ
MN-Coreは神戸大学とPreferred Networks(PFN)が共同開発しているAI及びHPC向けのアクセラレータである。他のAIプロセッサと異なり、倍精度浮動小数点数演算に対応した演算器を搭載し、高い倍精度演算性能(例として、同世代のNVIDIA A100 GPUの最大19.5TFLOPSに対し、32.8TFLOPS)を維持している。加えて、チップ面積当たりの演算器数が非常に多くなっており、同世代のチップと比較して電力あたりで非常に高い演算性能を実現している。実際に、スパコンの省電力性能ランキングであるGreen500では、2020年から2021年の計4回のうち1位を3回、2位を1回獲得している。さらに、2024年には次世代に当たるMN-Core2が発表された。一方で、MN-Coreの対応するプログラミング言語環境は主にPyTorchのみであった。
我々は神戸大学を代表として令和4年秋から令和7年3月(昨年度)まで行われていた文部科学省のポスト富岳フィージビリティスタディ(FS)事業を契機として、HPCでのアプリケーション利用を想定してMN-Coreの汎用プログラミング環境の開発を開始した。このうち、低レイヤーよりの言語であるOpenCLに相当する独自の言語MNCLの開発と並行して、更に高レイヤーの言語環境として開発されたのがMN-Core向けのOpenACC(以下、OpenACC/MN-Core)である。コンパイラ指示文形式APIであるOpenACCに対応することの大きな利点として、既存のコードの移植性が挙げられる。OpenACCはCやFortranに対応しており、アクセラレータ対応が指示文の追記で容易に行える。さらに、GPUではOpenACCで記述された実際のアプリケーションの既存コードがあり、それらをMN-Coreに移植することができるメリットがある。
MN-Coreは共有メモリ型であるGPUやCPUと異なり、分散メモリ型のプロセッサであることから、OpenACC/MN-Coreではそれに対応するために指示文を拡張した。この拡張の記法はMPIと同様にノード間並列処理を行うためのコンパイラ指示文形式APIであるHigh Performance Fortran(HPF)やXcalableMPを参考にしたものとなっている。これは、これらが分散メモリアーキテクチャ用の並列化コンパイラのためのインターフェイスを備えているからである。これらのAPIは実際にコンパイラが実装されており、コード変換の実現性と、インターフェイスの実用性が確認されている。
我々はOpenACC/MN-Coreのプロトタイプコンパイラを開発してきた。このコンパイラはOpenACCからMNCLにコンパイルするC言語のSource-to-Sourceコンパイラ(トランスパイラ)である。このコンパイラでは、中間コード表現にXML形式をベースとしたXcodeMLを使用し、既存のフロントエンドとバックエンドをOpenACC/MN-Core用にカスタマイズしたものを用いてC⇔XcodeMLの変換を行う。XcodeMLはXML形式解析用のPythonライブラリlxmlを用いて独自開発したミドルウェア(トランスレータ)で解析、変換され、MNCLホストコードとMNCLデバイスコードを生成する。なお、Fortran版コンパイラも開発予定である。
本発表では、このOpenACC/MN-Coreのインターフェイスについて紹介し、プログラムの記述と、コード変換例について説明する。
我々は神戸大学を代表として令和4年秋から令和7年3月(昨年度)まで行われていた文部科学省のポスト富岳フィージビリティスタディ(FS)事業を契機として、HPCでのアプリケーション利用を想定してMN-Coreの汎用プログラミング環境の開発を開始した。このうち、低レイヤーよりの言語であるOpenCLに相当する独自の言語MNCLの開発と並行して、更に高レイヤーの言語環境として開発されたのがMN-Core向けのOpenACC(以下、OpenACC/MN-Core)である。コンパイラ指示文形式APIであるOpenACCに対応することの大きな利点として、既存のコードの移植性が挙げられる。OpenACCはCやFortranに対応しており、アクセラレータ対応が指示文の追記で容易に行える。さらに、GPUではOpenACCで記述された実際のアプリケーションの既存コードがあり、それらをMN-Coreに移植することができるメリットがある。
MN-Coreは共有メモリ型であるGPUやCPUと異なり、分散メモリ型のプロセッサであることから、OpenACC/MN-Coreではそれに対応するために指示文を拡張した。この拡張の記法はMPIと同様にノード間並列処理を行うためのコンパイラ指示文形式APIであるHigh Performance Fortran(HPF)やXcalableMPを参考にしたものとなっている。これは、これらが分散メモリアーキテクチャ用の並列化コンパイラのためのインターフェイスを備えているからである。これらのAPIは実際にコンパイラが実装されており、コード変換の実現性と、インターフェイスの実用性が確認されている。
我々はOpenACC/MN-Coreのプロトタイプコンパイラを開発してきた。このコンパイラはOpenACCからMNCLにコンパイルするC言語のSource-to-Sourceコンパイラ(トランスパイラ)である。このコンパイラでは、中間コード表現にXML形式をベースとしたXcodeMLを使用し、既存のフロントエンドとバックエンドをOpenACC/MN-Core用にカスタマイズしたものを用いてC⇔XcodeMLの変換を行う。XcodeMLはXML形式解析用のPythonライブラリlxmlを用いて独自開発したミドルウェア(トランスレータ)で解析、変換され、MNCLホストコードとMNCLデバイスコードを生成する。なお、Fortran版コンパイラも開発予定である。
本発表では、このOpenACC/MN-Coreのインターフェイスについて紹介し、プログラムの記述と、コード変換例について説明する。