AMD Alveo / Instinct サーバの利用方法

Alveo サーバ

Alveo サーバでは Vitis を使った FPGA アクセラレータの開発と、Alveo カードの利用ができます。サーバごとに Alveo カードをひとつ搭載し、サーバを予約した時間枠内で CPU、メモリ、Alveo カードを占有して使用することができます。各サーバのスペックを次の表に示します。

ホスト名CPUスレッドメモリOSAlveo カード
as001Core i9-9900860GBUbuntu 20.04U200
as002Core i9-9900860GBUbuntu 20.04U250
as003Core i9-9900860GBUbuntu 18.04U280-ES1
as004Core i9-9900860GBUbuntu 20.04U50
as005Core i7 11700K860GBUbuntu 20.04VCK5000

各ホストにインストールされているXRTとプラットフォームは次の表の通りです。2023年4月にU280-ES1向けを除くすべてのプラットフォームを更新しました。

ホスト名Alveo カードXRTプラットフォーム
as001U2002.14.354 (2022.2)xilinx_u200_gen3x16_xdma_base_2 (2022.2)
as002U2502.14.354 (2022.2)xilinx_u250_gen3x16_base_4 (2022.2)
as003U280-ES12.7.766 (2020.1.1)xilinx_u280-es1_xdma_201910_1
as004U502.14.354 (2022.2)xilinx_u50_gen3x16_xdma_base_5 (2022.2)
as005VCK50002.14.384 (2022.2)xilinx_vck5000_gen4x8_qdma_base_2 (2022.2)

異なるバージョンのプラットフォーム向けに作成されたデザインは動かすことができませんのでご注意ください。また、Vivado フローで作成したカスタムデザインを Alveo の FPGA にプログラムすることはできません。これらは ACRi ルームを安全に運用するために必要な制限となっております。

次に挙げるような、FPGA アクセラレータの開発と評価に必要なことは一通りできるようにしています。

  • Vitis による FPGA デザインの作成
  • OpenCLまたはxbutil program を介した FPGA のプログラム
  • ホストアプリケーションのビルドと実行
  • xbutil reset による FPGA のリセット

Alveo のリセット方法

回路にバグがあったり、アプリケーションを強制停止したりしたときに Alveo が正常に動作しなくなってしまうことがあります。そのようなときは次のようにして Alveo のユーザー領域をリセットしてみてください。

$ source /opt/xilinx/xrt/setup.sh
$ xbutil reset

もしドライバレベルで異常な状態になってしまったときは、予約した時間枠が終了するまで復帰させることはできません。

U280-ES1 の制限事項

as003 サーバに搭載されている U280 は製品版ではなく、エンジニアリングサンプル版です。製品版との最も大きな違いは、HBM の帯域が 410GB/s に制限されている点です(製品版の HBM 帯域は460GB/s)。その他の注意事項につきましては AR# 71975 をご参照ください。

Instinct サーバ

Instinct (GPU) を搭載したサーバの利用ができます。利用方法は Alveo サーバと同様です。GPU を AI モデルの学習などにご利用いただけます。サーバのスペックを次の表に示します。

ホスト名CPUスレッドメモリOSROCmGPU カード
as006Core i9-12900KF20120GBUbuntu 22.046.0.3MI210

Instinct MI210 のスペックを以下に抜粋します。

GPU アーキテクチャCDNA2
半精度 (FP16) ピーク性能181 TFLOPs
単精度マトリックス (FP32) ピーク性能45.3 TFLOPs
単精度 (FP32) ピーク性能22.6 TFLOPs
GPU メモリ サイズ64 GB
GPU メモリ タイプHBM2e
ピーク メモリ帯域幅1.6 TB/s

ROCm を使った AI モデルの学習についてはこちらのページをご参照ください。

共有サーバ

Alveo や Instinct が利用できるサーバの他に、いつでも予約無しでVitisを利用できる共有サーバを用意しています。時間のかかる Vitis のビルドには利用時間に制限のない共有サーバが便利です。ただし CPU、メモリは利用者間で共有となりますので、空いているサーバを利用いただき、作業後はログアウトするようお願いします。また定期的なリソース解放のため、毎週月曜午前3:00に共有サーバは再起動します。作業中のデータは消えてしまう可能性がありますのでご注意ください。

ホスト名CPUスレッドメモリOSスクラッチ領域
as101Core i9-9900860GBUbuntu 20.04as001と共有
as102Core i9-9900860GBUbuntu 20.04as002と共有
as103Core i9-9900860GBUbuntu 18.04as003と共有
as104Core i9-9900860GBUbuntu 20.04as004と共有
as105Core i7 11700K860GBUbuntu 20.04as005と共有
as106Core i9-12900KF44GBUbuntu 22.04as006と共有

表に記載の通り、それぞれの共有サーバは Alveo サーバ、Instinct サーバとスクラッチ領域を共有しています。共有サーバではユーザーのスクラッチ領域のパスは /scratch/ユーザー名 となります。

as106 は提供されるリソースが限られ、スクラッチ領域でのコード編集やファイルのコピーなどの用途が想定されます。

U280-ES1 向けのビルドは as103 でのみ実行できます。

Vitis チュートリアル

ACRi ルームのアカウントをまだお持ちでない場合は、アカウントを申請してください。サーバの予約方法とログイン方法はこちらの手順をご参照ください。リモートデスクトップで接続する方法は各種OS向けの説明をご参照ください(WindowsmacOSLinux)。ここからはリモートデスクトップでサーバ(as001を推奨)にログインした前提で説明を進めます。

次のチュートリアルで解説されている Vitis を使った開発フローを ACRi ルームで実機を使って試してみます。xclbin のビルドに時間がかかるため、最後の結果を見るまでに2時間程度かかります。

AMD Technical Information Portal

Alveo サーバではユーザーのホームディレクトリはリモートに存在しネットワークを介してマウントされているため、ホームディレクトリへのアクセスは高速ではありません。その代わり、高速なローカルディスク上にご自由に使っていただけるスクラッチ領域(/scratch)を用意していますので、そちらで作業することを強くおすすめします。なお、各サーバのスクラッチ領域は不定期に削除されますので、作成したソースコードや xclbin などの生成物はホームディレクトリやお手元のパソコンにバックアップいただくようお願いします。

ターミナルを開き、スクラッチ領域へ移動してください。ツール専用サーバーで作業する場合のスクラッチ領域のパスは/scratch/$USERです。

$ cd /scratch

Vitis チュートリアルをコピーします。ACRi ルームから GitHub を含むインターネットに直接アクセスすることはできないため、サーバ上にあらかじめクローンされたデータを利用します。

$ cp -a /tools/repo/Xilinx/Vitis-Tutorials .
$ cd Vitis-Tutorials/Getting_Started/Vitis/example/u200

Vitis と XRT をセットアップします。

$ source /tools/Xilinx/Vitis/2022.2/settings64.sh
$ source /opt/xilinx/xrt/setup.sh

make コマンドを使ってホストプログラム、xclbin ファイルを生成します。PLATFORM 引数にターゲットのカードのプラットフォーム名を渡してください。また、U50 がターゲットの場合は、../src/u200.cfg ファイルのグローバルメモリの指定を DDR から HBM に変更する必要があります。

■ as001(U200)の場合

$ make build TARGET=hw PLATFORM=xilinx_u200_gen3x16_xdma_2_202110_1 SRCDIR=../src

■ as002(U250)の場合

$ make build TARGET=hw PLATFORM=xilinx_u250_gen3x16_xdma_4_1_202210_1 SRCDIR=../src

■ as004(U50)の場合

$ sed -i 's/DDR/HBM/g' ../src/u200.cfg
$ make build TARGET=hw PLATFORM=xilinx_u50_gen3x16_xdma_5_202210_1 SRCDIR=../src

xclbin の生成には2時間ほどかかります。成功すると./hw/vadd.xclbin が生成されます。hw ディレクトリに移動してホストプログラムを実行します。TEST PASSED と出力されれば成功です。

$ cd hw
$ ./app.exe
argc = 1
argv[0] = ./app.exe
Open the device0
Load the xclbin ./vadd.xclbin
Allocate Buffer in Global Memory
synchronize input buffer data to device global memory
Execution of the kernel
Get the output data from the device
TEST PASSED

利用方法の説明はここまでとなります。Vitis での開発経験がない方はぜひ Vitis チュートリアルの続きを進めてみてください。

Alveo カード選択ガイド

Alveo が搭載する FPGA はどれも大規模なものです。それぞれ次のような特徴があります。どの Alveo を選んで良いかわからないときにご参考にしてください。

Alveo規模
(LUT数)
メモリ特徴
U2001,182KDDR4 64GB標準的で使いやすいモデル。
初心者におすすめです。
U2501,728KDDR4 64GBハイパフォーマンスを極めたい
中上級者向け。
U280-ES11,304KDDR4 32GB, HBM2 8GB高帯域メモリを活用したい
上級者向け。
U50872KHBM2 8GB高コスパモデル。

スペックの詳細な比較は公式の製品ガイドをご参照ください。

タイトルとURLをコピーしました