デル eカタログサイト | デル製品 販売支援サイト
 | 実証!Intel® PAC(インテル® Arria® 10)#4
   
       
   
       
   
    





皆様、お久しぶりでございます。夏の暑さも和らいできた今日この頃いかがお過ごしでしょうか。

#1ではIntel PAC開封の儀を、#2ではIntel Acceleration StackとFPGA driverのインストール、#3ではBMC Firmwareのアップデートをお届けしました。

そして、最終回(予定)#4ではいよいよIntel® PACの一般的な性能測定をしてみたいと思います!
(がっつり映像系の~等になると、組み込み開発が必要になるのでご了承下さい。。。)

実況は組み込み開発にも強い弊社パートナー富士ソフト株式会社さんのサーバルームより、筆者がお送り致します。



Intel Acceleration Stack 同梱のSample programを改変し測定

ホストプログラム :fpgabist(データサイズを変更しながら測定)
AFUデザイン :dma_afu(FPGAからホストに対し、Read / WriteのDMAを実施)

赤線経路のDAMで様々なサイズのデータを転送し計測してみます。





測定結果グラフ





測定結果の考察

片方向(Gbyte/s) 双方向(Gbyte/s)
PCIe Gen3の論理レート 1.0000 2.0000
PCIe Gen3 x8の論理レート 8.0000 16.0000
PCIe Gen3の実効レート 0.9846 1.9692
PCIe Gen3 x8の実効レート 7.8768 15.7536
PACの実効レート(Host→FPGA) 6.7139 13.428
PACの実効レート(FPGA→Host) 5.9268 11.854
転送効率(Host→FPGA) 85% 85%
転送効率(FPGA→Host) 75% 75%



Intel® PACのHost → FPGAのDMAは、一般的な同規格のPCIeカードの85%で、ちょっと遅めですね。
FPGA → HostのDMAは75%ですが、これは都度memalloc(動的メモリの確保)をしている為だそうで、実装レベルでカバー可能だそうです!(頼もしい!)

総じて、PAC用ドライバーとFIUの性能が良くない結果になっていますが、最適化がされていないのではないか、というのが組み込み開発のプロフェッショナルのご意見でした!



動画転送を考えてみよう!

まず、現在主流の映像規格ごとの必要転送レートを算出してもらいました。

映像サイズごとの転送レート

規格 X画素数
[pixel]
Y画素数
[pixel]
ネイティブ解像度
[pixel]
HDTV(720p) 1,280 720 921,600
HDTV(1080p) 1,920 1,080 2,073,600
4K UHDTV 3,840 2,160 8,294,400
DCI 4K 4,096 2,160 8,847,360
8K UHDTV 7,680 4,320 33,177,600



画像データサイズ 4:2:0
YCbCr 10bit
[MByte]
4:2:2
YCbCr 10bit
[MByte]
4:4:4
RGB 10bit
[MByte]
HDTV(720p) 1.65 2.20 3.30
HDTV(1080p) 3.71 4.94 7.42
4K UHDTV 14.83 19.78 29.66
DCI 4K 15.82 21.09 31.64
8K UHDTV 59.33 79.10 118.65



必要転送レート 4:2:0
YCbCr 10bit
60fps
[MByte/s]
4:2:2
YCbCr 10bit
60fps
[MByte/s]
4:4:4
RGB 10bit
60fps
[MByte/s]
HDTV(720p) 98.88 131.84 197.75
HDTV(1080p) 222.47 296.63 444.95
4K UHDTV 889.89 1,186.52 1,779.79
DCI 4K 949.22 1,265.63 1,898.44
8K UHDTV 3,559.57 4,746.09 7,119.14



・・・映像の世界は難しいですね、筆者はさっぱりです。。。
4 : 4 : 4 はあまり使われる事はないそうです。
4 : 2 : 2 は映像素材等の業務用途で使用されるそうです。
4 : 2 : 0 はテレビ放送やDVD/BDなどの、最終的に配信される際に使用されるとの事。

4K / 8K放送も始まり、テレビやレコーダーも4K対応が当たり前になりつつあるので、4K / 8K 部分をしっかり見てみたいと思います!




Intel® PACのDMA性能に当てはめてみるぞ!

Intel® PACの実効レートに対する使用率

規格 4:2:0 YCbCr
10bit×60fps
4:2:2 YCbCr
10bit×60fps
4:4:4 RGB
10bit×60fps
HDTV(720p) 1.6% 2.2% 3.3%
HDTV(1080p) 3.7% 4.9% 7.3%
4K UHDTV 14.7% 19.6% 29.3%
DCI 4K 15.6% 20.9% 31.3%
8K UHDTV 58.7% 78.2% 117.3%



おぉ!! 4Kはもはや何も問題ないですね!(最適化されていないのに無問題とは・・・)
8Kも4 : 2 : 2はまり余裕がないものの、決してダメな感じではないですね!


FPGA上の画像処理ロジックの消費リソースについても考えてみる

Intel® PAC
AFU リソース
(参考)SoC社 リアルタイムエンコーダIPコアの
消費リソース
H.264/AVC
4K 60fps
H.265/HEVC
4K 30fps
H.265/HEVC
4K 60fps
ALMs 382,273 60,000 100,000 200,000
Block RAMs [Kb] 49,360 7,000 10,000 20,000
DSPs 1402 310 340 680



実装する映像処理として動画エンコーダーを想定し、どのレベルまで実装可能か検討してもらいました!
プロフェッショナルのknowledgeと経験を基に考慮すると、4KターゲットのH.265 / HEVC 60fpsはIntel® PAC D5005(Stratix 搭載版)が必要になりそうだとの事です。 このあたりは、カタログスペックからは読み取れないベテラン開発者ならではの考察ですね!


vs ソフトウェアエンコード

検証の最後に4K UHDTV(3840 x 2160)60fps 5分25秒の映像をエンコードする時間を比較してもらいました!
(なんと!実際にケーブルテレビ局さんで4K配信実験に使われたデータとの事です)

ソフトウェアエンコード:PowerEdge R740でffmpegを実行
ハードウェアエンコード:FPGA特化のコーデック製品を開発をされている某社のEncode IP CoreをIntel® PAC(Arria10)に適用(発売時期未定のものを今回特別に実装して頂きました。)

ソフトウェアエンコード Intel® PAC
(Arria10 GX FPGA 搭載版)
H.264/AVC H.265/HEVC H.264/AVC H.265/HEVC
エンコード時間 6分22秒 20分43秒 5分25秒 5分25秒
高速化倍率 1.18倍 3.82倍



Intel® PAC(Arria10 GX FPGA 搭載版)による映像処理性能の検討纏めとしては、
・4K映像を処理する能力はあるが、8Kには少し不足する
・H.264 / AVCとH.265 / HEVC(30fpsまで)のエンコード処理を実現可能
・H.265 / HEVCエンコードの場合、ソフトウェアエンコードに比べて約4倍の性能


という事で、Intel® PAC(Arria10)は汎用機を専用機に変えるだけのポテンシャルを秘めていると、筆者は実感出来た検証でした。
より詳細な技術情報やIntel® PACを活用した映像系ソリューションの情報等は、富士ソフト株式会社の組み込み開発者向けサイトへ是非、足を運んでみてください。

多大なご協力を(実質すべてやって)頂いた富士ソフト株式会社の組み込み開発技術者の方々、記事の執筆にあたって多くの支援をしてくれた方々に感謝申し上げたいと思います。


予定通り、本記事にて最終回となります!
またいつかお会いする時まで、じゃぁねっ!

パートナーセールスエンジニア  中西 祐輔


バックナンバー

AIや映像変換を高速化する最適化とは?!
実証!Intel® PAC(インテル® Arria® 10)#1
実証!Intel® PAC(インテル® Arria® 10)#2
実証!Intel® PAC(インテル® Arria® 10)#3
実証!Intel® PAC(インテル® Arria® 10)#4



   
       
   
       
   
    

 

タグ: , , , , , ,