はじめに
いつものように、Xilinx (AMD) の github を散歩していたら、mlir-aie の中に、
- AIE Flows and Routing
なるものを見つけました。
AIE Flows and Routing
MLIR の Dialect として、
- AIE Tile Routing
%t71 = AIE.tile(7, 1) // (Column, Row) %t72 = AIE.tile(7, 2) %t73 = AIE.tile(7, 3)
にて、使用する AIE の tile を指定したり、
下記のように、switchbox にて、DMAの接続を決めたり、
%sw71 = AIE.switchbox(%t71) {
AIE.connect<"DMA" : 0, "North" : 1>
}
や
%sw71 = AIE.switchbox(%t71) {
AIE.connect<"DMA" : 0, "North" : 0>
AIE.connect<"North" : 2, "DMA" : 1>
AIE.connect<"East" : 3, "West" : 2>
}
できるようです。
- AIE ShimMux
ShimMux も指定できるようです。
%t70 = AIE.tile(7, 0) // (Column, Row)
%sw70 = AIE.shim_mux(%t70) {
AIE.connect<"North" : 2, "DMA" : 1>
}
- AIE Flows
下記のように、flow も指定できるようです。
AIE.flow(%t71, "South" : 3, %t73, "DMA" : 0) AIE.flow(%t73, "DMA" : 1, %t71, "South" : 2)
- Visualizing Routing
aie-opt コマンドにて、下記のようなパラメータを付けて生成後、visualize.py を使うことで配線を図で示してくれるようです。
cd ${path-to-mlir-aie}/tools/aie-routing-command-line
aie-opt --aie-create-pathfinder-flows --aie-find-flows ${path-to-mlir-aie}/test/create-flows/broadcast.mlir \
| aie-translate --aie-flows-to-json > example.json
python3 visualize.py -j example.json
┌─────┐ ┌─────┐ ₁ ┌─────┐ ┌─────┐
│ 0,0 │ │ 0,1 ├───┤ 0,2 │ │ 0,3 │
│ │ │ │ │ * D│ │ │
└─────┘ └───┬─┘ └─────┘ └─────┘
│¹
┌─────┐ ┌───┴─┐ ┌─────┐ ┌─────┐
│ 1,0 │ │ 1,1 │ │ 1,2 │ │ 1,3 │
│ │ │ │ │ │ │ * D│
└─────┘ └───┬─┘ └─────┘ └───┬─┘
│¹ ↑¹
┌─────┐ ₂ ┌───┴─┐ ₁ ┌─────┐ ₁ ┌───┴─┐
→→→│ 2,0 ├→→→┤ 2,1 ├→→→┤ 2,2 ├→→→┤ 2,3 │
│S * │ │ │ │ * D│ │ │
└─┬─┬─┘ └─┬───┘ └───┬─┘ └─────┘
¹↓ │¹ ¹↓ │¹
┌─┴─┴─┐ ₁ ┌─┴───┐ ┌───┴─┐ ┌─────┐
│ 3,0 ├───┤ 3,1 │ │ 3,2 │ │ 3,3 │
│ │ │ * D│ │ │ │ │
└─┬─┬─┘ └─────┘ └───┬─┘ └─────┘
¹↓ │¹ │¹
┌─┴─┴─┐ ┌─────┐ ₁ ┌───┴─┐ ┌─────┐
│ 4,0 │ │ 4,1 ├───┤ 4,2 │ │ 4,3 │
│ │ │ │ │ │ │ │
└─┬─┬─┘ └───┬─┘ └─────┘ └─────┘
¹↓ │¹ │¹
┌─┴─┴─┐ ₁ ┌───┴─┐ ┌─────┐ ┌─────┐
│ 5,0 ├───┤ 5,1 │ │ 5,2 │ │ 5,3 │
│ │ │ │ │ │ │ │
└─┬─┬─┘ └─────┘ └─────┘ └─────┘
¹↓ │¹
┌─┴─┴─┐ ₂ ┌─────┐ ₂ ┌─────┐ ┌─────┐
│ 6,0 ├→→→┤ 6,1 ├→→→┤ 6,2 │ │ 6,3 │
│S * │ │ │ │ │ │ │
└─┬───┘ └─────┘ └─┬───┘ └─────┘
¹↓ ²↓
┌─┴───┐ ₁ ┌─────┐ ┌─┴───┐ ₁ ┌─────┐
│ 7,0 ├→→→┤ 7,1 │ │ 7,2 ├───┤ 7,3 │
│ │ │ * D│ │ │ │ │
└─────┘ └─────┘ └─┬───┘ └─┬───┘
¹↓ ¹│
┌─────┐ ┌─────┐ ┌─┴───┐ ┌─┴───┐
│ 8,0 │ │ 8,1 │ │ 8,2 │ │ 8,3 │
│ │ │ │ │ * D│ │ * D│
└─────┘ └─────┘ └─────┘ └─────┘
おわりに
mlir-aie 、面白そうですが、Versal はお高いので使うことができません。Ryzen AIで使えるものでしょうかね。。。
を読むと、WSL2 でセットアップをすることで、Windowsアプリ(Visual Studio 17 2022) にてビルドすれば使えるようですね。。
あー、Alder Lakeな mini PC ではなく、Ryzen 7040な mini PC を買えばよかったのだろうか?10万は超えるけど。。。お安くなったら、買えばいいかな?