はじめに
いつものように、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万は超えるけど。。。お安くなったら、買えばいいかな?