Vengineerの妄想

人生を妄想しています。

Xilinx AI Engine の シミュレータ (aiesimulator) を動かしてみた(その1)

はじめに

Xilinx の AI Engine について、調べ始めました。

今日は、AI Engine の シミュレータ (aiesimulator) を動かしてみたので、そこのところを色々と調べてみます。

Xilinx AI Engine の シミュレータ (aiesimulator) を動かしてみた(その1) です。

お題

お題は、下記の記事にあるコードを aiesimulator を --target=hw にて動かした時、何が何をしてやっているのか?を調べるということです。

www.acri.c.titech.ac.jp

前提

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 コマンドが出力するメッセージを見ていきます。