Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

Xilinx (AMD) AIE Flows and Routing

はじめに

いつものように、Xilinx (AMD) の github を散歩していたら、mlir-aie の中に、

  • AIE Flows and Routing

なるものを見つけました。

AIE Flows and Routing

github.com

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>
}

できるようです。

ShimMux も指定できるようです。

%t70 = AIE.tile(7, 0) // (Column, Row)
%sw70 = AIE.shim_mux(%t70) {
   AIE.connect<"North" : 2, "DMA" : 1>
}

下記のように、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で使えるものでしょうかね。。。

github.com

を読むと、WSL2 でセットアップをすることで、Windowsアプリ(Visual Studio 17 2022) にてビルドすれば使えるようですね。。

あー、Alder Lakeな mini PC ではなく、Ryzen 7040な mini PC を買えばよかったのだろうか?10万は超えるけど。。。お安くなったら、買えばいいかな?

vengineer.hatenablog.com