COLUMN
【Intel® アクセラレーションカード開発日誌 #2】 Intel® アクセラレーションカードってどんなの?
Intel® PAC開封の儀
前回(開発日誌 #1)はIntel® Programmable Acceleration Card(以降Intel® アクセラレーションカードと呼称)の紹介で終わってしまいましたが、この回から実際にIntel® アクセラレーションカードを入手・セッティングして開発を行っていきます。
Intel® アクセラレーションカード内蔵サーバーが弊社にやってきました。
サーバーの機種はDELL EMC PowerEdge R740ラックマウントサーバーです。
ラックマウントなので、幅19インチ(483mm)×高さ2U(高さ90mm)×奥行き715.5mm…でかい。組み込みエンジニアはあまりサーバールームに入らないので新鮮です(図1、図2)。
図1 PowerEdge R740ラックマウントサーバー 正面
図2 PowerEdge R740ラックマウントサーバー 背面
では、カバーを開けてみます(図3)。
図3 PowerEdge R740ラックマウントサーバー カバー開放状態
Intel® アクセラレーションカードを見つけました。ネットワークカードの下のPCI Expressスロットに挿さっています(図4)。なお、青色のレバーはCold Swap対応パーツなので、電源を切っていないと取り外し不可です。
図4 PowerEdge R740ラックマウントサーバーに挿さっているIntel® アクセラレーションカード
背後から見ると、Intel® アクセラレーションカードのQSFPスロットとエアフローの出口が見えます(図5)。
図5 PowerEdge R740ラックマウントサーバーに挿さっているIntel® アクセラレーションカードの背面
Intel® アクセラレーションカードを抜いてみます(図6)(図7)。
Intel® Arria® 10 GX FPGA 搭載版で、FPGAボードらしからぬ美しいケースに入っています。というのも、ボードには空冷ファンがなく、ラックマウントサーバーのエアフローに対応した空冷設計になっているためです。PCI ExpressボードとしてはLow Profile対応で、あまったスペースにはエアダクトが取り付けられています。
図6 Intel® アクセラレーションカードの表面1
図7 Intel® アクセラレーションカードの表面2
裏面もシンプルで綺麗です(図8)。評価ボードはゴテゴテと色々なI/Fがむき出しで付いているものですが、アクセラレーション用途に限った製品だとここまでシンプルになるのかと感心してしまいます。
図8 Intel® アクセラレーションカードの裏面
それでは、筐体に戻して電源を入れてみましょう。
電源をつないで、正面パネル右側のプッシュスイッチを押すと、LEDが光ってサーバーが起動します(図9)。
図9 サーバー起動中のフロントパネル
電源と空冷ファンの轟音とともに画面が表示され、起動プロセスが始まります(図10)。サーバーうるせえ…
図10 サーバー起動中の画面
サーバーのセットアップ
ここからPowerEdge R740ラックマウントサーバーを始めます。Intel® アクセラレーションカードが検証済みのOSは以下の3種類です。
-
Red Hat * Enterprise Linux *(RHEL)7.4、カーネルバージョン3.10
-
CentOS 7.4、カーネルバージョン3.10
-
Ubuntu 16.04、カーネルバージョン4.4
今回はIntel® FPGAの開発も行うので、Intel®のFPGA開発ツールの対応状況が良いRed Hat Enterprise Linuxと互換性がある無償のCentOS 7.4を選びました。CentOSのインストール方法については一般的な方法と変わらず、本稿とは無関係なので割愛します。
Intel®Acceleration Stackのインストール
まずはサーバーPCでIntel® アクセラレーションカードが動作していることを確認できるようにしたいと思います。
Intel® アクセラレーションカードを使用するためのソフトウェア群であるAcceleration Stackをインストールします。Acceleration StackにはIntel® アクセラレーションカードを利用したソフトウェア開発のみが可能なランタイム版と、Intel® アクセラレーションカードによるアクセラレーターを開発可能な開発者版があります。我々も今後はIntel® アクセラレーションカードのAFUの開発を行う予定なので、開発版を導入します。
開発者版でインストールされるのは以下の3つのパッケージです。
-
OPAE SDK version 1.1.2 Production
-
Intel® Quartus® Prime Pro Edition 17.1.1 including SR-IOV license
-
Intel® FPGA SDK for OpenCL* 17.1.1
開発者版である程度のIntel® アクセラレーションカードのハードウェア開発はこれだけで済むようになっています。そのかわり、ダウンロードサイズは18GBにもなります。
Intel®Acceleration Stackのインストール手順は以下のQuick Start Guideに記載されています。この手順に沿って進めていきます。
https://www.intel.co.jp/content/www/jp/ja/programmable/documentation/iyu1522005567196.html
さて、ダウンロードが完了したら、setup.shを実行してインストールを開始します。
いくつかのようなエラーが出ました。
パッケージ python2-jsonschema は利用できません。
パッケージ python2-pip は利用できません。
何もしません
sudo: pip: コマンドが見つかりません
これはepel リポジトリを追加することでインストールできるようになります。RHELでは最初からこのリポジトリが使えるようになっているはずなので、CentOSの場合のみ対応が必要と思われます。
$ yum install epel-release
$ sudo yum install python-pip --enablerepo=epel
$ sudo yum install python2-jsonschema --enablerepo=epel
続いて、以下のエラーも出ます。
エラー: パッケージ: opae-intel-fpga-driver-1.1.2-1.x86_64 (/opae-intel-fpga-driver-1.1.2-1.x86_64)
要求: dkms >= 2.2.0.2
これもepel リポジトリからインストール
$ sudo yum install dkms --enablerepo=epel
インストールが無事完了すると、最後に初期化スクリプトを実行するように指示されます。そして、再起動のたびに環境変数を設定しなくても済むように、この初期化スクリプトをシェル初期化スクリプトから起動するよう促されます。そこで、いつものとおり.bash_profileからinit_env.shを起動するように設定すると、RDP接続でGUIログインできなくなりました。
調べてみると、init_env.shと、そこから呼び出される setup_permissions.sh の中で、なぜかsudoが多用されているため、ログイン処理中にパスワード入力待ちが発生しRDPクライアントがタイムアウトになるようです。sshで接続するとsudoでパスワードが入力可能なのでログインできました。
とりあえずsudoによるパスワードを不要にすることでRDPログイン可能になりましたが、毎回起動させる初期化スクリプトでsudo(によるcpやchmod)を多用する仕様はイケていない気がします。
さて、各種ファイルは以下の通りにインストールされました(図11)。
図11 Acceleration Stackのディレクトリ構成
FPGA driverのインストール
CentOS / RHEL 7.4用のビルド済みバイナリ(RPM)を使ってOPAEフレームワークをインストールします。
インストール後、カーネルモジュールの状況はこのようになりました。
$ sudo lsmod | grep fpga
intel_fpga_pac_iopll 13392 0
intel_fpga_pac_hssi 18347 0
intel_fpga_fme 54120 0
intel_fpga_afu 32062 0
intel_fpga_pci 26681 2 intel_fpga_afu,intel_fpga_fme
fpga_mgr_mod 14693 1 intel_fpga_fme
FPGAインタフェースマネージャー(FIM)の確認
次はIntel® アクセラレーションカード側の確認です。
Acceleration Stackとしてインストールされたfpgainfoというコマンドを使います。
$ sudo fpgainfo fme
の結果、以下の出力が得られました。
Board Management Controller, microcontroller FW version unavailable
Last Power Down Cause: unavailable
Last Reset Cause: unavailable (can’t open)
//****** FME ******//
Object Id | : 0xEF00000 |
PCIe s:b:d:f | : 0000:D8:00:0 |
Device Id | : 0x09C4 |
Socket Id | : 0x00 |
Ports Num | : 01 |
Bitstream Id | : 0x123456789ABCDEF |
Bitstream Version | : 0x557700030201 |
Pr Interface Id | : ce489693-98f0-5f33-946d-560708be108a |
FIM Version (PR Interface ID) によると、このPACカードは 1.0 Production で、対応OPAE ver は 0.13.1以降のようです。
なぜかBoard Management Controller(BMC) Firmwareのバージョンが表示されていません。Firmwareのアップデートが必要と思われます。
BMC Firmwareのアップデート
Intel®Acceleration Stack 1.2からはPCI Express経由でBMC Firmwareのアップデートが可能になったようですが、Intel®Acceleration Stack 1.2付属のBMC Firmwareにアップデートするためには、PCとIntel® アクセラレーションカードをMicro USBケーブルで接続してBittWorks Toolを使って書き換えるという、いかにもFPGAボードという手段が必要になります。
あの先進的な外観のボードに、USBポートなんかあったかな?と思ってよく見ると、裏側にありました(図12)。
図12 Intel® アクセラレーションカードのUSBポート
USBケーブルを繋げた状態でサーバーに戻します(図13)。
図13 USBケーブルを接続したIntel® アクセラレーションカード
BMC Firmwareの書き換えにはBittWorks Toolを使うことになっている。Quick Start Guideでは sudo yum install bw2tk-lite-2018.6.el7.x86_64.rpm でインストールすることになっていますが、このプログラムはepelリポジトリにも無く、Intel®Acceleration Stackでインストールされた形跡もなく、どこから入手したらいいのかわかりませんでした。
正解は、Intel® アクセラレーションカードのサイト( https://www.intel.com/content/www/us/en/programmable/products/boards_and_kits/dev-kits/altera/acceleration-card-arria-10-gx.html )からリンクされている https://www.bittware.com/fpga/intel/boards/pac-arria-10/ からの登録フォームに入力し、BittWareのDeveloper SiteのIDを取得する必要があります。
しかし、BittWareのIDの取得のためにはWeb登録だけでは駄目で、BittWareから送られてくる「END-USER / END-USE STATEMENT」というWordファイルに記入し、ULTIMATE END-USERなどを書いて署名し、pdfで送り返さないといけません。なかなかIntel® アクセラレーションカードの動作確認までたどり着けません。
サインした「END-USER / END-USE STATEMENT」を送ると、一日でメールが帰ってきました。申請したアカウントがアクティブになったようです。
BittWare Developer Site (https://developer.bittware.com/) にログインすると、以下のようなページに行けます。ここから最新のBMC Firmware、BittWorks II Toolkit-Lite、Bootloaderがダウンロード可能です。
図14 BittWare Developer Site
必要なツールとファイルが手に入ったので、以下のサイトを見ながら、インテル®FPGAダウンロード・ケーブルII用ドライバーのインストールを行います。
https://www.intel.com/content/www/us/en/programmable/documentation/iga1446847781805.html#iga1447182646644
その後、udevサーバーの再起動を行います。
$ systemctl restart systemd-udevd
Intel® Quartus® Prime Pro Editionを起動し、Hardware SettingsのCurrently Selected HardwareでIntel FPGA Download Cable II.を選択します。
そして、Quick Start Guideの記載に従い、Firmwareアップデートコマンドを実行します。
$ ./setup_fim_and_bmc.sh -b D8 -d 0 -f 0 -p $OPAE_PLATFORM_ROOT
その結果、いくつかの処理の後、プログレスバーが表示されて、completeまで進みました。
0% 100% Programming 0x39000 bytes…
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
0x39000 bytes written into 0x40000 bytes memory (89.06%).
Part 1 download complete
Power cycle the server
Rerun script to complete the upgrade
しかし、Logの中を見直すと、エラーが出ています。
ERROR Item not found: could not re-open device 0
BittWareのツールで確認すると、確かに、デバイスが見えません。
$ bwconfig –list
Name | Number ID | Location | Status |
(unknown) | 0 | Local USB Device | Installed (New) |
(unknown) | 1 | Local USB Device | Installed (New) |
(unknown) | 2 | Local USB Device | Installed (New) |
(unknown) | 3 | Local USB Device | Installed (New) |
(unknown) | 4 | Local USB Device | Installed (New) |
(unknown) | 5 | Local USB Device | Installed (New) |
しかしながら、もう一度fpgainfoを実行すると、今度はBMC Firmwareのバージョンも表示されましたので、Firmwareは無事に書き換わったようです。
$ sudo fpgainfo fme
Board Management Controller, microcontroller FW version 26889
Last Power Down Cause: POK_CORE
Last Reset Cause: None
//****** FME ******//
Object Id | : 0xED00000 |
PCIe s:b:d:f | : 0000:D8:00:0 |
Device Id | : 0x09C4 |
Socket Id | : 0x00 |
Ports Num | : 01 |
Bitstream Id | : 0x123000200000185 |
Bitstream Version | : 0x55F100030201 |
Pr Interface Id | : 69528db6-eb31-577a-8c36-68f9faa081f6 |
今回はここまでとします。
次回は、いよいよホストからFPGAを動かし、パフォーマンスの測定や、映像処理に用いた場合の処理性能の見積もりなどを行いたいと思います。
おまけ
Intel® アクセラレーションカードにつなげたUSBケーブルを一旦、手持ちのPCに接続して、Windows版のBittWorks II Toolkit-LiteのConfiguration Managerを使ってIntel® アクセラレーションカードの情報を取得してみました(図15)。FPGAのConfiguration Dataを保存するFlash ROMが2系統あるようです。
図15 Intel® アクセラレーションカードのConfiguration (Installed Device)
ボード詳細(図16)。シリアルナンバーは画像では消してあります。
図16 Intel® アクセラレーションカードのConfiguration (Device Properties)
2つのFlash ROMを詳しく見てみます(図17,18)。
焼かれているrpdファイルが異なるのが気になりますが、やはりいずれもver1.0なので、USBケーブル経由でのみアップデート可能なものです。
図17 Flash 0の構成
図18 Flash 1の構成
BittWare Board MonitorではIntel® アクセラレーションカードの現在のステータスが見えます(図19)。
QSPFについては、Intel® アクセラレーションカード上にはソケットだけ実装されており、モジュールが未実装のため値が取得できていません。
図19 Intel® アクセラレーションカードのステータス
個別相談も承っております。下記よりお申し込みください。