インテル® Agilex™ FPGA ベースの SmartNIC N6000-PLを使ってみた
はじめに
(株)スターラップ・テクノロジーです。
インテル Agilex FPGAベースのSmartNIC プラットフォーム(N6011)による長瀬産業のFPGA向けの高速・低レイテンシサーチエンジンIP(Axonerve)の動作検証を実施しました。
不可解な現象が残ったままですがOS選定からIOFSインストールまでのトラブル対処も踏まえた環境構築フローをここに紹介します。
目次
使用環境
FPGAボード | intel FPGA SmartNIC プラットフォーム(N6011) |
---|---|
CPU | Intel Core i7-12700k |
メモリ容量 | 128GB |
OS | Cent OS Stream 8 |
Quartus | Quartus Pro 21.3.0 SP0.14 |
環境構築
ここではスタートアップガイドに準じて、OSならびにKernelの選定からIOFSインストールによる環境構築までの実施手順、そしてトラブル内容および処置を記載します。
(1) BIOS設定変更
IOFS-DFL(N6011用ドライバ)をインストールできない問題対策として次の項目を変更します。
項目 | 設定 |
---|---|
Secure boot | 無効 |
SR-IOV Support | 有効 |
Native PCIE Enable | 無効 |
(2) OSならびにKernelの選定とインストール
OS | kernel |
---|---|
Cent OS Stream 8 | kernel-rt-4.18.0-348.1.rt7.70.el8.x86_64 |
(3) IOFS インストール (スタートアップガイドに準じる)
(3-1)シェルスクリプトを用いてIOFSをインストール
$ sudo ./fpga-ofs-2022-04-21.sh
$Verifying archive integrity... 100% SHA256 checksums are OK. All good.
Uncompressing FPGA OFS Driver and Application Package 100%
Failed to installed epel repository, which is needed to build kernel modules
epel repositoryが未設定のためFailエラー発生
(3-2)epelをインストール (epel repositoryの設定)
$sudo yum install epel-release
Package filename:epel-release-8-11.el8.noarch.rpm
(3-3)シェルスクリプトを用いてIOFSを再インストール
$ sudo ./fpga-ofs-2022-04-21.sh
Building module:
Cleaning build area...
make -j20 KERNELRELEASE=4.18.0-365.el8.x86_64 KERNELDIR=/lib/modules/4.18.0-365.el8.x86_ 64/build...(bad exit status: 2)
Error! Bad return status for module build on kernel: 4.18.0-365.el8.x86_64 (x86_64)
Consult /var/lib/dkms/linux-dfl-backport/0^20220421gsil1.8.r6.g010f7374-1/build/make.log for more information.
modprobe: WARNING: Module dfl_pci not found in directory /lib/modules/4.18.0-365.el8.x86_64
警告: %post(linux-dfl-backport-0^20220421gsil1.8.r6.g010f7374-1.noarch)
スクリプトの実行に失敗しました。
終了ステータス 1
Error in POSTIN scriptlet in rpm package linux-dfl-backport
make -j20 KERNELRELEASE=4.18.0-365.el8.x86_64 KERNELDIR= ........
・処理中にKernel版数が [365] となりエラーが発生し、DFLとOPAEがインストールできない。
・Kernel版数がなぜ変わったのか?パソコン環境あるいはシェルスクリプト起因かは不明。
(3-4)強制RebootによるKernelデフォルト版数を [365]から元の[348] へ切り替え
(3-5)IOFS-DFLのみ個別インストール
$ sudo yum install 'linux-dfl-backport-0^20220421gsil1.8.r6.g010f7374-1.noarch.rpm'
Building module:
Cleaning build area...
make -j20 KERNELRELEASE=4.18.0-348.el8.x86_64 KERNELDIR=/lib/modules/4.18.0-348.el8.x86_64/build...
Signing module /var/lib/dkms/linux-dfl-backport/0^ 20220421gsil1.8.r6.g010f7374-1/build/regmap-mmio.ko Signing module /var/lib/dkms/linux-dfl-backport/0^ 20220421gsil1.8.r6.g010f7374-1/build/regmap-spi-avmm.ko
<<以下省略>>
IOFS-DFLのインストールが正常終了
(3-6)IOFS-OPAEのみ個別インストール
$ sudo ./fpga-ofs-2022-04-21.sh -- --opae-only
IOFS-OPAEのインストールが正常終了
(4) 環境チェック
(4-1)opaeコマンドによるドライバの組込み状態
$ opae.io ls
[0000:03:00.0] (0x8086, 0xbcce) Intel N6000 ADP (Driver: dfl-pci)
[0000:03:00.1] (0x8086, 0xbcce) Intel N6000 ADP (Driver: dfl-pci)
[0000:03:00.4] (0x8086, 0xbcce) Intel N6000 ADP (Driver: dfl-pci)
[0000:03:00.2] (0x8086, 0xbcce) Intel N6000 ADP (Driver: dfl-pci)
Kernelへのドライバが正常に組み込まれている
(4-2)fpgainfoコマンドによるPCIe経由でのN6011のソフトウエア情報
$ fpgainfo fme
Intel Acceleration Development Platform
Board Management Controller NIOS FW version: 3.2.0
Board Management Controller Build version: 3.2.0
//****** FME ******//
Object Id : 0xF000000
PCIe s:b:d.f : 0000:03:00.0
Vendor Id : 0x8086
Device Id : 0xBCCE
SubVendor Id : 0x8086
SubDevice Id : 0x0000
Socket Id : 0x00
Ports Num : 01
Bitstream Id : 0x501060200000000
Bitstream Version : 5.0.1
Pr Interface Id : af0ba90a-6df0-5f12-8fb5-263d15d98c72
Boot Page : user1
Factory Image Info : b3442faf0237fea4e23ef057af64586b
User1 Image Info : ba740062978c274152402e5c4def51ec
User2 Image Info : a8f39027e12ed8ba5feaf5b154bf5b66
N6011のソフトウエア情報が正常に読み出され、内容も問題なし
環境構築完了
ノウハウ事例集
ここではFPGA設計段階でのトラブル(Know-how)事例を紹介します。
N6011用のマニュアルに準じ、Buildあるいはbinの書き込み時に発生したユーザー環境の設定に起因した2つの事例です。
事例-1.
Buildスクリプト内で、GitHubへの問い合わせ処理のステップにてエラー発生
[ 内容 ]: OFS_BUILD_NUMBER環境変数が設定されていない
[ 処置 ]: OFS_BUILD_NUMBERへ任意の数字を設定(”0”を設定)
事例-2.
Build後に作られるbinファイルが3種類あり、どれを書き込むべきか不明
[ 内容 ]:Build後に作られたbinファイルは以下の通り確認できます
$ cd work_x8_2x1x100G_adp/syn/n6000/fim_x8_2x1x100G/adp/syn_top/output_files
$ ls -1 *pacsign*.bin
ofs_top_page0_pacsign_factory.bin
ofs_top_page1_pacsign_user1.bin
ofs_top_page2_pacsign_user2.bin
[ 処置 ]:“ fpgainfo fme “実行リストの 「Boot Page」の項に記載されたファイル(” user1 “)を書き込む。
$ fpgainfo fme
Intel Acceleration Development Platform
Board Management Controller NIOS FW version: 3.2.0
Board Management Controller Build version: 3.2.0
//****** FME ******//
Object Id : 0xF000000
PCIe s:b:d.f : 0000:03:00.0
Vendor Id : 0x8086
Device Id : 0xBCCE
SubVendor Id : 0x8086
SubDevice Id : 0x0000
Socket Id : 0x00
Ports Num : 01
Bitstream Id : 0x501060200000000
Bitstream Version : 5.0.1
Pr Interface Id : af0ba90a-6df0-5f12-8fb5-263d15d98c72
Boot Page : user1
Factory Image Info : b3442faf0237fea4e23ef057af64586b
User1 Image Info : ba740062978c274152402e5c4def51ec
User2 Image Info : a8f39027e12ed8ba5feaf5b154bf5b66
[ 補足 ]:Boot Pageを変更する場合は以下のコマンドを使用する。
rsu fpga -p user1 03:00.0
あとがき
今回は、FPGA動作検証までの記載は割愛し、環境構築までの情報を記載しました。
同じように環境設定でつまずいた方の参考になれば幸いです。