Alveo サーバ概要
Alveo サーバでは Vitis を使った FPGA アクセラレータの開発と、Alveo カードの利用ができます。サーバごとに Alveo カードをひとつ搭載し、サーバを予約した時間枠内で CPU、メモリ、Alveo カードを占有して使用することができます。各サーバのスペックを次の表に示します。
ホスト名 | CPU | スレッド | メモリ | OS | Alveo カード |
---|---|---|---|---|---|
as001 | Core i9-9900 | 8 | 60GB | Ubuntu 18.04 | U200 |
as002 | Core i9-9900 | 8 | 60GB | Ubuntu 18.04 | U250 |
as003 | Core i9-9900 | 8 | 60GB | Ubuntu 18.04 | U280-ES1 |
as004 | Core i9-9900 | 8 | 60GB | Ubuntu 18.04 | U50 |
as005 | Core i7 11700K | 8 | 60GB | Ubuntu 18.04 | VCK5000 |
各ホストにインストールされているXRTとプラットフォームは次の表の通りです。
ホスト名 | Alveo カード | XRT | プラットフォーム |
---|---|---|---|
as001 | U200 | 2021.2 (2.12.427) | xilinx_u200_xdma_201830_2 |
as002 | U250 | 2021.2 (2.12.427) | xilinx_u250_xdma_201830_2 |
as003 | U280-ES1 | 2021.2 (2.12.427) | xilinx_u280-es1_xdma_201910_1 |
as004 | U50 | 2021.2 (2.12.427) | xilinx_u50_gen3x16_xdma_201920_3 |
as005 | VCK5000 | 2022.1 (2.13.478) | xilinx_vck5000_gen4x8_xdma_2_202210_1 |
異なるバージョンのプラットフォーム向けに作成されたデザインは動かすことができませんのでご注意ください。また、Vivado フローで作成したカスタムデザインを Alveo の FPGA にプログラムすることはできません。これらは ACRi ルームを安全に運用するために必要な制限となっております。
次に挙げるような、FPGA アクセラレータの開発と評価に必要なことは一通りできるようにしています。
- Vitis による FPGA デザインの作成
- OpenCLまたは
xbutil program
を介した FPGA のプログラム - ホストアプリケーションのビルドと実行
xbutil reset
による FPGA のリセット
ツール専用サーバ
Alveo が利用できるサーバの他に、いつでも予約無しでVitisを利用できるツール専用サーバを用意しています。時間のかかるVitisのビルドは利用時間に制限のないツール専用サーバが便利です。ただしCPU、メモリは利用者間で共有となりますので、空いているサーバを利用いただき、作業後はログアウトするようお願いします。また定期的なリソース解放のため、毎週月曜午前3:00にツール専用サーバは再起動します。作業中のデータは消えてしまう可能性がありますのでご注意ください。
ホスト名 | CPU | スレッド | メモリ | OS | スクラッチ領域 |
---|---|---|---|---|---|
as101 | Core i9-9900 | 8 | 60GB | Ubuntu 18.04 | as001と共有 |
as102 | Core i9-9900 | 8 | 60GB | Ubuntu 18.04 | as002と共有 |
as103 | Core i9-9900 | 8 | 60GB | Ubuntu 18.04 | as003と共有 |
as104 | Core i9-9900 | 8 | 60GB | Ubuntu 18.04 | as004と共有 |
as105 | Core i7 11700K | 8 | 60GB | Ubuntu 18.04 | as005と共有 |
表に記載の通り、それぞれのツール専用サーバは Alveo サーバとスクラッチ領域を共有しています。ツール専用サーバではユーザーのスクラッチ領域のパスは /scratch/ユーザー名
となります。
U280-ES1 向けのビルドは as103 でのみ実行できます。
Alveo のリセット方法
回路にバグがあったり、アプリケーションを強制停止したりしたときに Alveo が正常に動作しなくなってしまうことがあります。そのようなときは次のようにして Alveo のユーザー領域をリセットしてみてください。
$ source /opt/xilinx/xrt/setup.sh
$ xbutil reset
もしドライバレベルで異常な状態になってしまったときは、予約した時間枠が終了するまで復帰させることはできません。
U280-ES1 の制限事項
as003 サーバに搭載されている U280 は製品版ではなく、エンジニアリングサンプル版です。製品版との最も大きな違いは、HBM の帯域が 410GB/s に制限されている点です(製品版の HBM 帯域は460GB/s)。その他の注意事項につきましては AR# 71975 をご参照ください。
Vitis チュートリアル
情報が古くなってしまったため Vitis チュートリアルの実行方法は現在書き換え中です。以下は不完全な手順となっています。
ACRi ルームのアカウントをまだお持ちでない場合は、アカウントを申請してください。サーバの予約方法とログイン方法はこちらの手順をご参照ください。リモートデスクトップで接続する方法は各種OS向けの説明をご参照ください(Windows、macOS、Linux)。ここからはリモートデスクトップでサーバにログインした前提で説明を進めます。
ACRi ブログの記事に Vitis チュートリアルについてのより詳しい説明がありますのでこちらもご参照ください。

Vitis チュートリアルにある「はじめてのプログラム」のリファレンスコード(ベクトルの足し算)を例に、Alveo サーバの使い方を説明します。xclbin のビルドに時間がかかるため、最後の結果を見るまでに1時間半から2時間程度かかります。
Alveo サーバではユーザーのホームディレクトリはリモートに存在しネットワークを介してマウントされているため、ホームディレクトリへのアクセスは高速ではありません。その代わり、高速なローカルディスク上にご自由に使っていただけるスクラッチ領域(/scratch
)を用意していますので、そちらで作業することを強くおすすめします。なお、各サーバのスクラッチ領域は不定期に削除されますので、作成したソースコードや xclbin などの生成物はホームディレクトリやお手元のパソコンにバックアップいただくようお願いします。
ターミナルを開き、スクラッチ領域へ移動してください。
$ cd /scratch
Vitis チュートリアルをクローンします。ACRi ルームから GitHub を含むインターネットに直接アクセスすることはできないため、サーバ上にあらかじめクローンされたリポジトリを利用します。
$ git clone /tools/repo/Xilinx/Vitis-Tutorials
$ cd Vitis-Tutorials
Vitis と XRT をセットアップします。
$ source /tools/Xilinx/Vitis/2019.2/settings64.sh
$ source /opt/xilinx/xrt/setup.sh
Vitis 2020.1 を使う場合は次のようにしてください。このリファレンスコードはどちらでもビルドできます。
$ source /tools/Xilinx/Vitis/2020.1/settings64.sh
$ source /opt/xilinx/xrt/setup.sh
make コマンドで xclbin を生成します。DEVICE
引数にターゲットのプラットフォーム名を渡してください。U200 を搭載した as001 以外で実行する場合は、design.cfg
ファイルに設定されている platform の値をターゲットのプラットフォーム名に変更する必要がありますので注意してください。
■ as001(U200 を利用)の場合
$ make all TARGET=hw DEVICE=xilinx_u200_xdma_201830_2
■ as002(U250を利用)の場合
$ sed -i -e 's/xilinx_u200_xdma_201830_2/xilinx_u250_xdma_201830_2/g' design.cfg
$ make all TARGET=hw DEVICE=xilinx_u250_xdma_201830_2
■ as003(U280-ES1を利用)の場合
$ sed -i -e 's/xilinx_u200_xdma_201830_2/xilinx_u280-es1_xdma_201910_1/g' design.cfg
$ make all TARGET=hw DEVICE=xilinx_u280-es1_xdma_201910_1
■ as004(U50を利用)の場合
$ sed -i -e 's/xilinx_u200_xdma_201830_2/xilinx_u50_gen3x16_xdma_201920_3/g' design.cfg
$ make all TARGET=hw DEVICE=xilinx_u50_gen3x16_xdma_201920_3
xclbin の生成には1時間ほどかかります。もしお手元に Vitis を実行できる環境がある場合は、xclbin の生成はお手元で行い Alveo サーバを利用するのは Alveo を利用するときのみとすると、3時間の予約枠を有効に利用できます(Vitis はどなたでも無償で入手してインストールしていただけます)。
成功すると、./xclbin/vadd.hw.xclbin
が生成されます。ホストプログラムに xclbin ファイルを渡して実行します。TEST PASSED
と出力されれば成功です。この裏では、FPGA でベクトルの加算が行われ、ホストで答え合わせが行われています。
$ ./host xclbin/vadd.hw.xclbin
Found Platform
Platform Name: Xilinx
INFO: Reading xclbin/vadd.hw.xclbin
Loading: 'xclbin/vadd.hw.xclbin'
TEST PASSED
利用方法の説明はここまでとなります。Vitis での開発経験がない方はぜひ Vitis チュートリアルの続きを進めてみてください。
Alveo カード選択ガイド
Alveo が搭載する FPGA はどれも大規模なものです。それぞれ次のような特徴があります。どの Alveo を選んで良いかわからないときにご参考にしてください。
Alveo | 規模 (LUT数) | メモリ | 特徴 |
---|---|---|---|
U200 | 1,182K | DDR4 64GB | 標準的で使いやすいモデル。 初心者におすすめです。 |
U250 | 1,728K | DDR4 64GB | ハイパフォーマンスを極めたい 中上級者向け。 |
U280-ES1 | 1,304K | DDR4 32GB, HBM2 8GB | 高帯域メモリを活用したい 上級者向け。 |
U50 | 872K | HBM2 8GB | 高コスパモデル。 |
スペックの詳細な比較は公式の製品ガイドをご参照ください。
Vitis AI の実行方法(VCK5000サーバ向け)
VCK5000 を搭載する as005 サーバでは Vitis AI 2.5 がインストール済みですので、すぐにお試しいただけます。
マルチタスクのデモを動かしてみましょう。Vitis AI環境をセットアップして、デモをビルドし、静止画に対して実行してみます。
Vitis AI環境をセットアップ
$ source /opt/vitis_ai/setup.sh
DPUをプログラム
$ select-dpu DPUCVDX8H_8pe_normal
デモのあるディレクトリへ移動
$ cd /opt/vitis_ai/workspace/examples/Vitis-AI-Library/samples/multitask
デモアプリをビルド
$ ./build.sh
デモアプリを実行
$ ./test_jpeg_multitask multi_task sample_multitask.jpg
実行結果を確認してみましょう。
$ gnome-open 0_sample_multitask_result.jpg

セグメンテーション(車、道路、街路樹、空など)と物体検出(車)を同時に推論するデモのようですね。続けて、動画で実行してみましょう。動画の場合はオプションで -t 8
を渡して8スレッドで実行すると、複数の DPU をフルに活かして高いFPSを得られます。
$ ./test_video_multitask multi_task ../../apps/segs_and_roadline_detect/lane_640_480.avi -t 8

動画に対してもリアルタイムにセグメンテーションと物体検出が実行できることが分かりました。ウィンドウを閉じるには ESC キーを押します。
他にも様々なデモが用意されています。そのうちのいくつかを以下の簡単なコマンドで選んで実行できるようにしていますのでぜひお試しください。
$ source /opt/vitis_ai/setup.sh
$ demo-vai
