zynq dpu v3.1 ip 製品ガイド - xilinx...batch normalization split i p の概要 この dpu ip...

60
Zynq DPU v3.1 製品ガイド PG338 (v3.1) 2019 12 2 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資 料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報 につきましては、必ず最新英語版をご参照ください。

Upload: others

Post on 16-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

Zynq DPU v3.1

製品ガイドPG338 (v3.1) 2019 年 12 月 2 日

この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきましては、必ず最新英語版をご参照ください。

Page 2: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

目次第 1 章: はじめに...................................................................................................................................................... 4機能..................................................................................................................................................................................4IP の概要..........................................................................................................................................................................5

第 2 章: 概要................................................................................................................................................................. 6はじめに.......................................................................................................................................................................... 6開発ツール.......................................................................................................................................................................7DPU を統合したシステム例........................................................................................................................................... 8DNNDK............................................................................................................................................................................9ライセンスおよび注文情報.......................................................................................................................................... 10

第 3 章: 製品仕様.................................................................................................................................................... 11ハードウェア アーキテクチャ......................................................................................................................................11DSP DDR を使用した DPU........................................................................................................................................... 11レジスタ空間.................................................................................................................................................................14割り込み........................................................................................................................................................................ 18

第 4 章: DPU の構成............................................................................................................................................. 19はじめに........................................................................................................................................................................ 19コンフィギュレーション オプション.......................................................................................................................... 20[Advanced] タブ...........................................................................................................................................................24[Summary] タブ........................................................................................................................................................... 26各デバイスの DPU 性能................................................................................................................................................26各モデルの性能............................................................................................................................................................. 27必要な I/O 帯域幅......................................................................................................................................................... 27

第 5 章: クロッキングとリセット...............................................................................................................29はじめに........................................................................................................................................................................ 29

第 6 章: 開発フロー...............................................................................................................................................34MPSoC でのコアのカスタマイズと生成......................................................................................................................34Zynq-7000 デバイスでのコアのカスタマイズおよび生成......................................................................................... 41Vitis 統合設計環境 (IDE) でのコアのカスタマイズおよび生成.................................................................................. 42

第 7 章: サンプル デザイン............................................................................................................................. 46はじめに........................................................................................................................................................................ 46Vivado DPU TRD フロー.............................................................................................................................................. 46Vitis TRD フロー............................................................................................................................................................54

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 2

Page 3: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

付録 A: その他のリソースおよび法的通知.......................................................................................... 57ザイリンクス リソース.................................................................................................................................................57Documentation Navigator およびデザイン ハブ...................................................................................................... 57参考資料........................................................................................................................................................................ 57改訂履歴........................................................................................................................................................................ 58お読みください: 重要な法的通知.................................................................................................................................59

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 3

Page 4: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

第 1 章

はじめにザイリンクス DPU (Deep Learning Processing Unit) は、たたみ込みニューラル ネットワーク (CNN) 向けに最適化されたプログラマブルなエンジンです。エンジンで使用される並列度はデザイン パラメーターであり、ターゲット デバイスとアプリケーションに応じて選択できます。また、高度に最適化された一連の命令が含まれており、VGG、ResNet、 GoogLeNet、YOLO、SSD、MobileNet、FPN など、ほとんどのたたみ込みニューラル ネットワークをサポートします。

機能DPU には次の機能があります。• コンフィギュレーション レジスタおよびステータス レジスタへのアクセス用に 1 つの AXI スレーブ インターフェイス。

• 命令アクセス用に 1 つの AXI マスター インターフェイス。• データ アクセス用にターゲット デバイスに応じて 64 または 128 ビットに構成可能な AXI マスター インターフェイスをサポート。

• チャネルごとに個別の構成が可能。• オプションで割り込み要求生成をサポート。• DPU の主な機能は次のとおり。

○ 構成可能なアーキテクチャ: B512、B800、B1024、B1152、B1600、B2304、B3136、および B4096

○ 最大 3 つまでのコアを設定可能○ Convolution、Deconvolution○ DepthwiseConv

○ Max Pooling

○ AveragePool

○ ReLU、ReLU6、および Leaky ReLU

○ Concat

○ Elementwise-sum

○ Dilation

○ Reorg

○ Fully Connected Layer

第 1 章: はじめに

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 4

Page 5: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

○ Softmax

○ Batch Normalization

○ Split

IP の概要この DPU IP について

コア の概要サポートされるデバイス ファミリ Zynq®-7000 SoC および UltraScale+ MPSoC ファミリサポートされるユーザー インターフェイス メモリ マップド AXI インターフェイス

リソース 第 4 章: DPU の構成 を参照コア に含まれるもの

デザイン ファイル 暗号化済み RTL

サンプル デザイン Verilog

制約ファイル ザイリンクス デザイン制約ファイル (XDC)

サポートされるソフトウェア ドライバー PetaLinux に付属テスト済みデザイン フロー

デザイン入力 Vivado® Design Suite

シミュレーション N/A

合成 Vivado® 合成サポート

すべての Vivado IP 変更ログ マスター Vivado IP 変更ログ: 72775

ザイリンクス サポート ウェブ ページ注記:1. Linux OS およびドライバー サポートの情報は、DPU TRD または DNNDK ユーザー ガイドを参照してください。2. ターゲット デバイスが Zynq-7000 SoC の場合は、第 6 章: 開発フロー に記載されている制限事項を参照してください。3. サポートされているツールのバージョンは、『Vivado Design Suite ユーザー ガイド: リリース ノート、インストール、およ

びライセンス』 (UG973) を参照してください。4. DPU は、DNNC コンパイラが生成する命令によって駆動されます。ターゲット NN、DPU ハードウェア アーキテクチャ、

または AXI データ幅が変更された場合、DPU 命令を含む関連する .elf ファイルを再生成する必要があります。

第 1 章: はじめに

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 5

Page 6: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

第 2 章

概要はじめに

ザイリンクス DPU (Deep Learning Processing Unit) は、たたみ込みニューラル ネットワーク (CNN) 向けに最適化されたプログラマブルなエンジンです。DPU には、高性能スケジューラ モジュール、ハイブリッド コンピューティングアレイ モジュール、命令フェッチ ユニット モジュール、グローバル メモリ プール モジュールがあります。DPU は、多くのたたみ込みニューラル ネットワークを効率よく実行することに特化した命令セットを使用します。運用されているたたみ込みニューラル ネットワークの例としては、VGG、ResNet、GoogLeNet、YOLO、SSD、MobileNet、FPN などがあります。DPU IP は、一部の Zynq®-7000 SoC または Zynq® UltraScale+™ MPSoC デバイスのプログラマブル ロジック (PL) に実装し、プロセッシング システム (PS) と直接接続できます。DPU には、ニューラル ネットワークを実行するための命令と、入力イメージおよび一時的なデータと出力データを格納するアクセス可能なメモリ位置が必要です。さらに、割り込み処理とデータ転送調整のために、アプリケーション プロセッシング (APU) で実行するプログラムも必要です。次に、DPU の最上位ブロック図を示します。

第 2 章: 概要

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 6

Page 7: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

図 1: DPU の最上位ブロック図

APU

RAM

High Speed Data Tube

DPU

High Performance

Scheduler

Instruction Fetch Unit Global Memory Pool

Hybrid Computing Array

PE PE PE PE

X22327-072219

説明:

• APU - アプリケーション プロセッシング ユニット• PE - プロセッシング エンジン• DPU - 深層学習プロセッシング ユニット• RAM - ランダム アクセス メモリ

開発ツールDPU をプロジェクトに統合するには、ザイリンクス Vivado® Design Suite が必要です。Vivado Design Suite 2019.1またはそれ以降のバージョンを推奨します。プロジェクトに古いバージョンの Vivado を使用する必要がある場合は、ザイリンクス販売代理店にお問い合わせください。Vitis フローで DPU を統合するには、Vitis 統合ソフトウェア プラットフォーム 2019.2 が必要です。

第 2 章: 概要

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 7

Page 8: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

デバイス リソースDPU のロジック リソース使用量は、ザイリンクス UltraScale+™ MPSoC と Zynq®-7000 デバイスでスケーラブルに対応できます。リソース使用量の詳細は、「DPU の構成」を参照してください。

関連情報DPU の構成

DPU の開発フローDPU には、ザイリンクス ディープ ニューラル ネットワーク開発キット (DNNDK) ツールチェーンに含まれるデバイス ドライバーが必要です。開発者リソースはザイリンクス ウェブサイト (https://japan.xilinx.com/products/design-tools/ai-inference/ai-developer-hub.html#edge) から無償で入手できます。DNNDK ツールで DPU を使用する基本的な手順は、『DNNDK ユーザー ガイド』 (UG1327) で説明しています。基本的な開発フローは、次の図のとおりです。まず、Vivado を使用してビットストリームを生成します。次に、ビットストリームをターゲット ボードにダウンロードして、DPU ドライバーをインストールします。DPU ドライバーおよび依存関係のあるライブラリのインストール手順は、『DNNDK ユーザー ガイド』 (UG1327) を参照してください。

図 2: 基本的な開発フロー

Hardware Platform

DPU Driver/XRT

DNNDK Library

DNNDK APIs

Vivado/Vitis

DPU IP

Example NN Inference Application

Third Party NN Inference Application

bitfile

X22328-110419

DPU を統合したシステム例次の図に、ザイリンクス UltraScale+™ MPSoC にカメラ入力を接続したシステム例のブロック図を示します。システムに統合された DPU は AXI インターコネクト経由で、イメージ分類、物体検出、セマンティック セグメンテーションなどの深層学習の推論タスクを実行します。

第 2 章: 概要

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 8

Page 9: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

図 3: DPU を統合したシステム例

DPUCamera

AXI Interconnect

Controller DDR

Arm Cortex-A53

Arm Cortex

-R5

DisplayPortUSB3.0

SATA3.1PCIe Gen2

GigEUSB2.0UART

SPIQuad SPI

NANDSD

demosaic gamma Color_conversion

DMA AXI Interconnect

AXI Interconnect

MIPICSI2

AXI Interconnect

MIPI

CSI2

X22329-081919

DNNDKDNNDK (ディープ ニューラル ネットワーク開発キット) は、DPU を使用した推論向けのフルスタック深層学習ツールチェーンです。次の図に示すように、DNNDK はディープ コンプレッション ツール (DECENT)、ディープ ニューラル ネットワークコンパイラ (DNNC)、ニューラル ネットワーク ランタイム (N2Cube)、および DPU プロファイラーで構成されます。

図 4: DNNDK ツールチェーンDECENT N2Cube

DNNC Profiler

OS

APU DPU

X22330-072619

第 2 章: 概要

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 9

Page 10: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

DPU 命令は DNNC を使用してオフラインで生成され、命令ファイルの拡張子は .elf になります。命令は、DPU アーキテクチャ、ターゲット ニューラル ネットワーク、および AXI データ幅に関連付けられます。これらの設定を変更した場合、それに応じて命令ファイルを再生成する必要があります。次の図に、DPU を使用してターゲット ハードウェア プラットフォーム上で深層学習アプリケーションを実行する際の階層を示します。

図 5: アプリケーション実行階層

Industry-standard Libraries Loader

Operating System

APU

Deep Learning App (DPU-accelerated)

Profiler Library

DPU Driver

DPU

User Space

Kernel Space

Hardware Platform

X22331-081919

DNNDK ツールは、DPU でのニューラル ネットワークの運用に必要です。最新のザイリンクス DNNDK_V3.1 パッケージは、https://japan.xilinx.com/products/design-tools/ai-inference/ai-developer-hub.html#edge からダウンロードできます。DNNDK v3.1 パッケージには Ubuntu 14.04、16.04、および 18.04 の DNNC バイナリが含まれ、それぞれxilinx_dnndk_v3.1/host_x86/pkgs/ubuntu14.04/、xilinx_dnndk_v3.1/host_x86/pkgs/ubuntu16.04/、xilinx_dnnk_v3.1/host_x86/pkgs/ubuntu18.04/ にあります。

ライセンスおよび注文情報このザイリンクス LogiCORE™ IP モジュールは、ザイリンクス エンドユーザー ライセンス規約の下、ザイリンクスVivado® Design Suite で追加コストなしで提供されています。その他のザイリンクス LogiCORE™ IP モジュールに関する情報は、ザイリンクス IP コアのページから入手できます。その他のザイリンクス LogiCORE IP モジュールおよびツールの価格および提供状況については、お近くのザイリンクス販売代理店にお問い合わせください。

第 2 章: 概要

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 10

Page 11: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

第 3 章

製品仕様ハードウェア アーキテクチャ

次の図に、DPU のハードウェア アーキテクチャの詳細を示します。起動後、DPU はオフチップ メモリから命令をフェッチし、演算エンジンの動作を制御します。命令は、高度な最適化機能を持つ DNNC によって生成されます。オンチップ メモリを入力データ、中間データ、および出力データのバッファーとして使用することで、高スループットと高い効率性を実現します。メモリ帯域幅を抑えるため、なるべく多くのデータを再利用します。演算エンジンには、多段パイプライン デザインを使用しています。プロセッシング エレメント (PE) はザイリンクス デバイスに含まれる乗算器、加算器、アキュムレータなどの構築ブロックを最大限に利用します。

図 6: DPU のハードウェア アーキテクチャ

Inst

ruct

ion

Sche

dule

r

CPU (DNNDK) Memory Controller

Bus

Fetcher

Decoder

Dispatcher

On-

Chip

Buf

fer

Cont

rolle

rData Mover

On-Chip BRAM

BRAM Reader/Writer

Com

putin

g En

gine

Conv

En

gine

Mis

c En

gine

PE PE PE

Processing System (PS)

Programmable Logic (PL)

Off-Chip Memory

X22332-072619

DSP DDR を使用した DPUデバイスで達成可能な性能を高めるためには、DSP の DDR 手法を使用します。したがって、DPU には 2 つの入力クロックが必要です。汎用ロジック用に 1 つ、そして DSP スライス用に周波数が 2 倍の入力クロックが必要です。次の図に、DSP の DDR 手法を使用しない DPU と使用した場合の DPU アーキテクチャの違いを示します。

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 11

Page 12: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

注記: 特に記載のない限り、この資料で DPU アーキテクチャと称しているものはすべて DSP の DDR 手法を使用したDPU を指しています。

図 7: DSP DDR を使用しない場合の DPU と使用した場合の DPU の違い

IMG ram

IMG ram

WGT ram

A

D

B B

RES

+

×

DSP48 Slice

A+D

M

clk1x

IMG ram

IMG ram

WGT ram

A

D

B

+

×

DSP48 Slice

A+D

M

clk2x

WGT ram

OUT1

+

ADLY

DDLY

B0Async

B1Async

DAsync

AAsync

BBSEL

PCIN

PPCOUT

PCOUT

RES0

DLY

RES0

clk1x clk1x

OUT0

RES1

X22333-081919

ポートの説明次の図に、コアの最上位インターフェイスを示します。

第 3 章: 製品仕様

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 12

Page 13: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

図 8: コアのポート

次の表に、DPU の I/O 信号とその説明を示します。表 1: DPU の信号の説明

信号名 インターフェイス タイプ 幅 I/O 説明S_AXI メモリ マップド AXI スレーブ インターフェイス 32 I/O レジスタ アクセス用の 32 ビット メモリ マップド AXI インターフェイス。s_axi_aclk クロック 1 I S_AXI 用の AXI クロック入力。s_axi_aresetn リセット 1 I S_AXI のリセット (アクティブ Low)。dpu_clk_2x クロック 1 I DPUの DSP ブロックで使用する入力クロック。周波数は m_axi_dpu_aclkの 2 倍です。dpu_2x_resetn リセット 1 I DSP ブロックのリセット (アクティブ

Low)。m_axi_dpu_aclk クロック 1 I DPU の汎用ロジックで使用する入力クロック。m_axi_dpu_aresetn リセット 1 I DPU の汎用ロジックのリセット (アクティブ Low)。DPUx_M_AXI_INSTR メモリ マップド AXI マスター インターフェイス 32 I/O DPU の命令に使用する 32 ビット メモリ マップド AXI インターフェイス。DPUx_M_AXI_DATA0 メモリ マップド AXI マスター インターフェイス 64 または

128I/O DPU データに使用する 128 ビット メモリ マップド AXI インターフェイス。

DPUx_M_AXI_DATA1 メモリ マップド AXI マスター インターフェイス 64 または128

I/O DPU データに使用する 128 ビット メモリ マップド AXI インターフェイス。dpu_interrupt 割り込み 1 ~ 3 O DPU からの割り込み出力 (アクティブ

High)。データ幅は、DPU コアの数によって決まります。SFM_M_AXI (オプション) メモリ マップド AXI マスター インターフェイス 128 I/O softmax データに使用する 128 ビットメモリ マップド AXI インターフェイス。sfm_interrupt (オプション) 割り込み 1 O softmax モジュールからの割り込み出力 (アクティブ High)。

第 3 章: 製品仕様

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 13

Page 14: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

表 1: DPU の信号の説明 (続き)

信号名 インターフェイス タイプ 幅 I/O 説明dpu_2x_clk_ce (オプション) クロック イネーブル 1 O DPU 2x クロック ゲーティングが有効な場合に、入力 DPU 2x クロックを制御するクロック イネーブル信号。注記:1. softmax インターフェイスは、DPU の softmax オプションが有効になっている場合にのみ現れます。

レジスタ空間DPU IP は、レジスタをプログラマブル ロジックに実装します。次の表に DPU IP のレジスタを示します。これらのレジスタには、S_AXI インターフェイス経由で APU からアクセスできます。

reg_dpu_resetDPU IP に統合されたすべての DPU コアのリセットを制御します。このレジスタの下位 3 ビットで、最大 3 つのDPU コアのリセットを制御します。これらのリセット信号はいずれもアクティブ High です。次の表にreg_dpu_reset の詳細を示します。表 2: reg_dpu_reset

レジスタ アドレス オフセット 幅 タイプ 説明reg_dpu_reset 0x004 32 R/W [n] – DPUコア コアの n リセット

reg_dpu_isrDPU IP に統合されたすべての DPU コアの割り込みステータスを表します。このレジスタの下位 3 ビットで、最大 3つの DPU コアの割り込みステータスを示します。次の表に reg_dpu_irq の詳細を示します。表 3: reg_dpu_isr

レジスタ アドレス オフセット 幅 タイプ 説明reg_dpu_isr 0x608 32 R [n] – DPUコアの n 割り込みステータス

reg_dpu_startDPUコアの開始信号です。各 DPUコアに 1 つずつ開始レジスタがあります。次の表に reg_dpu_start の詳細を示します。表 4: reg_dpu_start

レジスタ アドレス オフセット 幅 タイプ 説明reg_dpu0_start 0x220 32 R/W DPU core0 開始信号

第 3 章: 製品仕様

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 14

Page 15: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

表 4: reg_dpu_start (続き)

レジスタ アドレス オフセット 幅 タイプ 説明reg_dpu1_start 0x320 32 R/W DPU core1 開始信号reg_dpu2_start 0x420 32 R/W DPU core2 開始信号

reg_dpu_instr_addrDPUコアの命令アドレスを示すために使用します。各 DPUコアには eg_dpu_instr_addr レジスタがあります。次の表に reg_dpu_instr_addr の詳細を示します。表 5: reg_dpu_instr_addr

レジスタ アドレス オフセット 幅 タイプ 説明reg_dpu0_instr_addr 0x20C 32 R/W 外部メモリに格納した DPU core0 命令の開始アドレス。reg_dpu1_instr_addr 0x30C 32 R/W 外部メモリに格納した DPU core1 命令の開始アドレス。reg_dpu2_instr_addr 0x40C 32 R/W 外部メモリに格納した DPU core2 命令の開始アドレス。

reg_dpu_base_addr各 DPU の入力イメージとパラメーターの外部メモリ アドレスを示すために使用します。DPU のベース アドレスの幅は 40 ビットで、最大 1TB のアドレス空間をサポートできます。ただしレジスタはすべて 32 ビット幅のため、40ビット幅のベース アドレスを表すには 2 つのレジスタが必要です。reg_dpu0_base_addr0_l は DPU コア 0 のベースアドレス 0 の下位 32 ビットを表し、reg_dpu0_base_addr0_h は DPU コア 0 のベース アドレス 0 の上位 8 ビットを表します。DPU ベース アドレスのグループは各 DPUコアに対して 8 つあり、最大で 3 つの DPU コアに対して 24 の DPU ベース アドレス グループがあります。次の表に reg_dpu_base_addr の詳細を示します。表 6: reg_dpu_base_addr

レジスタ アドレス オフセット 幅 タイプ 説明reg_dpu0_base_addr0_l 0x224 32 R/W DPU コア 0 のベース アドレス 0 の下位 32ビット。reg_dpu0_base_addr0_h 0x228 32 R/W このレジスタの下位 8 ビットで、DPU コア 0のベース アドレス 0 の上位 8 ビットを表します。reg_dpu0_base_addr1_l 0x22C 32 R/W DPU コア 0 のベース アドレス 1 の下位 32ビット。reg_dpu0_base_addr1_h 0x230 32 R/W このレジスタの下位 8 ビットで、DPU コア 0のベース アドレス 1 の上位 8 ビットを表します。reg_dpu0_base_addr2_l 0x234 32 R/W DPU コア 0 のベース アドレス 2 の下位 32ビット。

第 3 章: 製品仕様

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 15

Page 16: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

表 6: reg_dpu_base_addr (続き)

レジスタ アドレス オフセット 幅 タイプ 説明reg_dpu0_base_addr2_h 0x238 32 R/W このレジスタの下位 8 ビットで、DPU コア 0のベース アドレス 2 の上位 8 ビットを表します。reg_dpu0_base_addr3_l 0x23C 32 R/W DPU コア 0 のベース アドレス 3 の下位 32ビット。reg_dpu0_base_addr3_h 0x240 32 R/W このレジスタの下位 8 ビットで、DPU コア 0のベース アドレス 3 の上位 8 ビットを表します。reg_dpu0_base_addr4_l 0x244 32 R/W DPU コア 0 のベース アドレス 4 の下位 32ビット。reg_dpu0_base_addr4_h 0x248 32 R/W このレジスタの下位 8 ビットで、DPU コア 0のベース アドレス 4 の上位 8 ビットを表します。reg_dpu0_base_addr5_l 0x24C 32 R/W DPU コア 0 のベース アドレス 5 の下位 32ビット。reg_dpu0_base_addr5_h 0x250 32 R/W このレジスタの下位 8 ビットで、DPU コア 0のベース アドレス 5 の上位 8 ビットを表します。reg_dpu0_base_addr6_l 0x254 32 R/W DPU コア 0 のベース アドレス 6 の下位 32ビット。reg_dpu0_base_addr6_h 0x258 32 R/W このレジスタの下位 8 ビットで、DPU コア 0のベース アドレス 6 の上位 8 ビットを表します。reg_dpu0_base_addr7_l 0x25C 32 R/W DPU コア 0 のベース アドレス 7 の下位 32ビット。reg_dpu0_base_addr7_h 0x260 32 R/W このレジスタの下位 8 ビットで、DPU コア 0のベース アドレス 7 の上位 8 ビットを表します。reg_dpu1_base_addr0_l 0x324 32 R/W DPU コア 1 のベース アドレス 0 の下位 32ビット。reg_dpu1_base_addr0_h 0x328 32 R/W このレジスタの下位 8 ビットで、DPU コア 1のベース アドレス 0 の上位 8 ビットを表します。reg_dpu1_base_addr1_l 0x32C 32 R/W DPU コア 1 のベース アドレス 1 の下位 32ビット。reg_dpu1_base_addr1_h 0x330 32 R/W このレジスタの下位 8 ビットで、DPU コア 1のベース アドレス 1 の上位 8 ビットを表します。reg_dpu1_base_addr2_l 0x334 32 R/W DPU コア 1 のベース アドレス 2 の下位 32ビット。reg_dpu1_base_addr2_h 0x338 32 R/W このレジスタの下位 8 ビットで、DPU コア 1のベース アドレス 2 の上位 8 ビットを表します。reg_dpu1_base_addr3_l 0x33C 32 R/W DPU コア 1 のベース アドレス 3 の下位 32ビット。reg_dpu1_base_addr3_h 0x340 32 R/W このレジスタの下位 8 ビットで、DPU コア 1のベース アドレス 3 の上位 8 ビットを表します。reg_dpu1_base_addr4_l 0x344 32 R/W DPU コア 1 のベース アドレス 4 の下位 32ビット。

第 3 章: 製品仕様

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 16

Page 17: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

表 6: reg_dpu_base_addr (続き)

レジスタ アドレス オフセット 幅 タイプ 説明reg_dpu1_base_addr4_h 0x348 32 R/W このレジスタの下位 8 ビットで、DPU コア 1のベース アドレス 4 の上位 8 ビットを表します。reg_dpu1_base_addr5_l 0x34C 32 R/W DPU コア 1 のベース アドレス 5 の下位 32ビット。reg_dpu1_base_addr5_h 0x350 32 R/W このレジスタの下位 8 ビットで、DPU コア 1のベース アドレス 5 の上位 8 ビットを表します。reg_dpu1_base_addr6_l 0x354 32 R/W DPU コア 1 のベース アドレス 6 の下位 32ビット。reg_dpu1_base_addr6_h 0x358 32 R/W このレジスタの下位 8 ビットで、DPU コア 1のベース アドレス 6 の上位 8 ビットを表します。reg_dpu1_base_addr7_l 0x35C 32 R/W DPU コア 1 のベース アドレス 7 の下位 32ビット。reg_dpu1_base_addr7_h 0x360 32 R/W このレジスタの下位 8 ビットで、DPU コア 1のベース アドレス 7 の上位 8 ビットを表します。reg_dpu2_base_addr1_l 0x42C 32 R/W DPU コア 2 のベース アドレス 1 の下位 32ビット。reg_dpu2_base_addr1_h 0x430 32 R/W このレジスタの下位 8 ビットで、DPU コア 2のベース アドレス 1 の上位 8 ビットを表します。reg_dpu2_base_addr2_l 0x434 32 R/W DPU コア 2 のベース アドレス 2 の下位 32ビット。reg_dpu2_base_addr2_h 0x438 32 R/W このレジスタの下位 8 ビットで、DPU コア 2のベース アドレス 2 の上位 8 ビットを表します。reg_dpu2_base_addr3_l 0x43C 32 R/W DPU コア 2 のベース アドレス 3 の下位 32ビット。reg_dpu2_base_addr3_h 0x440 32 R/W このレジスタの下位 8 ビットで、DPU コア 2のベース アドレス 3 の上位 8 ビットを表します。reg_dpu2_base_addr4_l 0x444 32 R/W DPU コア 2 のベース アドレス 4 の下位 32ビット。reg_dpu2_base_addr4_h 0x448 32 R/W このレジスタの下位 8 ビットで、DPU コア 2のベース アドレス 4 の上位 8 ビットを表します。reg_dpu2_base_addr5_l 0x44C 32 R/W DPU コア 2 のベース アドレス 5 の下位 32ビット。reg_dpu2_base_addr5_h 0x450 32 R/W このレジスタの下位 8 ビットで、DPU コア 2のベース アドレス 5 の上位 8 ビットを表します。reg_dpu2_base_addr6_l 0x454 32 R/W DPU コア 2 のベース アドレス 6 の下位 32ビット。reg_dpu2_base_addr6_h 0x458 32 R/W このレジスタの下位 8 ビットで、DPU コア 2のベース アドレス 6 の上位 8 ビットを表します。reg_dpu2_base_addr7_l 0x45C 32 R/W DPU コア 2 のベース アドレス 7 の下位 32ビット。

第 3 章: 製品仕様

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 17

Page 18: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

表 6: reg_dpu_base_addr (続き)

レジスタ アドレス オフセット 幅 タイプ 説明reg_dpu2_base_addr7_h 0x460 32 R/W このレジスタの下位 8 ビットで、DPU コア 2のベース アドレス 7 の上位 8 ビットを表します。

割り込みDPU は、タスクの完了を通知する割り込みを生成します。DPU コア 0 の DPU タスクが開始すると、reg_dpu0_startが High になります。タスクが完了すると、DPU が割り込みを生成し、reg_dpu_isr のビット 0 が 1 にセットされます。reg_dpu_isr のどのビットがセットされるかは、DPU コアの番号ごとに決まっています。たとえば DPU コア 1 がタスクを完了し、DPUコア 0 がまだタスクを実行中の場合、reg_dpu_isr には 2’b10 が含まれます。dpu_interrupt 信号の幅は、DPU コアの数によって決まります。DPU_NUM パラメーターを 2 に設定すると、DPUIP には 2 つの DPU コアが含まれ、dpu_interrupt 信号の幅は 2 となります。この場合、下位ビットが DPUコア 0 の割り込みを表し、上位ビットが DPU コア 1 の割り込みを表します。DPU と PS の割り込み接続は、デバイス ツリー ファイルに記述されています。このファイルには、PS に接続されたDPU の割り込み番号が示されています。デバイス ツリー ファイルと Vivado の指定値が一致している場合は、任意の割り込みピンを使用できます。次の図に、推奨する接続を示します。

図 9: DPU 割り込みの推奨接続

注記:

1. softmax オプションが有効の場合、デバイス ツリーの記述に従って softmax 割り込みを PS に正しく接続する必要があります。

2. irq7 ~ irq0 が pl_ps_irq0[7:0] に対応します。3. irq15 ~ irq8 が pl_ps_irq1[7:0] に対応します。

第 3 章: 製品仕様

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 18

Page 19: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

第 4 章

DPU の構成はじめに

DPU IP には、リソース使用量を最適化したり異なる機能をカスタマイズしたりするためのユーザー設定可能なパラメーターがあります。使用可能なプログラマブル ロジック リソースの量に応じて、DSP スライス、LUT、ブロックRAM、および UltraRAM の使用量を設定できます。チャネル拡張、AveragePool、DepthwiseConv、softmax などの追加機能のオプションもあります。さらに、1 つの DPU IP にインスタンシエートする DPU コアの数を指定するオプションもあります。次の表に、DPU でサポートされるディープ ニューラル ネットワークと関連パラメーターを示します。表 7: DPU でサポートされる DNN の機能とパラメーター

機能 説明Convolution カーネル サイズ W: 1 ~ 16、H: 1 ~ 16

ストライド W: 1 ~ 4、H: 1 ~4

パディング_w 1: kernel_w - 1

パディング_h 1: kernel_h - 1

入力サイズ 任意の値入力チャネル 1 ~ 256 * channel_parallel

出力チャネル 1 ~ 256 * channel_parallel

アクティベーション ReLU、LeakyReLU、または ReLU6

ディレーション dilation * input_channel ≤ 256 * channel_parallel &&stride_w == 1 && stride_h == 1

Depthwise Convolution カーネル サイズ W: 1 ~ 16、H: 1 ~ 16

ストライド W: 1 ~ 4、H: 1 ~4

パディング_w 1: kernel_w - 1

パディング_h 1: kernel_h - 1

入力サイズ 任意の値入力チャネル 1 ~ 256 * channel_parallel

出力チャネル 1 ~ 256 * channel_parallel

アクティベーション ReLU または ReLU6

ディレーション dilation * input_channel ≤ 256 * channel_parallel &&stride_w == 1 && stride_h == 1

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 19

Page 20: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

表 7: DPU でサポートされる DNN の機能とパラメーター (続き)

機能 説明Deconvolution カーネル サイズ W: 1 ~ 16、H: 1 ~ 16

ストライド_w stride_w * output_channel ≤ 256 * channel_parallel

ストライド_h 任意の値パディング_w 1: kernel_w - 1

パディング_h 1: kernel_h - 1

入力サイズ 任意の値入力チャネル 1 ~ 256 * channel_parallel

出力チャネル 1 ~ 256 * channel_parallel

アクティベーション ReLU または LeakyReLU

Max Pooling カーネル サイズ W: 1 ~ 8、H: 1 ~ 8

ストライド W: 1 ~ 4、H: 1 ~4

パディング W: 1 ~ 4、H: 1 ~4

Elementwise-sum 入力チャネル 1 ~ 256 * channel_parallel

入力サイズ 任意の値Concat 出力チャネル 1 ~ 256 * channel_parallel

Reorg ストライド stride * stride * input_channel ≤ 256 * channel_parallel

FC 入力チャネル Input_channel ≤ 2048 * channel_parallel

出力チャネル 任意の値注記:1. パラメーター channel_parallel は、DPU のアーキテクチャによって決まります。たとえば、B1152 の channel_parallel は

12 で、B4096 の channel_parallel は 16 です ( 「コンフィギュレーション オプション」にある「各たたみ込みアーキテクチャの並列度」の表を参照)。

2. ニューラル ネットワークでは、FC レイヤーが Flatten レイヤーに接続される場合があります。DNNC は、Flatten+FC をグローバル CONV2D レイヤーに自動で結合するため、CONV2D のカーネル サイズは Flatten レイヤーの入力特徴マップのサイズとちょうど同じになります。したがって、入力特徴マップのサイズは CONV のカーネル サイズ制限を超えることができません。これを超えてしまうと DNNC が正しくコンパイルされません。この制限条件は、Flatten+FC の場合にのみ適用されます。今後のリリースでは最適化される予定です。

関連情報コンフィギュレーション オプション

コンフィギュレーション オプションDPU は、DPU コアの数、たたみ込みアーキテクチャ、DSP カスケード、DSP 使用量、UltraRAM 使用量のオプションを設定して構成できます。これらのオプションにより、DSP スライス、LUT、ブロック RAM、および UltraRAM の使用量を設定できます。次の図に、DPU のコンフィギュレーション ページを示します。

第 4 章: DPU の構成

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 20

Page 21: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

図 10: DPU のコンフィギュレーション – [Arch] タブ

• [Number of DPU Core]: 1 つの DPU IP で最大 3 つのコアを選択できます。複数の DPU コアを使用すると、より高い性能が得られますが、使用するプログラマブル ロジック リソースも多くなります。4 つ以上のコアが必要な場合は、ザイリンクス販売代理店にお問い合わせください。

• [Arch of DPU]: DPU IP は、たたみ込みアーキテクチャを選択できます。このアーキテクチャは、たたみ込みユニットの並列度に関係します。DPU IP のアーキテクチャには、B512、B800、B1024、B1152、B1600、B2304、B3136、および B4096 があります。DPU のたたみ込みアーキテクチャには、ピクセル並列度、入力チャネル並列度、出力チャネル並列度の 3 つの次元の並列度があります。入力チャネル並列度は、常に出力チャネル並列度と同じになります (前表のchannel_parallel と同じ)。必要なプログラマブル ロジック リソースは、アーキテクチャによって異なります。大規模なアーキテクチャの方が性能は高くなりますが、使用するリソース量も多くなります。次の表に、各アーキテクチャの並列度を示します。表 8: 各たたみ込みアーキテクチャの並列度

たたみ込みアーキテクチャ ピクセル並列度 (PP) 入力チャネル並列度(ICP)

出力チャネル並列度(OCP)

ピーク OPS (1 クロックあたりの演算実行回数)

B512 4 8 8 512

B800 4 10 10 800

B1024 8 8 8 1024

B1152 4 12 12 1150

B1600 8 10 10 1600

B2304 8 12 12 2304

B3136 8 14 14 3136

第 4 章: DPU の構成

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 21

Page 22: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

表 8: 各たたみ込みアーキテクチャの並列度 (続き)

たたみ込みアーキテクチャ ピクセル並列度 (PP) 入力チャネル並列度(ICP)

出力チャネル並列度(OCP)

ピーク OPS (1 クロックあたりの演算実行回数)

B4096 8 16 16 4096

注記:1. たたみ込みアレイは、1 クロック サイクルで乗算と累算を実行します。これらは 2 つの演算としてカウントされます。

したがって、ピーク OPS = PP*ICP*OCP*2 です。

• [RAM Usage]: 重み、バイアス、および中間の各機能は、オンチップ メモリにバッファーされます。オンチップ メモリは RAM で構成され、BRAM および UltraRAM としてインスタンシエートできます。[RAM Usage] で、DPUアーキテクチャで使用されるオンチップ メモリの合計を指定します。ここでの設定は DPU IP 内のすべての DPUコアに適用されます。[RAM Usage] を [High] に設定すると、オンチップ メモリ ブロックが大きくなり、DPU は中間データをより柔軟に処理できるようになります。また、この設定により各 DPUコアのパフォーマンスがより高くなります。次の表に、各アーキテクチャで使用される BRAM36K ブロックの数を、[RAM Usage] が [Low] と[High] の場合に分けて示します。注記: DPU 命令セットは、[RAM Usage] の設定ごとに異なります。[RAM Usage] の設定を変更した場合、それに応じて DPU 命令ファイルを再生成する必要があります。結果は、[DepthwiseConv] を有効にした DPU を使用した場合のものです。表 9: 各 DPUコア コアで使用される BRAM36K ブロックの数 (DPU アーキテクチャ別)

DPU アーキテクチャ [RAM Usage] = [Low] [RAM Usage] = [High]

B512 (4x8x8) 73.5 89.5

B800 (4x10x10) 91.5 109.5

B1024 (8x8x8) 105.5 137.5

B1152 (4x12x12) 123 145

B1600 (8x10x10) 127.5 163.5

B2304 (8x12x12) 167 211

B3136 (8x14x14) 210 262

B4096 (8x16x16) 257 317.5

• [Channel Augmentation]: チャネル拡張は、使用可能なチャネル並列度をはるかに下回る数の入力チャネルを処理する場合に、DPU の効率を向上させるために使用するオプション機能です。たとえば、ほとんどの CNN の最初のレイヤーの入力チャネルは 3 つであり、使用可能なすべてのハードウェア チャネルを完全に利用していません。ただし、入力チャネルの数がチャネル並列度よりも多い場合、チャネル拡張を有効にしても違いはありません。つまり、チャネル拡張を有効にすると、ほとんどの CNN において全体的な効率を向上させることができますが、追加のロジック リソースが必要となります。次の表に、チャネル拡張で使用される追加の LUT リソースを示します。この統計は参照用です。表 10: チャネル拡張を有効にした DPU で必要となる追加の LUT 数

DPU アーキテクチャ チャネル拡張を有効にした場合に必要となる追加の LUT 数B1024 (8x8x8) 2670

B1152 (4x12x12) 2189

B4096 (8x16x16) 1550

B512 (4x8x8) 1475

B800 (4x10x10) 2796

第 4 章: DPU の構成

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 22

Page 23: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

表 10: チャネル拡張を有効にした DPU で必要となる追加の LUT 数 (続き)

DPU アーキテクチャ チャネル拡張を有効にした場合に必要となる追加の LUT 数B1600 (8x10x10) 2832

B2304 (8x12x12) 1697

B3136 (8x14x14) 1899

• [DepthwiseConv]: 標準のたたみ込みでは、各入力チャネルは特定の 1 つのカーネルで演算を実行する必要があり、結果は、すべてのチャネルの結果を合計したものとなります。depthwise たたみ込みは、空間方向のたたみ込みとチャネル方向のたたみ込みという 2 つのステップで実行されます。次の図の左側に示すように、空間方向のたたみ込みは各機能マップに対して個別に実行されます。次のステップでは、チャネル方向のたたみ込みが実行されます。これは、カーネル サイズが 1x1 の標準のたたみ込みと同義です。depthwise たたみ込みの並列度は、ピクセル並列度の半分となります。

図 11: 空間方向のたたみ込みとチャネル方向のたたみ込み

12

12

3

55 1

11 8

83

Three 5×5×1 kernels

Intermediate 8×8×3 result

311

311

. ..

256 1×1×3 kernels

8

8

256

Final 8×8×256 result

Depthwise Convolution Pointwise ConvolutionX23133-081919

• [AveragePool]: [AveragePool] は、DPU で平均プーリングを実行するかどうかを指定します。サポートされるサイズの範囲は 2x2、3x3、…、8x8 で、平方のサイズのみがサポートされます。

• [ReLU Type]: [ReLU Type] は、DPU で使用可能な ReLU 関数を指定します。ReLU および ReLU6 ([ReLU + ReLU6])がデフォルトでサポートされています。[ReLU + LeakyReLU + ReLU6] を指定すると、DPU では活性化関数の LeakyReLU に対して可能な係数に制限が生じる場合があります。注記: LeakyRelU 係数は 0.1 に固定されています。

• [Softmax]: [Softmax] の設定により、softmax 関数をハードウェアに実装できます。softmax のハードウェア実装は、ソフトウェア実装よりも 160 倍高速です。softmax ハードウェア モジュールには、約 10,000 の LUT、4 つのBRAM、および 14 の DSP が必要です。このオプションを有効にするかどうかは、使用可能なハードウェア リソースと必要なスループットによります。softmax を有効にすると、SFM_M_AXI という AXI マスター インターフェイスと sfm_interrupt という割り込みポートが DPU IP に現れます。softmax モジュールは、m_axi_dpu_aclk を SFM_M_AXI の AXI クロックとして、また演算用に使用します。softmax 関数は Zynq®-7000 デバイスではサポートされていません。

第 4 章: DPU の構成

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 23

Page 24: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

[Advanced] タブ次の図に、DPU のコンフィギュレーションの [Advanced] タブを示します。

図 12: DPU のコンフィギュレーション – [Advanced] タブ

• [S-AXI Clock Mode]: s_axi_aclk は S-AXI インターフェイス クロックです。[Common with M-AXI Clock] をオンにすると、s_axi_aclk は m_axi_aclk と同じクロックを共有し、s_axi_aclk ポートは非表示になります。[Independent] をオンにすると、m_axi_aclk とは異なるクロックが供給可能です。

• [dpu_2x Clock Gating]: [dpu_2x Clock Gating] は、DPU の消費電力を削減するためのオプションです。このオプションを有効にすると、各 DPUコアに対して dpu_2x_clk_ce というポートが現れます。dpu_2x_clk_ce ポートは、dpu_clk_wiz IP の clk_dsp_ce ポートに接続する必要があります。DPU の演算エンジンがアイドル状態の場合、dpu_2x_clk_ce 信号で dpu_2x_clk をシャットダウンできます。dpu_clk_wiz IP で clk_dsp_ceポートを生成するには、Clocking Wizard IP を特定のオプションを用いて設定する必要があります。詳細は、「基準クロックの生成」を参照してください。[dpu_2x Clock Gating] は、Zynq®-7000 デバイスではサポートされていません。

• [DSP48 Maximum Cascade Length]: [DSP48 Maximum Cascade Length] で、DSP48E スライス カスケード チェーンの最大長を設定できます。通常、カスケード チェーンを長くするとロジック リソースの使用が抑えられますが、タイミングが悪化することがあります。カスケード チェーンを短くすると、より多くのハードウェア リソースが必要となるため、小型のデバイスには適さない場合があります。ザイリンクスでは、最初は中間値の 4 を選択し、タイミングを満たすことができない場合は、反復により値を調整することを推奨します。

• [DSP48 Usage]: [DSP48 Usage] で、DPU たたみ込みモジュールの累算に DSP48E スライスを使用するかどうかを選択できます。DSP の使用量を最小 [Low] に設定した場合、DPU IP はたたみ込みの乗算にのみ DSP スライスを使用します。DSP の使用量を最大 [High] に設定した場合は、乗算と累算の両方に DSP スライスが使用されます。この場合は DSP スライスの使用量が増え、LUT の使用量が減ります。次の表に、DSP の使用量を最大に設定した場合と最小に設定した場合のロジック使用量をそれぞれ示します。このデータは、Depthwise Conv、AveragePooling、Channel Augmentation、および Leaky ReLU の機能を使用しない、ザイリンクス ZCU102 プラットフォームの DPU に基づくものです。

第 4 章: DPU の構成

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 24

Page 25: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

注記: [DSP48 Maximum Cascade Length] は Zynq-7000 デバイスではサポートされておらず、1 に固定されています。表 11: DSP 使用量とリソースの関係

[DSP Usage] = [High] [DSP Usage] = [Low]

アーキテクチャ LUT レジスタ BRAM DSP アーキテクチャ LUT レジスタ BRAM DSP

B512 20055 28849 69.5 98 B512 21171 33572 69.5 66

B800 21490 34561 87 142 B800 22900 33752 87 102

B1024 24349 46241 101.5 194 B1024 26341 49823 101.5 130

B1152 23527 46906 117.5 194 B1152 25250 49588 117.5 146

B1600 26728 56267 123 282 B1600 29270 60739 123 202

B2304 39562 67481 161.5 386 B2304 32684 72850 161.5 290

B3136 32190 79867 203.5 506 B3136 35797 86132 203.5 394

B4096 37266 92630 249.5 642 B4096 41412 99791 249.5 514

• [Ultra-RAM Use per DPU]: Zynq® UltraScale+™ デバイスには、ブロック RAM と UltraRAM の 2 種類のオンチップメモリ リソースがあります。各メモリ リソース量はデバイスによって異なります。各 BRAM ブロックは、9b * 4096、18b * 2048、または 36b * 1024 として構成可能な 2 つの BRAM 18K スライスからなります。UltraRAM の構成は 72b * 4096 に固定されています。DPU のメモリ ユニットの幅は ICP * 8 ビットで、深さ (ワード数) は2048 です。B1024 アーキテクチャの場合、ICP は 8 で、メモリ ユニットの幅は 8 * 8 ビットです。各メモリ ユニ ットは、1 つの UltraRAM ブロックでインスタンシエートできます。ICP が 8 よりも大きい場合、DPU の各メモリ ユニットには少なくとも 2 つの UltraRAM ブロックが必要です。DPU は、デフォルトで BRAM をメモリ ユニットとして使用します。BRAM と UltraRAM の両方を含むターゲット デバイスの場合、[Ultra-RAM User per DPU] で、一部の BRAM の置き換える UltraRAM の数を指定します。UltraRAM の数は、DPU のメモリ ユニットに必要な UltraRAM の数の倍数に設定する必要があります。[Summary] ページに、BRAM および UltraRAM の使用量の例を示します。

• [Timestamp]: 有効の場合、DPU は DPU プロジェクトが合成された時間を記録します。無効の場合、タイムスタンプは最後の IP 更新時の値を保持します。タイムスタンプ情報は、DNNDK ツールを使用して取得できます。注記: ほとんどの DPU コンフィギュレーション設定には、DNNDK ツールを使用してアクセスできます。次の図に、DNNDK ツールによって読み出された情報を示します。

図 13: タイムスタンプの例

関連情報基準クロックの生成[Summary] タブ

第 4 章: DPU の構成

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 25

Page 26: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

[Summary] タブ[Summary] タブにコンフィギュレーション設定のサマリが表示されます。[Target Version] には、DPU 命令セットのバージョン番号が表示されます。

図 14: DPU コンフィギュレーションの [Summary] タブ

各デバイスの DPU 性能次の表に、各デバイスにおける DPU の論理上のピーク性能を示します。表 12: 各デバイスにおける DPU の性能 (GOPS)

デバイス DPU の構成 周波数 (MHz) 論理上のピーク性能 (GOPS)

Z7020 B1152x1 200 230

ZU2 B1152x1 370 426

ZU3 B2304x1 370 852

ZU5 B4096x1 350 1400

ZU7EV B4096x2 330 2700

ZU9 B4096x3 333 4100

第 4 章: DPU の構成

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 26

Page 27: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

各モデルの性能このセクションでは、一部のモデルの性能を参考として示します。次の表に示した結果は、ザイリンクス ZCU102 ボードと DNNDK v3.1 を使用し、16 スレッドを使用する 3 つの B4096 コアを 287MHz で動作させて測定した値です。注記: すべての精度には 8 ビット固定小数点の量子化を使用しています。表 13: 各モデルの性能

ネットワーク モデル ワークロード (1 イメージあたりの GOPS) 入力イメージ解像度 精度 (DPU) フレーム レート (FPS)

Inception-v1 3.2 224*224 Top-1: 0.6954 452.4

ResNet50 7.7 224*224 Top-1: 0.7338 163.4

MobileNet_v2 0.6 299*299 Top-1: 0.6352 587.2

SSD_ADAS_VEHICLE1 6.3 480*360 mAP: 0.4190 306.2

SSD_ADAS_PEDESTRIAN1

5.9 640*360 mAP: 0.5850 279.2

SSD_MobileNet_v2 6.6 480*360 mAP: 0.2940 124.7

YOLO-V3-VOC 65.4 416*416 mAP: 0.8153 43.6

YOLO-V3_ADAS1 5.5 512*256 mAP: 0.5301 239.7

注記:1. これらのモデルは、ザイリンクスのプルーニング ツールでプルーニングされています。

必要な I/O 帯域幅複数のニューラル ネットワークが DPU で実行されている場合、必要な I/O 帯域幅は、現在 DPU で実行されているニューラル ネットワークによって異なります。また、同じニューラル ネットワークでも、レイヤーによって I/O 帯域幅の要件は異なります。1 つの DPUコアをフル スピードで動作させ、いくつかのニューラル ネットワークで必要な I/O 帯域幅 (全レイヤーの平均値) をテストしました。次の表に、3 つのニューラル ネットワークで必要な I/O 帯域幅のピーク値と平均値を示します。この表には、よく使用される 2 つの DPU アーキテクチャ (B1152、B4096) の数値のみを示しています。注記: 複数の DPUコアを並列に動作させた場合、I/O 帯域幅の制限により、各コアをフル スピードで動作させることができなくなることがあります。表 14: DPU-B1152 および DPU-B4096 で必要な I/O 帯域幅

ネットワーク モデル DPU-B1152 DPU-B4096

ピーク (MB/s) 平均 (MB/s) ピーク (MB/s) 平均 (MB/s)

Inception-v1 1704 890 4626 2474

ResNet50 2052 1017 5298 3132

SSD ADAS VEHICLE 1516 684 5724 2049

YOLO-V3-VOC 2076 986 6453 3290

第 4 章: DPU の構成

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 27

Page 28: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

1 つの DPUコアをフル スピードで動作させる必要がある場合は、ピーク I/O 帯域幅の要件を満たす必要があります。I/O 帯域幅は、主に AXI マスター インターフェイス (DPU0_M_AXI_DATA0 および DPU0_M_AXI_DATA1) 経由でのデータ アクセスに使用します。

第 4 章: DPU の構成

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 28

Page 29: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

第 5 章

クロッキングとリセットはじめに

DPU IP には 3 つのクロック ドメイン (レジスタ コンフィギュレーション モジュール、データ コントローラー、演算ユニット) があります。3 つの入力クロックは要件に応じて設定できます。したがって、3 つの入力クロックそれぞれに対応する各リセットを正しく設定する必要があります。

クロック ドメイン次の図に、3 つのクロック ドメインを示します。

図 15: DPU のクロック ドメイン

PL

s_axi_clk

DPU

Register Configure

Data Controller

Calculation Unit

m_axi_dpu_aclk

dpu_2x_aclk

X22334-072219

レジスタ クロックレジスタ コンフィギュレーション モジュールには、s_axi_aclk を使用します。このモジュールは、S_AXI インターフェイス経由で DPU コンフィギュレーションを受信します。S_AXI クロックは、M-AXI クロックと共通するクロックまたは独立したクロックに設定できます。DPU のコンフィギュレーション レジスタは非常に低速の周波数で更新され、そのほとんどはタスク開始時に設定されます。M-AXI は高周波数クロックとして使用され、ザイリンクスはS-AXI クロックを周波数 100MHz の独立したクロックとして設定することを推奨します。

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 29

Page 30: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

データ コントローラー クロックデータ コントローラー モジュールの主な役割は、DPU IP のデータフローをスケジューリングすることです。データコントローラー モジュールは m_axi_dpu_aclk で動作します。DPU と外部メモリ間のデータ転送は、データ コントローラー クロック ドメインで実行されます。このため、m_axi_dpu_aclk は DPU IP の AXI_MM マスター インターフェイス用の AXI クロックでもあります。m_axi_dpu_aclk は AXI_MM マスター クロックに接続する必要があります。

演算クロック演算ユニット モジュールの DSP スライスは、データ コントローラー モジュールの 2 倍のクロック周波数のdpu_2x_clk ドメインで動作します。また、これら 2 つの関連クロックはエッジが揃っている必要があります。

基準クロックの生成DPU には 3 つの入力クロックがあります。dpu_2x_clk の周波数は m_axi_dpu_aclk の 2 倍にする必要があります。m_axi_dpu_aclk と dpu_2x_clk は同期している必要があります。次に、推奨する回路デザインを示します。

図 16: 推奨回路

MMCM

RST

CLKIN

CLKOUTBUFGCE_DIV

CE

CLRI

O

BUFGCE_DIV_CLK2_INST

dpu_clk_2x

BUFGCE_DIV

CE

CLRI

O

BUFGCE_DIV_CLK1_INST

dpu_clk

clk_in1

resetn

X22335-072219

この回路は、MMCM と 2 つの BUFGCE_DIV ブロックをインスタンシエートして作成できます。clk_in1 の周波数は任意で、MMCM の出力クロック CLKOUT の周波数は、dpu_clk_2x と同じにする必要があります。BUFGCE_DIV_CLK1_INST は、CLKOUT の周波数を 2 で分周します。dpu_clk と dpu_clk_2x は同じクロックから生成されるため、同期クロックとなります。2 つの BUFGCE_DIV によって 2 つのクロック間のスキューが減少し、タイミング クロージャが容易になります。

Clocking Wizard の設定前述の回路は、ザイリンクスの Clocking Wizard IP をインスタンシエートして実装できます。このリファレンス デザインでは、s_axi_aclk の周波数は 100MHz に設定され、m_axi_dpu_aclk は 325MHz に設定されています。したがって、dpu_2x_clk の周波数はそれに従って 650MHz に設定する必要があります。次の図に、[Clocking Options]タブの推奨設定を示します。注記: [Primitive] で [Auto] をオンにする必要があります。

第 5 章: クロッキングとリセット

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 30

Page 31: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

図 17: Clocking Wizard の [Clocking Options] の推奨設定

さらに、Clocking Wizard IP の [Output Clocks] で、m_axi_dpu_aclk と dpu_2x_clk の [Matched Routing] をオンにする必要があります。[Matched Routing] をオンにすると、これら 2 つのクロックが BUFGCE_DIV を使用して生成され、クロック間のスキューが大幅に削減されます。次の図に、このコンフィギュレーションを示します。

図 18: Clocking Wizard の [Matched Routing]

dpu_2x_clk の CE を追加[dpu_2x Clock Gating] オプションで、DPU の消費電力を削減できます。このオプションを有効にした場合、生成される clk_dsp の数と DPUコアの数を同じにする必要があります。各 clk_dsp は、Clocking Wizard IP で CE 付きのバッファーとして設定する必要があります。次の図に示すように、出力クロックが CE 付きとして設定されている場合、3 つの clk_dsp_ce が現れます。[dpu_2x Clock Gating] を有効にするには、各 clk_dsp_ce ポートを DPU の対応する dpu_2x_clk_ce ポートに接続する必要があります。

第 5 章: クロッキングとリセット

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 31

Page 32: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

図 19: Clocking Wizard でのバッファー CE の設定

Clocking Wizard での設定が完了したら、clock_dsp_ce を DPU の対応するポートに接続する必要があります。接続は次の図のようになります。

図 20: クロック CE および DPU の接続

リセットDPU IP には 3 つの入力クロックがあり、それぞれのクロックに対応するリセットがあります。各リセットは、対応するクロックに同期する必要があります。クロックとリセットが同期していない場合、DPU は正しく動作しない可能性があります。同期リセット信号を生成するには、Processor System Reset IP の使用を推奨します。次の図に、リファレンス デザインを示します。

第 5 章: クロッキングとリセット

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 32

Page 33: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

図 21: リセットの推奨デザイン

第 5 章: クロッキングとリセット

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 33

Page 34: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

第 6 章

開発フローMPSoC でのコアのカスタマイズと生成

次の各セクションでは、Vivado® Design Suite で DPU IP を使用する開発フローについて説明します。• DPU IP をリポジトリに追加する/DPU を以前のバージョンからアップグレードする• DPU IP をブロック デザインに追加する• DPU パラメーターを設定する• DPU をザイリンクス SoC のプロセッシング システムに接続する• DPU のレジスタ アドレスを割り当てる• ビットストリームを生成する• BOOT.BIN を生成する• デバイス ツリー

DPU IP をリポジトリに追加する/DPU を以前のバージョンからアップグレードするVivado 統合設計環境 (IDE) で [Project Manager] →  [IP Catalog]をクリックします。I P カタログで右クリックして[Add Repository] (次の図を参照) をクリックし、DPU IP の場所を選択します。

図 22: [Add Repository]

DPU IP が IP カタログに表示されます。

第 6 章: 開発フロー

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 34

Page 35: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

図 23: DPU IP をリポジトリに追加

既存のハードウェア プロジェクトに古いバージョンの DPU がある場合、最新バージョンにアップグレードする必要があります。次の手順を実行します。1. ブロック デザインおよび IP リポジトリ内にある古い DPU IP を削除します。2. IP リポジトリに新しい DPU IP を追加します。3. 新しい DPU IP をブロック デザインに追加します。

DPU IP をブロック デザインに追加するブロック デザイン インターフェイスで DPU IP を検索し、DPU IP をブロック デザインに追加します。次の図に、この手順を示します。

図 24: DPU IP を検索

第 6 章: 開発フロー

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 35

Page 36: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

図 25: DPU IP をブロック デザインに追加

DPU パラメーターを設定する次の図に示すように、DPU IP を設定できます。パラメーターの詳細は、「DPU の構成」を参照してください。

図 26: DPU を設定

関連情報DPU の設定

第 6 章: 開発フロー

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 36

Page 37: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

DPU をザイリンクス SoC のプロセッシング システムに接続するDPU IP にはスレーブ インターフェイスが 1 つだけ含まれます。DPU コアの数は、パラメーター DPU_NUM により異なります。各 DPUコアには 3 つのマスター インターフェイス (命令フェッチ用に 1 つと、データ アクセス用に 2つ) があります。DPU が DDR メモリ空間に正しくアクセスできている限り、AXI Interconnection IP で DPU IP をプロセッシング システム (PS) に接続できます。一般に、データが Interconnect IP を介して転送されると、データ トランザクションの遅延が大きくなります。Interconnect IP を介することで発生する遅延により、DPU の性能が低下します。したがって、ザイリンクスでは、PS の AXI スレーブ ポートが十分にある場合、DPU の各マスター インターフェイスと PS の接続には AXI Interconnect IP を使用せず、直接接続することを推奨します。DPU に対して PS の AXI スレーブ ポートが十分にない場合、AXI Interconnect IP を使用する必要があります。データフェッチ用の 2 つの AXI マスター ポートは高帯域幅ポートであり、命令フェッチ用の AXI マスター ポートは低帯域幅ポートです。一般に、命令フェッチ用のすべてのマスター ポートは 1 つのインターコネクトを介して PS のS_AXI_LPD に接続することを推奨します。残りのデータ フェッチ用マスター ポートは、可能な限り PS に直接接続します。ザイリンクスでは、優先度の高い DPUコアのマスター ポート (DPU0 などの小さい番号) を優先度の高い PS のスレーブ ポート (S_AXI_HP0_FPD などの小さい番号) に直接接続することを推奨します。たとえば、3 つの DPU コアと 1 つの SFM コアがある場合、7 つのマスター ポートと 4 つのスレーブ ポート(S_AXI_HP1 ~ 3 および S_AXI_HPC0) があります。可能な接続のセットアップは次のとおりです。• DPU0_DATA0 ~ HP1

• DPU0_DATA1 ~ HP2

• DPU1_DATA0 および DPU1_DATA1 ~ HP3

• DPU2_DATA0、DPU2_DATA1、および SFM ~ HPC0

ザイリンクスでは、DPU のスレーブ ポートを PS の M_AXI_HPM0_LPD に接続することを推奨しています。次に、ザイリンクス UltraScale+™ の DPU と PS の推奨接続を示します。DPUコアの数は 3 に設定され、softmax 関数は有効です。

第 6 章: 開発フロー

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 37

Page 38: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

図 27: MPSoC の DPU と PS の接続

DPU のレジスタ アドレスを割り当てるDPU の接続が完了したら、次に AXI スレーブ インターフェイスのレジスタ アドレスを割り当てます。DPU には16MB 以上の空間が必要です。DPU スレーブ インターフェイスは、ホスト CPU からアクセス可能な任意の開始アドレスに割り当てることができます。注記: DPU のベース アドレスは、16MB の範囲で設定する必要があります。デバイス ドライバーおよびデバイス ツリー ファイル内のアドレスは、Vivado で割り当てられたアドレスと同じである必要があります。次に、推奨する DPU のアドレスの割り当てを示します。

第 6 章: 開発フロー

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 38

Page 39: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

図 28: DPU のアドレスの割り当て

ビットストリームを生成する次に示すように、Vivado で [Generate Bitstream] をクリックします。

図 29: ビットストリームの生成

BOOT.BIN を生成するBOOT.BIN ファイルは、Vivado® Design Suite または PetaLinux を使用して生成できます。Vivado Design Suite を使用したブート イメージの作成方法は、『Zynq UltraScale+ MPSoC: エンベデッド デザイン チュートリアル』 (UG1209:英語版、日本語版) を参照してください。PetaLinux を使用する方法は、『PetaLinux ツール資料: リファレンス ガイド』(UG1144) を参照してください。

デバイス ツリーDPU ドライバーが正しく動作するように、DPU デバイスは PetaLinux デバイス ツリーで正確に設定する必要があります。DPU 用の新しいノードを作成し、それを <plnx-proj-root>/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi の下にある system-user.dtsi の子ノードとして配置します。次の表に、DPU および softmax ノードに対するパラメーターをリストし、説明します。

第 6 章: 開発フロー

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 39

Page 40: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

次の図に、Zynq UltraScale+ MPSoC のデバイス ツリー設定の例を示します。&amba { ... dpu { compatible = "xilinx,dpu"; base-addr = <0x8f000000>;//CHANGE THIS ACCORDING TO YOUR DESIGN dpucore { compatible = "xilinx,dpucore"; interrupt-parent = <&intc>; interrupts = <0x0 106 0x1 0x0 107 0x1>; core-num = <0x2>; }; }; softmax { compatible = "xilinx, smfc"; interrupt-parent = <&intc>; interrupts = <0x0 110 0x1>; core-num = <0x1>; .... }

次の表は、パラメーターについて説明しています。表 15: デバイス ツリー フィールド

パラメーター 説明dpu DPU デバイスのノード エントリ。変更する必要はありません。dpu->compatible 「xilinx,dpu」に設定された固定値。dpu->base-addr ハードウェア デザインで割り当てられた DPU ベース レジスタ アドレス。dpucore->compatible 「xilinx,dpucore」に設定された固定値。dpucore->interrupt-parent 割り込み制御デバイスを指定。

注記: Zynq-7000 デバイスの場合は「intc」、ZynqUltraScale+ デバイスの場合は「gic」とします。dpucore->interrupts DPU IP コアの割り込みコンフィギュレーション。各 DPUコアには 3 つのフィールドがあり、各フィールドの 2 番目の値は割り込み番号と一致します。割り込み番号はハードウェア コンフィギュレーションと一致する必要があります。上記の例では、トリプレット「0x0 106 0x1」は割り込み番号 106 の DPUコア 0 に対応し、トリプレット「0x0 107 0x1」は割り込み番号 107 の DPUコア 1 に対応します。トリプレット「0x0」および「0x1」のその他 2 つの値は固定値であり、変更する必要はありません。dpucore->core-num ハードウェア コンフィギュレーションで指定された DPU コアの数。softmax->compatible 「xilinx, smfc」に設定された固定値。softmax->interrupt-parent 割り込み制御デバイスを指定。

注記: Zynq-7000 デバイスの場合は「intc」、Zynq UltraScale+ MPSoC デバイスの場合は「gic」とします。softmax->interrupts DPU の softmax の割り込みコンフィギュレーション。このフィールドの 2 番目の値は、割り込み番号と一致します。割り込み番号はハードウェア コンフィギュレーションと一致する必要があります。上記の例では、トリプレット「0x0 110 0x1」は割り込み番号 110 の softmax に対応します。トリプレット「0x0」および「0x1」のその他

2 つの値は固定値であり、変更する必要はありません。softmax ->core-num softmax がハードウェア コンフィギュレーションでプロジェクトに追加される場合、この値は「0x1」に固定されます。

第 6 章: 開発フロー

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 40

Page 41: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

デバイス ツリーの DPU 記述は、DPU ハードウェア プロジェクトのコンフィギュレーション、特に割り込みと常に一致している必要があります。DPU プロジェクトで割り込みが変更されたら、それに応じてデバイス ツリーの記述を変更する必要があります。

Zynq-7000 デバイスでのコアのカスタマイズおよび生成最新の DPU は Zynq®-7000 デバイス プロジェクトに統合できますが、次の制限があります。1. DPU IP を Zynq-7000 デバイス プロジェクトに統合する場合、Zynq-7000 をターゲット デバイスに指定して、新しい Vivado プロジェクトを作成する必要があります。DPU を含む既存の Vivado プロジェクトのターゲットデバイスを Zynq® UltraScale+™ MPSoC から Zynq-7000 に変更するだけでは機能しません。

2. softmax ハードウェア モジュールは Zynq-7000 デバイスではサポートされていません。softmax コアのオプションは 0 に設定されており、変更できません。これは今後のリリースで変更される可能性があります。

3. Zynq-7000 のプロセッシング システム (PS) の AXI ポートの最大データ幅は 64 ビットです。DPU のデータ幅は128 ビットから 64 ビットに変更されます。AXI インターフェイスのデータ幅が変更された場合、それに応じてDNNC で命令ファイルを再生成する必要があります。

次の図に、Zynq-7000 デバイスの DPU のデフォルト設定を示します。図 30: Zynq-7000 デバイスの DPU の設定

第 6 章: 開発フロー

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 41

Page 42: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

Vitis 統合設計環境 (IDE) でのコアのカスタマイズおよび生成

Vitis™ エンベデッド ソフトウェア開発フローにおけるコア生成方法は次の 2 とおりです。1. GUI フロー2. コマンド フロー使いやすくて柔軟性があるコマンド フローの使用を推奨していますが、GUI フローの使用を希望される場合は、こちらからチュートリアルを参照してください。次の図に、DPU のビルド プロセスを示します。

図 31: DPU のビルド プロセスDPU/Somtmax

RTL

Package_xo

.XO

v++

.xclbin

platform

X23356-101419

ここでは、Vitis ライブラリで DPU IP を使用する場合のコマンド フローとプロセスについて説明します。• makefile とその他のスクリプト: DPU カーネルを個別にザイリンクス オブジェクト (.xo) ファイルにコンパイルします。このとき、コンパイルには package_xo ユーティリティが使用されます。Vitis 環境の RTL カーネル ウィザードを使用すると、このプロセスが容易になります。.xo ファイルがハードウェア プラットフォーム (シェル)にリンクされ、FPGA バイナリ (.xclbin) が作成されます。 v++ コンパイラでは Vivado® Design Suite ツールが自動的に使用され、FPGA プラットフォームで実行するカーネルがビルドされます。makefile およびその他のスクリプトは、Vitis DPU TRD にあります。

• DPU パラメーターの設定: rtl_kernel/dpu/hdl/dpu_conf.vh ファイルを変更して、DPU のパラメーターを設定できます。DPU のパラメーターの詳細は、第 3 章: 製品仕様 を参照してください。すべての DPU パラメーターは、dpu_conf.vh ファイルで設定されます。ユーザーがさまざまな定義を使用して各 DPU を設定できます。

第 6 章: 開発フロー

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 42

Page 43: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

• アーキテクチャ: DPU は、B512、B800、B1024、B1600、B2304、B3136、および B4096 などのハードウェアアーキテクチャを設定できます。B4096 の場合、次のように定義されます。`define B4096

• UltraRAM 数: dpu_config.vh ファイルを変更して、数値を設定します。`define URAM_ENABLE で有効に、`define URAM_DISABLE で無効にします。UltraRAM 数が有効の場合、次のように設定します。• define def_UBANK_IMG_N - 4

• define def_UBANK_WGT_N - 17

• define def_UBANK_BIAS - 1

各アーキテクチャには推奨される UltraRAM 数があります。プロジェクト全体のリソース使用量に応じて数値を調整することもできます。表 16: 推奨される UltraRAM 数

B512 B800 B1024 B1152 B1600 B2304 B3136 B4096

U_BANK_IMG 2 2 4 2 4 4 4 5

U_BANK_WGT 9 11 9 13 11 13 15 17

U_BANK_BIAS 1 1 1 1 1 1 1 1

• [RAM Usage]: RAM の使用が最大 - `define RAM_USAGE_HIGH

RAM の使用が最小 - `define RAM_USAGE_LOW

• [Channel Augmentation]: 有効 - `define CHANNEL_AUGMENTATION_ENABLE

無効 - `define CHANNEL_AUGMENTATION_DISABLE

• [DepthwiseConv]: 有効 - `define DWXC_ENABLE

無効 - `define DWCV_DSIABLE

• [AveragePool]: 有効 - `define POOL_AVG_ENABLE

無効 - `define POOL_AVG_DISABLE

• [RELU Type]: RELU タイプには、次の 4 つのオプションがあります。1. RELU_RELU6

2. RELU_LEAKRELU_RELU6

RELU+LeakyRelu+ReLU6 を使用する場合は、次のように定義してください。`define RELU_LEAKYRELU_RELU6

• [DSP Usage]: 最大 - `define DSP48_USAGE_HIGH

最小 - `define DSP48_USAGE_LOW

第 6 章: 開発フロー

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 43

Page 44: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

• DPU 数の設定: DPU コア数は、デフォルトで 1 に設定されています。[connectivity] プロパティを追加して、次のように DPU 数を設定します。[connectivity]

nk=dpu_xrt_top:2

プロジェクトに 2 つの DPU が統合されます。• DPU ポートの接続を指定: DPU をシステム内のさまざまなポートに接続します。[connectivity] プロパティを追加して、DPU のポートを設定します。次のコマンドを使用して、プラットフォームのポートを確認します。% platforminfo -p zcu102_base/zcu102_base.xpfm

図 32: プラットフォームの情報

プラットフォームに DPU のすべてのポートに接続できるだけの十分なポートがない場合は、ポートを共有できます。

第 6 章: 開発フロー

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 44

Page 45: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

[connectivity] プロパティを追加して、次のように DPU のポートを設定します。[connectivity]sp=dpu_xrt_top_1.M_AXI_GP0:HP0sp=dpu_xrt_top_1.M_AXI_HP0:HP1sp=dpu_xrt_top_1.M_AXI_HP2:HP2"

プロジェクトにタイミングの問題が生じる場合があります。次のように、[vivado] プロパティを追加して Vivado インプリメンテーション ストラテジを設定できます。[vivado]prop=run.impl_1.strategy=Performance_Explore

この Vivado インプリメンテーション ステップでは、 Performance_Explore ストラテジを使用します。

第 6 章: 開発フロー

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 45

Page 46: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

第 7 章

サンプル デザインはじめに

ザイリンクス DPU ターゲット リファレンス デザイン (TRD) は、ザイリンクス SoC プラットフォームで DPU を使用し、ディープ ニューラル ネットワーク アプリケーションを構築および実行する方法を紹介するためのものです。TRD は、Vivado DPU TRD と Vitis™ DPU TRD の 2 種類あります。TRD は Vivado IP インテグレーター フローを使用してハードウェア デザインをビルドし、ザイリンクス Yocto PetaLinux フローを使用してソフトウェア デザインをビルドします。この TRD は、Zynq®UltraScale+™ MPSoC プラットフォームを使用して作成しています。Zynq®-7000SoC プラットフォームでも、同じフローで使用できます。TRD は、リンク (https://japan.xilinx.com/products/intellectual-property/dpu.html#overview) から利用できます。この章では、リファレンス デザインのアーキテクチャおよび各コンポーネントの機能について説明します。全体の構成は次のとおりです。• Vivado TRD の概要 では、Zynq UltraScale+ MPSoC のアーキテクチャ、リファレンス デザインのアーキテクチャ、および主な機能の概要について説明します。

• ハードウェア デザイン では、ザイリンクス Vivado Design Suite を使用してリファレンス ハードウェア デザインを生成する方法について説明します。

• ソフトウェア デザイン では、PetaLinux 環境でプロジェクトを作成するデザイン フローについて説明します。• デモの実行 では、TRD で作成したアプリケーションの実行方法について説明します。Vitis DPU TRD リファレンス デザインのアーキテクチャは、Vivado TRD と類似していますが、Vitis DPU TRD の方がソフトウェア設計者にとって使いやすく、柔軟性にも優れています。

Vivado DPU TRD フローVivado TRD の概要この TRD は、ザイリンクス Zynq® UltraScale+™ MPSoC 上で一般的なディープ ニューラル ネットワーク モデルである Resnet50 を実行し、画像分類アプリケーションを構築します。TRD の全体的な機能はプロセッシング システム(PS) とプログラマブル ロジック (PL) に分割され、PL に DPU を置くことで性能の最適化を図っています。次に、TRD のブロック図を示します。ホストは、イーサネットまたは UART ポートを介して ZCU102 ボードと通信します。TRD への入力イメージは SD カードに格納します。TRD を実行すると、入力データが DDR メモリに読み込まれます。DPU は DDR メモリからデータを読み出し、結果を DDR メモリに書き戻します。この結果は、APU からイーサネットまたは UART を介して転送され、ホストの画面に表示されます。

第 7 章: サンプル デザイン

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 46

Page 47: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

図 33: DPU TRD の概要

Host: Linux/

Windows

UART/Ethernet

ZCU102 Board

PL

DDR Memory

PS

APU DPU

X23041-072519

要件TRD には次のものが必要です。ターゲット プラットフォーム:

• ZCU102 評価ボード (プロダクション シリコン搭載)。『ZCU102 評価ボード ユーザー ガイド』 (UG1182) を参照してください。

ザイリンクス ツール:

• Vivado Design Suite 2019.1

• PetaLinux 2019.1

ハードウェア ペリフェラル:

• SD カード• イーサネット• UART

Linux または Windows ホスト システム:

• シリアル ターミナル• ネットワーク ターミナル

デザイン ファイルデザイン ファイルは、次のディレクトリ構造に格納されています。

第 7 章: サンプル デザイン

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 47

Page 48: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

図 34: ディレクトリ構造Zcu102-dpu-trd-2019-1-v3.0

apu

apps

resnet50

dpu_petalinux_bsp

docimages

BOOT.BINimage.ubresnet50

pl

constrspre-builtscriptssrcs

README.mdX23132-081919

注記: DPU_IP は pl/srcs/dpu_ip/ ディレクトリにあります。

ハードウェア デザインこのセクションでは、ザイリンクス Vivado Design Suite を使用して DPU リファレンス デザイン プロジェクトを作成し、BIT ファイルを生成する手順について説明します。リファレンス デザインの DPU IP は、パラメーターが適切に設定されています。DPU 割り込みの接続、および DPU のアドレスは、リファレンス デザインのものを変更せず使用してください。これらの接続やアドレスを変更した場合、リファレンス デザインが正しく動作しない可能性があります。

ボードのセットアップ次の図に、ZCU102 ボードと各インターフェイスの位置を示します。

第 7 章: サンプル デザイン

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 48

Page 49: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

図 35: ZCU102 ボード

ZCU ボードの設定1. micro USB ケーブルを ZCU102 ボードの micro USB UART (J83) ポートに接続し、もう一方の端をホスト PC の空いている USB ポートに接続します。このケーブルで、UART-over-USB 通信を実行します。

2. TRD イメージ ファイルの内容を書き込んだ SD カードを SD カード スロットに挿入します。

3. SD カードからブートするように、スイッチ SW6 を次のように設定します。

4. 12V 電源を ZCU102 の 6 ピン Molex コネクタに接続します。5. スイッチ SW1 をオンにして、ZCU102 ボードに電源を投入します。プロジェクトのビルド フローこのセクションでは、Vivado 2019.1 を使用してリファレンス Vivado プロジェクトをビルドする方法について説明します。Vivado 環境のセットアップ方法は、『Vivado Design Suite ユーザー ガイド: 入門』 (UG910) を参照してください。

第 7 章: サンプル デザイン

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 49

Page 50: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

ハードウェア デザインをビルドするには、次の手順を実行します。Linux でハードウェア デザインをビルドする場合1. Linux ターミナルを開きます。2. $TRD_HOME/pl ディレクトリへ移動します。3. Vivado IP インテグレーター プロジェクトを作成し、次のコマンドを実行して GUI を起動します。

% vivado -source scripts/trd_prj.tcl

Windows でハードウェア デザインをビルドする場合1. [スタート] → [すべてのプログラム ] → [Xilinx Design Tools] → [Vivado 2019.1] → [Vivado 2019.1]をクリックします。

2. [Quick Start] ページで、[Tcl Console] をクリックします。3. Tcl コンソールで次のコマンドを入力します。

cd $TRD_HOME/plsource scripts/trd_prj.tcl

上記のスクリプトを実行すると、Vivado IP インテグレーターのブロック デザインが次のように表示されます。

第 7 章: サンプル デザイン

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 50

Page 51: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

4. この GUI で [Generate Bitstream] をクリックすると、次のように BIT ファイルが生成されます。

DPU の設定TRD に統合されている DPU IP のバージョンは、DPU_v3.0 です。

図 36: DPU の設定ページ

DPU のパラメーターは、リソース要件に応じて設定を変更できます。DPU パラメーターの詳細は、「DPU の構成」を参照してください。

第 7 章: サンプル デザイン

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 51

Page 52: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

関連情報DPU パラメーターを設定する

ソフトウェア デザインこのセクションでは、PetaLinux ツールを使用して BOOT.BIN を生成する方法を説明します。

PetaLinux デザイン フローPetaLinux のインストール方法は、『PetaLinux ツール資料: リファレンス ガイド』 (UG1144: 英語版、日本語版) を参照してください。PetaLinux 変数の設定PetaLinux 環境変数 $PETALINUX を次のように設定します。% source<path/to/petalinux-installer>/Petalinux-v2019.1/petalinux-v2019.1-final/settings.sh% echo $PETALINUX% export TRD_HOME=<path/to/downloaded/zipfile>/zcu102-dpu-trd-2019-1

PetaLinux プロジェクトのビルド次のコマンドを実行して、PetaLinux プロジェクトを作成します。% cd $TRD_HOME/apu/dpu_petalinux_bsp% petalinux-create -t project -s xilinx-dpu-trd-zcu102-v2019.1.bsp% cd zcu102-dpu-trd-2019-1% petalinux-config ––get-hw-description=$TRD_HOME/pl/pre-built --silentconfig% petalinux-build

構築済みのデザインを使用する場合は、上記のコマンドで示したように、––get-hw-description の値を使用します。新しく生成/変更されたデザインが必要な場合は$TRD_HOME/pl/pre-built を $TRD_HOME/pl/prj/zcu102.sdk に変更します。BOOT.BIN の作成次のコマンドを実行して、BOOT.BIN ファイルを作成します。% cd images/linux% petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga system.bit

デモの構築このセクションでは、resnet50 サンプルをソースから構築する方法を説明します。$TRD_HOME/images の下にある構築済みの resnet50 を使用すれば、この手順をスキップできます。次の例では、5 つのスレッドを使用して分類タスクを実行します。DPU ランタイムにより、ハードウェア デザインに従ってコアが自動的にスケジューリングされます。

第 7 章: サンプル デザイン

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 52

Page 53: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

1. まず、ソフトウェア環境ファイルを抽出します。% cd $TRD_HOME/apu/apps% ./sdk.sh -d ./sdk -y

$TRD_HOME/apu/apps の下にある生成済みの sdk.sh を使用するか、petalinux-build -s を使用すれば新しい sdk.sh を生成できます。sdk.sh の実行中に「permission is denied」というエラー メッセージが表示された場合は、chmod 777 sdk.sh を実行して解決します。ソフトウェア環境ファイルが抽出されたら、新しいシェル セッションでこのデモを構築するたびに環境セットアップ スクリプトを実行します。

2. resnet50 サンプルを構築します。% cd $TRD_HOME/apu/apps/resnet50% make

新しく生成された resnet50 は $TRD_HOME/apu/apps/resnet50 ディレクトリに置かれます。

デモの実行このセクションでは、TRD によって生成された実行ファイルを動作させる方法について説明します。UART を使用して ZCU102 ボードに接続します。注記: ZCU102 ボードのログイン/パスワードは root/root です。次の手順でデモを実行します。1. BOOT.BIN ファイルを生成したら、BOOT.BIN と image/linux フォルダーにある image.ub を SD カードにコピーします。

2. $TRD_HOME/images の resnet50 ディレクトリを SD カードにコピーします。3. $TRD_HOME/images/resnet50 にある構築済みの resnet50 を使用するか、$TRD_HOME/apu/apps/

resnet50/build/ にある新しく生成された resnet50 を SD カードの resnet50 ディレクトリにコピーします。次の図に、スクリーンショットを示します。「Load image」で始まる行に入力イメージ ファイル名が表示され、これらは入力イメージの予想結果でもあります。その下には DPU による推論結果が表示されます。ここでは、最も確率の高い結果の上位 5 つが表示されます。ロードされたイメージ ファイル名が、ほとんどの結果において確率の高い上位 5 つの推論結果のいずれかに近ければ、DPU は適切に動作しています。

第 7 章: サンプル デザイン

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 53

Page 54: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

Vitis TRD フローVitis™ TRD フローには次のものが必要です。1. ターゲット プラットフォーム: ZCU102 評価ボード、プロダクション シリコン - 詳細は、『ZCU102 評価ボード ユーザー ガイド』 (UG1182) を参照してください。

2. ザイリンクス ツール• Vitis 2019.2

第 7 章: サンプル デザイン

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 54

Page 55: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

3. ハードウェア ペリフェラル• SD

• イーサネット• UART

4. Linux または Windows ホスト システム• シリアル ターミナル• ネットワーク ターミナル

5. デザイン ファイル - 次のディレクトリ構造に格納されています。

ハードウェア デザインDPU と softmax は、$TRD_HOME/dpu_ip ディレクトリに格納されています。Vitis 2019.2 には zcu102_base プラットフォームが含まれています。ここで示すチュートリアルでは、Vitis およびXRT の環境変数が次のように設定されていることを前提としています。1. Linux ターミナルを開き、Linux を Bash モードとして設定します。

% source <vitis install path>/Vitis/2019.2/settings64.sh% source /opt/xilinx/xrt/setup.sh

DPU のデフォルト設定は、B4096、URAM_DISABLE、RAM_USAGE_LOW、CHANNEL_AUGENTATION_ENABLE、DWCV_ENABLE、POOL_AVG_ENABLE、RELU_LEAKYRELU_RELU6、DSP48_USAGE_LOW、MPSOC であり、dpu_conf.vh ファイルに定義されています。注記: 次のように、プラットフォームの場所を SDX_PLATFORM に追加します。 $ exportSDX_PLATFORM=<vitis install path>/platforms/zcu102_base/zcu102_base.xpfm

2. ハードウェア デザインを構築します。% cd $TRD_HOME/prj/Vitis

• DPU のみをビルドする場合:

% make KERNEL=DPU DEVICE=zcu102

第 7 章: サンプル デザイン

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 55

Page 56: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

• DPU と softmax をビルドする場合:

% make KERNEL=DPU_SM DEVICE=zcu102

3. 生成された SD カード ファイルは、$TRD_HOME/prj/Vitis/binary_container_1/sd_card に格納されます。

ソフトウェア デザインこのセクションでは、Resnet50 サンプルをソースから実行する方法を説明します。$TRD_HOME/app/Vitis の下にある構築済みの Resnet50 を使用できます。この構築済みデザインは、ZCU102 プラットフォームをベースとしています。

デモの実行このセクションでは、TRD によって生成された実行ファイルを動作させる方法について説明します。1. UART を使用して ZCU102 ボードに接続します。2. 実行するために、$TRD_HOME/prj/Vitis/binary_container_1/sd_card からすべてのファイルを SD カ

ードにコピーします。3. $TRD_HOME/app/Vitis ディレクトリからすべてのファイルを SD カードにコピーします。4. Linux を起動後、次を実行します。

% cd /mnt% source ./setup.sh% cd sample/reset50% ./reset50 img/bellpepper-994958.JPEG

resnet50 プログラムがイメージ分類タスクを実行します。結果は次の図のようになります。

5. HWH ファイルは、/binary_container_1/link/vivado/vpl/prj/prj.srcs/sources_1/bd/<platform nam>/hw_handoff/<paltform name>.hwh から取得できます。HWH ファイルの詳細は、DNNDK ユーザーガイドを参照してください。

第 7 章: サンプル デザイン

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 56

Page 57: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

付録 A

その他のリソースおよび法的通知

ザイリンクス リソースアンサー、資料、ダウンロード、フォーラムなどのサポート リソースは、ザイリンクス サポート サイトを参照してください。

Documentation Navigator およびデザイン ハブザイリンクス Documentation Navigator (DocNav) では、ザイリンクスの資料、ビデオ、サポート リソースにアクセスでき、特定の情報を取得するためにフィルター機能や検索機能を利用できます。DocNav を開くには、次のいずれかを実行します。• Vivado® IDE で [Help] → [Documentation and Tutorials] をクリックします。• Windows で [スタート] → [すべてのプログラム ] → [Xilinx Design Tools] → [DocNav] をクリックします。• Linux コマンド プロンプトに「docnav」と入力します。ザイリンクス デザイン ハブには、資料やビデオへのリンクがデザイン タスクおよびトピックごとにまとめられており、これらを参照することでキー コンセプトを学び、よくある質問 (FAQ) を参考に問題を解決できます。デザイン ハブにアクセスするには、次のいずれかを実行します。• DocNav で [Design Hub View] タブをクリックします。• ザイリンクス ウェブサイトでデザイン ハブ ページを参照します。注記: DocNav の詳細は、ザイリンクス ウェブサイトの Documentation Navigator ページを参照してください。DocNav からは、日本語版は参照できません。ウェブサイトのデザイン ハブ ページをご利用ください。

参考資料次の文書は、このユーザー ガイドの補足資料として役立ちます。日本語版のバージョンは、英語版より古い場合があります。1. 『DNNDK ユーザー ガイド』 (UG1327: 英語版、日本語版)

2. 『Zynq UltraScale+ MPSoC: エンベデッド デザイン チュートリアル』 (UG1209: 英語版、日本語版)

3. 『PetaLinux ツール資料: リファレンス ガイド』 (UG1144: 英語版、日本語版)

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 57

Page 58: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

4. 『ZCU102 評価ボード ユーザー ガイド』 (UG1182)

改訂履歴次の表に、この文書の改訂履歴を示します。

セクション 内容2019 年 12 月 2 日、バージョン 3.1

文書全体 Vitis™ デバイス サポートのフローを更新。2019 年 8 月 13 日、バージョン 3.0

DNNDK 説明を更新。コンフィギュレーション オプション [RAM Usage]、[Channel Augmentation]、[Softmax] セクションの変更された数値についての説明を追加。[Advanced] タブ DSP カスケードに注記を追加し、表「DSP 使用量とリソースの関係」の DSP の使用量が最大 [High] の場合の LUT 数を変更。PetaLinux プロジェクトのビルド コードを更新。

2019 年 7 月 31 日、バージョン 3.0

第 2 章: 概要 章全体を更新。第 3 章: 製品仕様 章全体を更新。表 1: DPU の信号の説明 dpu_2x_clk_ce の説明を追加。第 4 章: DPU の構成 章全体を更新。はじめに 説明を更新。表 7: DPU でサポートされる DNN の機能とパラメーター 「DepthwiseConv」と「最大プーリング」の説明を更新。コンフィギュレーション オプション 図を更新。「チャネル拡張」と「dpu_2x クロック ゲーティング」のセクションを追加、すべての説明のセクションを更新。第 5 章: クロッキングとリセット 章全体を更新。dpu_2x_clk の CE を追加 セクションを追加。第 6 章: 開発フロー 章全体を更新。DPU IP をリポジトリに追加する/DPU を以前のバージョンからアップグレードする セクションを更新。

Zynq-7000 デバイスでのコアのカスタマイズおよび生成 図を更新。第 7 章: サンプル デザイン 章全体を更新。DPU の設定 セクションを更新。

2019 年 6 月 7 日、バージョン 2.0

DNNDK 説明を追加。表 1: DPU の信号の説明 softmax の説明を追加。割り込み 注記を更新。表 7: DPU でサポートされる DNN の機能とパラメーター 「DepthwiseConv」を追加。コンフィギュレーション オプション 新機能を追加: DepthwiseConv、AveragePool、ReLU Type、

softmax。DPU GUI の一部の図を更新。s-axi クロック モードに関する説明を追加。表 12: 各モデルの性能 表を更新。表 13: DPU-B1152 および DPU-B4096 で必要な I/O 帯域幅 表を更新。

付録 A: その他のリソースおよび法的通知

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 58

Page 59: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

セクション 内容レジスタ クロック DPU クロックの推奨周波数を修正。Clocking Wizard の設定 説明と図を更新。dpu_2x_clk の CE を追加 説明と図を更新。DPU パラメーターを設定する 図を更新。DPU をザイリンクス SoC のプロセッシング システムに接続する セクションを更新。

DPU のレジスタ アドレスを割り当てる 注記を更新。デバイス ツリー セクションを追加。Zynq-7000 デバイスでのコアのカスタマイズおよび生成 セクションを追加。デザイン ファイル 図を更新。DPU の設定 図を更新。ソフトウェア デザイン セクションを更新。

2019 年 3 月 26 日、バージョン 1.2

PetaLinux プロジェクトのビルド 説明を更新。デモの構築 図を更新。デモの実行 コードを更新。

2019 年 3 月 8 日、バージョン 1.1

表 6: reg_dpu_base_addr 説明を更新。図 10: DPU のコンフィギュレーション 図を更新。PetaLinux プロジェクトのビルド コードを更新。デモの構築 説明を更新。

2019 年 3 月 5 日、バージョン 1.1

第 7 章: サンプル デザイン DPU ターゲット リファレンス デザインに関する章を追加。2019 年 2 月 28 日、バージョン 1.0

初版。 N/A

お読みください: 重要な法的通知本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には「貴殿」、法人その他の団体の場合には「貴社」。以下同じ) に開示される情報 (以下「本情報」といいます) は、ザイリンクスの製品を選択および使用することのためにのみ提供されます。適用される法律が許容する最大限の範囲で、(1) 本情報は「現状有姿」、およびすべて受領者の責任で (with all faults) という状態で提供され、ザイリンクスは、本通知をもって、明示、黙示、法定を問わず (商品性、非侵害、特定目的適合性の保証を含みますがこれらに限られません)、すべての保証および条件を負わない (否認する) ものとします。また、(2) ザイリンクスは、本情報 (貴殿または貴社による本情報の使用を含む) に関係し、起因し、関連する、いかなる種類・性質の損失または損害についても、責任を負わない (契約上、不法行為上 (過失の場合を含む)、その他のいかなる責任の法理によるかを問わない) ものとし、当該損失または損害には、直接、間接、特別、付随的、結果的な損失または損害 (第三者が起こした行為の結果被った、データ、利益、業務上の信用の損失、その他あらゆる種類の損失や損害を含みます) が含まれるものとし、それは、たとえ当該損害や損失が合理的に予見可能であったり、ザイリンクスがそれらの可能性について助言を受けていた場合であったとしても同様です。ザイリンクスは、本情報に含まれるいかなる誤りも訂正する義務を負わず、本情報または製品仕様のアップデートを貴殿または貴社に知らせる義務も負いません。事前の書面による同意のない限り、貴殿または貴社は本情報を再生産、変更、頒布、または公に展示してはなりません。一定の製品は、ザイリンクスの限定的保証の諸条件に従うこととなるので、

付録 A: その他のリソースおよび法的通知

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 59

Page 60: Zynq DPU v3.1 IP 製品ガイド - Xilinx...Batch Normalization Split I P の概要 この DPU IP について コア の概要 サポートされるデバイス ファミリ Zynq

https://japan.xilinx.com/legal.htm#tos で見られるザイリンクスの販売条件を参照してください。IP コアは、ザイリンクスが貴殿または貴社に付与したライセンスに含まれる保証と補助的条件に従うことになります。ザイリンクスの製品は、フェイルセーフとして、または、フェイルセーフの動作を要求するアプリケーションに使用するために、設計されたり意図されたりしていません。そのような重大なアプリケーションにザイリンクスの製品を使用する場合のリスクと責任は、貴殿または貴社が単独で負うものです。https://japan.xilinx.com/legal.htm#tos で見られるザイリンクスの販売条件を参照してください。

自動車用のアプリケーションの免責条項オートモーティブ製品 (製品番号に「XA」が含まれる) は、ISO 26262 自動車用機能安全規格に従った安全コンセプトまたは余剰性の機能 (「セーフティ設計」) がない限り、エアバッグの展開における使用または車両の制御に影響するアプリケーション (「セーフティ アプリケーション」) における使用は保証されていません。顧客は、製品を組み込むすべてのシステムについて、その使用前または提供前に安全を目的として十分なテストを行うものとします。セーフティ設計なしにセーフティ アプリケーションで製品を使用するリスクはすべて顧客が負い、製品責任の制限を規定する適用法令および規則にのみ従うものとします。

著作権© Copyright 2019 Xilinx, Inc. Xilinx、Xilinx のロゴ、Alveo、Artix、Kintex、Spartan、Versal、Virtex、Vivado、Zynq、およびこの文書に含まれるその他の指定されたブランドは、米国およびその他各国のザイリンクス社の商標です。AMBA、AMBA Designer、Arm、ARM1176JZ-S、CoreSight、Cortex、PrimeCell、Mali、および MPCore は、EU およびその他各国の Arm Limited の商標です。PCI、PCIe、および PCI Express は PCI-SIG の商標であり、ライセンスに基づいて使用されています。 すべてのその他の商標は、それぞれの保有者に帰属します。

この資料に関するフィードバックおよびリンクなどの問題につきましては、[email protected] まで、または各ページの右下にある [フィードバック送信] ボタンをクリックすると表示されるフォームからお知らせください。フィードバックは日本語で入力可能です。いただきましたご意見を参考に早急に対応させていただきます。なお、このメール アドレスへのお問い合わせは受け付けておりません。あらかじめご了承ください。

付録 A: その他のリソースおよび法的通知

PG338 (v3.1) 2019 年 12 月 2 日 japan.xilinx.comZynq DPU 60