MLIRについてもう少し具体的な例を勉強するために、資料を読み込んでいくことにした。前回の続き。
以下の資料を参考にした。Chris Lattnerの所属がSiFiveに変わっているので、比較的最近の資料だ。
次はTensorFlowのExampleの例を見る。TensorFlowもMLIRをサポートしているらしい。
TensorFlowのコンパイラエコシステムでは、TensorFlowのグラフからXLAのHLOに変換し、それをIRに変換しているらしい。HLOは"High Level Optimizer"のことを言うらしい。
TensorFlowのGraphをTF Graph.mlirというものに変換し、これをHLO.mlirに変換する。これをXLO HLOに変換するらしい。このTF Graph.mlirとHLO.mlirがどういうフォーマットになっているのか気になる。
TensorFlowの計算グラフをMLIRで表現すると以下のようになるらしい。これはLLVM IRと似ていると思う。
Bridgeをビルドする。
- グラフの変換と最適化のパスを追加する。
- オペレーションの書き換えルールを追加する。
次はMLIRユーザによるいくつかの例を見ていく。
- ステンシル計算の表現形式としてMLIRを使用する。ステンシルの計算では格子の隣接したセルの計算が必要になるという訳か。
これの意味がまだ理解できない。ステンシルの計算を表現しているらしい。
- Fortran向けの最適化コンパイラFLANG。FIR(High-level Fortran IR)をMLIR形式で表現し、これをLLVM IRに変換してアセンブリコードを生成する。
- XilinxのAIエンジンではMLIRを使っている。