10
昔ちょっとかじった人が 久しぶりにに触ってみた 15年ぶりだね ああ、間違いない。FPGA大和 一洋 1FPGAスタートアップセミナーLT

FPGA startup 第一回 LT

  • Upload
    kz0817

  • View
    321

  • Download
    3

Embed Size (px)

Citation preview

Page 1: FPGA startup 第一回 LT

昔ちょっとかじった人が久しぶりにに触ってみた

15年ぶりだねああ、間違いない。FPGAだ

大和 一洋第1回FPGAスタートアップセミナーLT

Page 2: FPGA startup 第一回 LT

大学院時代、FPGAとの出会い

2000年代初頭物理の実験(宇宙線測定)装置開発

多数のセンサ同時読み出しにFPGA利用

センサー

センサー

センサー

ADC

ADC

ADC

ALTERAAPEX

(VHDL)

ホストシステムへ

数千チャンネル

USB2.0デバイス

コントローラ

Page 3: FPGA startup 第一回 LT

直近10年ミラクル・リナックス社に勤務

Linux/OSSに関連したソフトウェア技術者

Linux OS デジタルサイネージ 運用監視ソフトGStreamer, H.264OpenGL (Mesa)WebKit(C++)

カーネル、ライブラリの不

具合調査・修正

(C言語)

GLibMySQL, RabbitMQDjango(C++, Python, JS)

Page 4: FPGA startup 第一回 LT

文字列分割(トークナイザ)をFPGAで

OSの基本機能のオフロードにトライ

文字列処理の基本機能: 分割

“I have a pen” ⇒ I, have, a, pen■ C言語 strtok()■ Java StringTokenier■ Python split()

春から業務として取り組む半年ぐらいフルタイム

Page 5: FPGA startup 第一回 LT

● Xilinx Virtex-7 XC7VX690T-2○ ALPHA DATA ADM-PCIE-7V3

■ PCI Express: x8, Gen3

● Vivado● Vivado HLS (高位合成コンパイラ)

○ C++で記述

デバイスと開発環境

Page 6: FPGA startup 第一回 LT

時間を要したところ

● 並列的な処理(高速化)のための方式開発

● ホストコンピュータとのデータ入出力効率化○ デバイスドライバ

○ 効率的な転送のための高位合成コンパイラへの指示本日、Tipsを共有したい

Page 7: FPGA startup 第一回 LT

ホストとFPGAのデータ転送での問題

分割器(C++)

AXIPCIe

Bridge(LogiCORE)

PCIeRoot

Complex

CPU

RAM

AXIインターフェイス PCI Express

FPGA

DMAエンジン

バースト転送

バースト転送

バースト転送

バースト転送

バースト転送

シュミレーション 実動作

→時間→時間

期待(シュミレーション )より長い

Page 8: FPGA startup 第一回 LT

効率的なバースト転送のための設定

(1) for文やmemcpy()に与えるバースト長

(2) AXIインターフェイスへのパラメータ追加

#pragma HLS INTERFACE m_axi port=lengths offset=slave bundle=gmem

max_read_burst_length=32 latency=0ベストな値は?

マニュアルでも曖昧な表現、試行錯誤的に決定

● 実機評価で初めて気づいたのでハマった

Page 9: FPGA startup 第一回 LT

性能:対CPUで最大約10倍高速

入力サイズ数KB以下

(1) CPU:速い

(2) FPGA:一定

スループット

最大約4.2GiB/s(1)

(2)

Page 10: FPGA startup 第一回 LT

感想・まとめ

● 15年ぶりだけど、なんとか出来た

○ 高位合成、実用的と思うも、それ用に書く必要■ 既存の資産の流用は難しいのでは

■ C++でもCPU用に書く場合と頭の使ってる場所が違う感じ

● PCI Expressカード

○ バースト転送の効率重要■ Xilinx Vivado HLS: AXIインターフェイスのパラメータ設定

● レポートにまとめて、12月初めに会社から公開予定

● 実際は、SDAccel (OpenCL)でもやってみた

○ 興味ある方、お話しましょう