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 22.04 | VCK5000 |
各ホストにインストールされているXRTとプラットフォームは次の表の通りです。2023年4月にU280-ES1向けを除くすべてのプラットフォームを更新しました。
ホスト名 | Alveo カード | XRT | プラットフォーム |
---|---|---|---|
as001 | U200 | 2.14.354 (2022.2) | xilinx_u200_gen3x16_xdma_base_2 (2022.2) |
as002 | U250 | 2.14.354 (2022.2) | xilinx_u250_gen3x16_base_4 (2022.2) |
as003 | U280-ES1 | 2.7.766 (2020.1.1) | xilinx_u280-es1_xdma_201910_1 |
as004 | U50 | 2.14.354 (2022.2) | xilinx_u50_gen3x16_xdma_base_5 (2022.2) |
as005 | VCK5000 | 2.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 | スレッド | メモリ | OS | ROCm | GPU カード |
---|---|---|---|---|---|---|
as006 | Core i9-12900KF | 16 | 96GB | Ubuntu 22.04 | 6.1.3 | MI210 |
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 | スクラッチ領域 |
---|---|---|---|---|---|
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 22.04 | as005と共有 |
as106 | Core i9-12900KF | 8 | 32GB | Ubuntu 22.04 | as006と共有 |
表に記載の通り、それぞれの共有サーバは Alveo サーバ、Instinct サーバとスクラッチ領域を共有しています。共有サーバではユーザーのスクラッチ領域のパスは /scratch/ユーザー名
となります。
as106 は提供されるリソースが限られ、スクラッチ領域でのコード編集やファイルのコピーなどの用途が想定されます。
U280-ES1 向けのビルドは as103 でのみ実行できます。
Vitis チュートリアル
ACRi ルームのアカウントをまだお持ちでない場合は、アカウントを申請してください。サーバの予約方法とログイン方法はこちらの手順をご参照ください。リモートデスクトップで接続する方法は各種OS向けの説明をご参照ください(Windows、macOS、Linux)。ここからはリモートデスクトップでサーバ(as001を推奨)にログインした前提で説明を進めます。
次のチュートリアルで解説されている Vitis を使った開発フローを ACRi ルームで実機を使って試してみます。xclbin のビルドに時間がかかるため、最後の結果を見るまでに2時間程度かかります。
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数) | メモリ | 特徴 |
---|---|---|---|
U200 | 1,182K | DDR4 64GB | 標準的で使いやすいモデル。 初心者におすすめです。 |
U250 | 1,728K | DDR4 64GB | ハイパフォーマンスを極めたい 中上級者向け。 |
U280-ES1 | 1,304K | DDR4 32GB, HBM2 8GB | 高帯域メモリを活用したい 上級者向け。 |
U50 | 872K | HBM2 8GB | 高コスパモデル。 |
スペックの詳細な比較は公式の製品ガイドをご参照ください。