Vitis Application Acceleration開発をするには、VitisとPetaLinuxとXRTのインストールが必須の様なのでインストールしてみます。 2023.1の情報も追加しました。
XRTとは
Xilinx Runtimeの略で、Vitisで高位合成されてFPGAにロードされたバイナリを制御するRuntime。 高位合成されたFPGAバイナリのデバッグする時につかいます。
XRTが動作するのはホスト上です。 SoCの場合は、SoCのARMがホストで、ARMが無いFPGA(Virtex UltraScale+)部だけのAlevoの場合はuBuntu PC等がホストになります。 Ultra96V2はZynq UltraScale+ SoCなので、SoC内のARM Cortex-A53がホストになります。
XRTにはOpenCLライブラリ、低レイヤのライブラリ、Kernelドライバ、MicroBlazeのソースコード等が含まれています。 下の図はがXRTのアーキテクチャーを示しているそうで、コマンドラインユーティリティやAPI等、いろんなツールが組み込まれていて、必要に応じたツールを使える様です。
インストール
- Xilinx ダウンロードページから、
- このページで『Vitis Embedded Platforms』のタブを選び、
- ページの下の方にある、Xilinx Runtime -2022.2 の『uBuntu 20.04』をダウンロード(或いはXilinx Runtime 2023.1を選択)
- ダウンロードされたディレクトリに行き、
- ダウンロードされてxrt_バージョン.debファイルをしていして、aptコマンドでインストール
- インストール場所は指定できず、/opt/xilinx/xrt/にインストールされます。
sudo apt install ./xrt_202220.2.14.354_20.04-amd64-xrt.deb
Reading package lists... Done Building dependency tree Reading state information... Done Note, selecting 'xrt' instead of './xrt_202220.2.14.354_20.04-amd64-xrt.deb' The following packages were automatically installed and are no longer required: binutils-arm-linux-gnueabihf cpp-9-arm-linux-gnueabihf cpp-arm-linux-gnueabihf cryptsetup cryptsetup-bin cryptsetup-initramfs cryptsetup-run dropbear-initramfs fcitx-bin fcitx-data fcitx-frontend-all fcitx5-module-quickphrase-editor gcc-10-cross-base gcc-9-arm-linux-gnueabihf-base gcc-9-cross-base guile-2.0-libs libasan5-armhf-cross libatomic1-armhf-cross libc6-armhf-cross libfcitx-qt5-1 libfcitx-qt5-data libgcc-9-dev-armhf-cross libgcc-s1-armhf-cross libgettextpo0 libgomp1-armhf-cross liblua5.2-0 libpresage-data libpresage1v5 libstdc++6-armhf-cross libtinyxml2.6.2v5 libubsan1-armhf-cross presage ubuntu-advantage-desktop-daemon Use 'sudo apt autoremove' to remove them. The following additional packages will be installed: dkms libboost-program-options1.71.0 uuid-dev Suggested packages: menu The following NEW packages will be installed: dkms libboost-program-options1.71.0 uuid-dev xrt 0 upgraded, 4 newly installed, 0 to remove and 20 not upgraded. Need to get 442 kB/26.2 MB of archives. After this operation, 120 MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 /home/ichiri/Downloads/xrt_202220.2.14.354_20.04-amd64-xrt.deb xrt amd64 2.14.354 [25.7 MB] Get:2 http://jp.archive.ubuntu.com/ubuntu focal-updates/main amd64 dkms all 2.8.1-5ubuntu2 [66.8 kB] Get:3 http://jp.archive.ubuntu.com/ubuntu focal/main amd64 libboost-program-options1.71.0 amd64 1.71.0-6ubuntu6 [342 kB] Get:4 http://jp.archive.ubuntu.com/ubuntu focal-updates/main amd64 uuid-dev amd64 2.34-0.1ubuntu9.3 [33.6 kB] Fetched 442 kB in 3s (176 kB/s) Selecting previously unselected package dkms. (Reading database ... 212667 files and directories currently installed.) Preparing to unpack .../dkms_2.8.1-5ubuntu2_all.deb ... Unpacking dkms (2.8.1-5ubuntu2) ... Selecting previously unselected package libboost-program-options1.71.0:amd64. Preparing to unpack .../libboost-program-options1.71.0_1.71.0-6ubuntu6_amd64.deb ... Unpacking libboost-program-options1.71.0:amd64 (1.71.0-6ubuntu6) ... Selecting previously unselected package uuid-dev:amd64. Preparing to unpack .../uuid-dev_2.34-0.1ubuntu9.3_amd64.deb ... Unpacking uuid-dev:amd64 (2.34-0.1ubuntu9.3) ... Selecting previously unselected package xrt. Preparing to unpack .../xrt_202220.2.14.354_20.04-amd64-xrt.deb ... Unpacking xrt (2.14.354) ... Setting up dkms (2.8.1-5ubuntu2) ... Setting up uuid-dev:amd64 (2.34-0.1ubuntu9.3) ... Setting up libboost-program-options1.71.0:amd64 (1.71.0-6ubuntu6) ... Setting up xrt (2.14.354) ... Unloading old XRT Linux kernel modules rmmod: ERROR: Module xocl is not currently loaded rmmod: ERROR: Module xclmgmt is not currently loaded Invoking DKMS common.postinst for xrt Loading new xrt-2.14.354 DKMS files... Building for 5.15.0-67-generic Building initial module for 5.15.0-67-generic Done. xocl.ko: Running module version sanity check. - Original module - No original module exists within this kernel - Installation - Installing to /lib/modules/5.15.0-67-generic/updates/dkms/ xclmgmt.ko: Running module version sanity check. - Original module - No original module exists within this kernel - Installation - Installing to /lib/modules/5.15.0-67-generic/updates/dkms/ depmod..................... DKMS: install completed. Finished DKMS common.postinst Loading new XRT Linux kernel modules Installing MSD / MPD daemons | Components | Status | |------------------------------|--------------------| | XOCL & XCLMGMT Kernel Driver | Success | | XRT USERSPACE | Success | | MPD/MSD | Success | Processing triggers for man-db (2.9.1-1) ... Processing triggers for libc-bin (2.31-0ubuntu9.9) ...
簡単でした。 Successとなりました。 PCIe用のxoclは自動でインストールされていますが、Zynq等SoC用のzoclはインストールされていませんね。 PetaLinuxでビルドする際にrootfsのmenuconfigとデバイスツリーに記述して取り込まないといけないようです。
2023.1
以下のメッセージが出てきました。
MOKというのが生成されので、uBuntuのシステムFirmwareに登録しないといけないようです。 登録する時と、登録後再起動したときログインパスワードを聞いてくるので入力しなければ、サードパーティーのドライバが使用できな可能性があるようです。 上記画面から進むには『ESC』。
画面の通りパスワードを2回入れると以下のように表示されました。 MOKは登録されましたが,xclmgmtとxoclは立ち上がりませんでした。 多分modprobeをsudo実行しないといけないと思います。
/<pre>++++ writing new private key to '/var/lib/shim-signed/mok/MOK.priv' ----- Done. xocl.ko: Running module version sanity check. - Original module - No original module exists within this kernel - Installation - Installing to /lib/modules/5.15.0-72-generic/updates/dkms/ xclmgmt.ko: Running module version sanity check. - Original module - No original module exists within this kernel - Installation - Installing to /lib/modules/5.15.0-72-generic/updates/dkms/ depmod... DKMS: install completed. Finished DKMS common.postinst Loading new XRT Linux kernel modules modprobe: ERROR: could not insert 'xclmgmt': Operation not permitted modprobe: ERROR: could not insert 'xocl': Operation not permitted Installing MSD / MPD daemons | Components | Status | |------------------------------|--------------------| | XOCL & XCLMGMT Kernel Driver | Success | | XRT USERSPACE | Success | | MPD/MSD | Success | Setting up g++ (4:9.3.0-1ubuntu2) ... update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mo de Setting up build-essential (12.8ubuntu1.1) ... Processing triggers for man-db (2.9.1-1) ... Processing triggers for libc-bin (2.31-0ubuntu9.9) ... </pre>
参考
まだ使い方を分っていないので、今後のヒントになりそうなことを書き留めています。xclmgmtまだ使い方を分っていないので、今後のヒントになりそうなことを書き留めています。
xbutil(Xilinx Board Utility)
XRTに含まれるコマンドラインユーティリティ。 xbutilを使う前に、bashでは以下のsetup.shを実行する必要がある。
$ source /opt/xilinx/xrt/setup.sh
Xilinx Board Utility コマンドライン構文
$ xbutil <command> [options] //コマンド部はコマンドと引数が必要なコマンド場合は引数も必要。 <command [commandArgs]> // 以下はオプション [--help] [--version] [--verbose] [--batch] [--force]
// xclbinのロード // xclLoadXclBinでは、xclbinをロードするioctlを実行している。 // ドライバでは、xclbinのBITSTREAMをFPGAに書き込む処理などを実行 fd = open(XCLBIN, O_RDONLY); xclbin = (struct axlf *)mmap(NULL, xclbin_size, PROT_READ, MAP_PRIVATE, fd, 0); ret = xclLoadXclBin(dev_handle, (const struct axlf *)xclbin);
アンインストール方法
PetaLinuxはアンインストール出来ませんが、XRTはアンインストール出来ました。
$ sudo apt remove xrt // $ sudo apt --installed | grep xrt //<---xrtがインストールされているか確認 $ sudo apt --installed | grep xilinx //<--- インストールされた運用プラットフォームパッケージのリスト $ sudo apt remove ./<xrt_package_name> //<---運用プラットフォームのアンインストール
その他
xrt.ini
コメント