
畳み込みニューラルネットワーク(CNN)のFPGAアクセラレーション
ホワイトペーパー FPGAアクセラレーション of Convolutional Neural Networks 概要 Convolutional Neural Networks(CNN)は、複雑な画像認識問題において非常に有効であることが示されている。
BittWareのLoopbackの例では、いくつかのことを実証しています:
ループバックの機能は、この例の主な焦点ではありません。私たちは、上記の箇条書きされた項目をすべて実証することに重点を置いています。BittWare NICカードやスイッチなどのサードパーティ製デバイスに接続する際、DACケーブルの設定を確認するために使用します。
Loopbackには、処理するフレームを選択するL2フィルターが含まれています。これらのフレームにIPv4パケットが含まれている場合、LoopbackはMAC層とIP層の両方でソースアドレスと宛先アドレスを入れ替えます。LoopbackはARPパケットに応答することができます。これは、サードパーティーのデバイスを特別に設定する必要をなくすために追加されたものです。
ループバックは、1つのQSFPケージで動作し、入力から出力までパケットをループさせます。追加の QSFP ケージは使用されません。
このLoopbackは、スピードグレード2のXilinx VU9Pチップを搭載したBittWare XUP-P3Rボードで設計、テストされました。ループバックは外部メモリを使用しないので、CMACを搭載したBittWare XilinxUltraScale+ チップに移植することができます。
ループバックのFPGAビットストリームには、いくつかのコンポーネントが含まれています。各コンポーネントは、データプレーンとして使用される入力と出力の両方にまとめてAXI4-Streamインターフェイスを備えています。ビットストリームの制御プレーンは、物理PCIeインターフェイスに接続されたAXI4-Liteインターフェイスを使用します。
Loopback は、Xilinx IP Integrator Project として提供されます。いくつかのコンポーネントはVerilogで書かれています。3つは、Verilogを生成するXilinx HLSフローを使用して記述されています。
現在の実装では、IP Integrator の観点から、HLS で書かれた 3 つのコンポーネントを 1 つのコンポーネントにまとめています。しかし、これら 3 つのコンポーネントは、ここでは別々に文書化されています。実際には、これらは 4 つの異なるコンポーネントとして文書化されています。これは、HLS コンポーネントが共通の "パーサライブラリ" を共有しているためで、重複を避けるため、個別にドキュメントを作成します。
哲学的には、リセット時にすべてのコンポーネントが有効になりますが、「最小の害」をもたらすモードで初期化されます。その後、ループバックが正常に動作し始める前に、ソフトウェアがコンポーネントを設定する必要があります。
また、各コンポーネントは、ハードウェアやソフトウェアのデバッグを支援するために、統計レジスタを公開しています。すべての統計レジスタの値が時間的に同期するように、スナップショット信号が含まれています。
ビットストリームのインターフェース幅とクロックスピードは、100ギガビットイーサネットのトラフィックをホストするために選択されました。データプレーンのAXI4-Streamインターフェイスは、512ビット幅です。CMACに触れる部分を除き、このインターフェイスのクロックは300MHzである。フレームメタデータは,AXI TUSER ビットという別のバスで移動し,AXI TLAST がハイのときに有効なデータとなる.
メタデータは、ビットストリーム全体で一貫性がありません。したがって、各コンポーネントに関連する文書には、そのコンポーネントが入力時に期待するメタデータと、出力時に転送するメタデータが記述されています。
ビ ッ ト ス ト リ ーム制御 イ ン タ ーフ ェ イ ス は、AXI4-Lite ス レーブで32 ビ ッ ト 幅です。すべての読み出しと書き込みは32ビットです。バ イ ト 順が重要な場合、 ループバ ッ ク は制御レ ジ ス タ がネ ッ ト ワ ー ク ま たはビ ッ グエンデ ィ ア ン バ イ ト 順でデー タ を保持す る こ と を前提 と し ています。
我々は、コンポーネント自体の記述とは別に、コンポーネントのコントロールプレーンレジスタを1つの場所で文書化しています。相互参照は、ユーザーが 2 つの場所を行き来するのに役立つように存在します。ループバックの制御レジスタに使用されるメモリ マップは、ザイリンクス HLS ツール チェーンの AXI4-Lite インターフェイスの実装要件に大きく影響されます。
AXI の正式な定義は、ザイリンクスの「AXI リファレンスガイド」(https://www.xilinx.com/support/documentation/ip_documentation/ug761_axi_reference_guide.pdf)による。
BittWare Loopback Exampleは、ホストコンピュータに挿入されたPCIeカード上で動作します。BittWare 、そのホストコンピュータがExampleの機能を制御するためのソフトウェアを提供します。この制御ソフトウェアは、ホスト上で動作するPython 3を使用します。
Example のソフトウェアは、BittWare'sBittWorks II Toolkit の上に構築されています。具体的には、BwHILとBmcLibライブラリにPythonバインディングを追加しています。そして、これらのバインディングを、例のビットストリームがPCIeアドレス空間で公開するレジスタを操作するために作成されたPythonコンポーネントのコレクション内で活用します。
また、Loopback Exampleのビットストリームでは、いくつかのハードウェアイベントをPCIeの割り込みに変換しています。これをサポートするために、Loopbackのソフトウェアは、これらの割り込みをPython呼び出しに変換します。
Loopback Exampleビットストリームを使用した、非常に基本的な操作方法を説明します:
$# 最初にToolkitのコマンドラインまたはGUIを使用してPCIeカードをマッピングします。
$ bwconfig--add=usb # デバイス0として最初にUSBにマッピングされます。
$ bwconfig--add=pci # デバイス1と同じカードがPCIeにマッピングされている。
$ python3# python3 の起動
>>> from components.hildev import *.
>>>カード =カード(1)
>>> card.show_stats()# 全コンポーネントの統計情報を表示します。
>>># CMACの最初のコンポーネントの統計情報を、いくつかのオプションを付けて表示する。
>>> card.cmac[0].show_stats(showall=False, doTick=False)
>>> help()
>>> exit()
すべてのPythonコンポーネントは、低レベルメソッドの共通のコレクションをサポートしています。なお、このPythonの実装では、PCIeメモリマップをハードコーディングしていません。代わりにPythonは、利用可能なFPGAビットストリームコンポーネントとそのレジスタ、およびPCIeアドレス空間内のレジスタの位置を定義するJSONデータベースを読み取ります。このJSONデータベースは、Loopback Exampleのドキュメントから自動的に生成されます。
Python API の完全なドキュメントは、BittWare's Developer Site で入手できます。
ローレベルのメソッドは以下の通りです:
利用可能な上位メソッドは、特定のコンポーネントに依存します。しかし、いくつかのメソッドは比較的一般的です:
Loopbackの詳細は、App Noteの無料ダウンロードで入手できますので、以下のフォームから今すぐ入手してください!
このページで紹介するのは、Loopbackのサンプルです。アプリノートには、さらに詳しい情報が掲載されており、しかも無料でダウンロードできます!アプリノート全文のPDFをご希望の方は、フォームにご記入の上、お申し込みください。
"*"は必須項目
ホワイトペーパー FPGAアクセラレーション of Convolutional Neural Networks 概要 Convolutional Neural Networks(CNN)は、複雑な画像認識問題において非常に有効であることが示されている。
高速ネットワークでは、タイムスタンプの作成が困難な場合があります。カードタイミングキットやAtomic Rules IP TimeServoなど、可能な解決策をご紹介します。
White Paper BuildingBittWare's Packet Parser, HLS vs. P4 Implementations OverviewBittWare's SmartNIC Shell andBittWare's Loopback Example の特徴の 1 つは、以下のとおりです。
White Paper Building NVMe Over Fabrics withBittWare FPGA Solutions 概要 Non-Volatile Memory Express(NVMe)プロトコルの登場以来、データセンターの顧客は、NVMeを利用するようになりました。
45 South Main Street, Concord, NH 03301|コンコード、ニューハンプシャー州 603-406-6200 | 連絡先