KRSをKria KV260上で動かしてみる

KRSをDockerコンテナに閉じる でビルドしたKRSのイメージを使用して、Kria KV260上で正常に動作するのかを確認した。 とりあえ …

npz35 Sun 11 September 2022

KRSをDockerコンテナに閉じる でビルドしたKRSのイメージを使用して、Kria KV260上で正常に動作するのかを確認した。 とりあえず offloaded_doublevadd_publisher を正常に起動できるのかを確認した。

動作環境

  • OS : Ubuntu 20.04.3 LTS(64 bit)
  • Vivado : 2022.1
  • Vitis : 2022.1
  • Vitis_HLS : 2022.1
  • ROS2 : Humble
  • ボード : Kria KV260

zoclのロード

ここではアクセラレーションカーネルを管理・実行するために XRT(Xilinx Runtime) を使用する。 XRTの実行のためにはカーネルモジュールである zocl が必要となる。 以下のコマンドを実行し、 zocl がロードされているのかを確認する。

lsmod

ロードされていなかった場合には、以下のコマンドを実行し zocl をロードする。

sudo insmod `find /lib/modules -name zocl.ko`

Kria KV260上でアクセラレーションカーネルを実行する

DFX(Dynamic Function eXchange)-MGR は、FPGAバイナリと、実行に必要なデバイスツリーなどを含む PAC (Platform Assets Container)を管理するためのツールである。 後述する ros2 acceleration の一部のコマンドはDFXのラッパーである。

以下のコマンドを実行し、KRSの設定を読み込む。

sudo su
source /krs_ws/local_setup.bash

以下のコマンドを実行し、DFX-MGRを使用して PAC を読み込む。

ros2 acceleration stop
ros2 acceleration start

以下のコマンドを実行し、DFX-MGRを使用してアクセラレーションカーネルの一覧を確認する。

ros2 acceleration list

以下のコマンドを実行し、 offloaded_doublevadd_publisher を選択する。

ros2 acceleration select offloaded_doublevadd_publisher

以下のコマンドを実行し、 offloaded_doublevadd_publisher が0番スロットにロードされていることを確認する。

# ros2 acceleration list
                        Accelerator          Accel_type                            Base           Base_type      #slots(PL+AIE)         Active_slot

                k26-starter-kits            XRT_FLAT                k26-starter-kits            XRT_FLAT               (0+0)                  -1
  offloaded_doublevadd_publisher            XRT_FLAT  offloaded_doublevadd_publisher            XRT_FLAT               (0+0)                  0,

以下のコマンドを実行し offloaded_doublevadd_publisher を起動する。

# cd /krs_ws/lib/offloaded_doublevadd_publisher
# ros2 run offloaded_doublevadd_publisher offloaded_doublevadd_publisher
INFO: Found Xilinx Platform
INFO: Loading 'vadd_offloaded.xclbin'
Nov 19 09:23:59 xilinx-k26-som-20221 kernel: [drm] User buffer is not physical contiguous
[INFO] [1661861321.498813478] [offloaded_doublevadd_publisher]: Publishing: 'vadd finished, iteration: 0'
[INFO] [1661861322.196097656] [offloaded_doublevadd_publisher]: Publishing: 'vadd finished, iteration: 1'
[INFO] [1661861322.893097787] [offloaded_doublevadd_publisher]: Publishing: 'vadd finished, iteration: 2'
[INFO] [1661861323.589923438] [offloaded_doublevadd_publisher]: Publishing: 'vadd finished, iteration: 3'
[INFO] [1661861324.286790272] [offloaded_doublevadd_publisher]: Publishing: 'vadd finished, iteration: 4'
[INFO] [1661861324.983895650] [offloaded_doublevadd_publisher]: Publishing: 'vadd finished, iteration: 5'