はじめに
Xilinx の AI Engine について、調べ始めました。
今日は、AI Engine の シミュレータ (aiesimulator) を動かしてみたので、そこのところを色々と調べてみます。
Xilinx AI Engine の シミュレータ (aiesimulator) を動かしてみた(その1) です。
お題
お題は、下記の記事にあるコードを aiesimulator を --target=hw にて動かした時、何が何をしてやっているのか?を調べるということです。
前提
Xilinx AI Engine を動かすには、事前に Vitis Tool をインストールしておく必要があります。
Vitis Tool のインストールディレクトリ を ${VITIS_HOME} としたときに、そのディレクトリの下にある /settings64.sh を source コマンドで読み込んでおき、aiesimulator が実行できるようにしておきます。
source ${VITIS_HOME}/settings64.sh which aiesimulator ${VITIS_HOME}/aietools/bin/aiesimulator
aiesimulator は、${VITIS_HOME} の下の aietools の bin ディレクトリにあります。
シミュレーションする前のコンパイラ aiecompiler も同じディレクトリにあります。
which aiecompiler ${VITIS_HOME}/aietools/bin/aiecompiler
例題をコンパイル
上記の例題の AI Engine 用のソースコード (graph.cpp/graph.hpp/vadd.cpp/vadd.hpp) は、src ディレクトリに置いておきます。
ls src graph.cpp graph.hpp vadd.cpp vadd.hpp
下記のaiecompiler コマンドで aiesimulator コマンドにてシミュレーションするための準備ができます。--target=hw はAI Engineで動くコードを生成します。-target=hw ではなく、--target=x86sim にすると、x86-64 の native な実行プログラムを生成します。
--include オプションでは、ソースコードでの include ファイルのディレクトリを指定します。src ディレクトリにヘッダファイルも置いてあるので、--include=src にて、src ディレクトリを指定しています。コンパイルするファイルは、src/graph.cp になります。
aiecompiler --target=hw --include=src src/graph.cpp
コンパイルすると、
ls AIECompiler.log Work data libadf.a src xcd.log
Work の下に aiesimulator コマンドで使うファイルが色々と生成されます。また、libadf.a を使います。
aiesimulator を動かす
aiesimulator コマンドで必要なデータは、data ディレクトリに置いておきます。
ls data input0.txt input1.txt
aiesimulator コマンドでは、--pkg-dir=Work にて aiecompiler コマンドで生成したディレクトリを指定します。--input-dir=data では入力データファイルがあるディレクトリを、--output-dir=data では出力データファイルがあるディレクトリを指定します。
aiesimulator --pkg-dir=Work --input-dir=data --output-dir=data
top コマンドを実行してみたら、実際に動いているのは、aiesim というコマンドでした。
おわりに
今回は、例題を使って、aiecompiler にてコンパイル後、aiesimulator の起動の部分を見てみました。 次回は、aiesimulator コマンドが出力するメッセージを見ていきます。