Post on 29-Aug-2020
transcript
FPGA GPU Co-Design
Philipp HuberZHAW, Institute of Embedded Systems
hubp@zhaw.ch
n Moderne Computer sind Heterogene Systeme• Verwendung von verschiedenen Prozessor-Architekturen, z.B. CPU, GPU,
FPGA• Höhere Rechenleistung durch spezialisierte Prozessoren• Reduzierter Stromverbrauch pro Operation
n Partitionierung von Aufgaben auf Heterogenen Systemenn Kommunikation und Synchronisation zwischen Chips
2019-09-022
Um was geht es
Einleitung Konzept Implementierung Resultate Fazit Schluss
n Implementierung eines effizienten FPGA-GPU Co-Design• Datenaustausch über PCIe• Synchronisation zwischen FPGA und GPU• Minimale Host-Interaktion
n Beispielanwendung
2019-09-023
Ziel
Einleitung Konzept Implementierung Resultate Fazit Schluss
Resultat an CPUGPU Verarbeitung
FPGA Vorverarbeitung
Kamera 0
Kamera 1
PC
PCIe PCIe
n PCIe (Peripheral Component Interconnect Express)• Standard zum verbinden von Peripherie-Devices mit dem Chipset• Punkt zu Punkt Verbindungen• 1 bis 16 Data Lanes• Verschiedene Symbolraten möglich• Typische Datenraten: Gen2x4 (16GBit), Gen3x16 (126GBit)
2019-09-024
PCIe
Einleitung Konzept Implementierung Resultate Fazit Schluss
https://en.wikipedia.org/wiki/PCI_Express#/media/File:PCI_Express_logo.svg
2019-09-025
Direkter und Indirekter Datentransfer
Einleitung Konzept Implementierung Resultate Fazit Schluss
2019-09-026
Linux Memory Management
Einleitung Konzept Implementierung Resultate Fazit Schluss
Linux Memory typische Page-Size: 4kB
MMU
MMU IOMMU IOMMU MMU
MMU IOMMU IOMMU MMU
2019-09-027
Linux Memory Management
Einleitung Konzept Implementierung Resultate Fazit Schluss
2019-09-028
FPGA oder GPU Master Ansatz
Einleitung Konzept Implementierung Resultate Fazit Schluss
n FPGA Master Ansatz• Die DMA Engine ist im FPGA• Die GPU mappt Memory mit GPUDirect RDMA in den IO-Memory Bereich• Das FPGA kann das gemappte GPU RAM lesen und schreiben• Nvidia unterstützt das nur mit Quadro und Tesla GPUs
n GPU Master Ansatz• Das FPGA mappt Memory in den IO-Memory• Die DMA Engine ist in der GPU• Die GPU kann das gemappte FPGA RAM lesen und schreiben
n à FPGA Master bietet bessere Kontrolle über DMA Enginen à FPGA Master erlaubt Systeme ohne CPU Interaktion
2019-09-029
FPGA oder GPU Master Ansatz
Einleitung Konzept Implementierung Resultate Fazit Schluss
n FPGA Master Konzepte: • XDMA: Xilinx DMA IP• FDMA: Framebasierte DMA Engine an der ZHAW, InES entwickelt
2019-09-0210
XDMA Konzept
Einleitung Konzept Implementierung Resultate Fazit Schluss
n Host synchronisiert FPGA und GPU Prozesse• Jeder Datentransfer wird vom Host initialisiert
2019-09-0211
FDMA Konzept
Einleitung Konzept Implementierung Resultate Fazit Schluss
n ZHAW FDMA IP und AXI to PCIe Bridge IP von Xilinx• Unterstützt bis zu 4 RX und 4 TX Buffer
n Host konfiguriert zu Beginn FPGA und GPU • Nach Konfiguration ist keine Host-Interaktion mehr nötig• Synchronisation zwischen FPGA und GPU über Flags im GPU RAM
ZHAW
2019-09-0212
Linux Device Treiber und Libraries
Einleitung Konzept Implementierung Resultate Fazit Schluss
n RDMA Device Treiber• Spiegeln von GPU Memory in den IO-Memory
n XDMA Ansatz• XDMA Device Treiber
- Konfiguriert XDMA IP und initialisiert Datentransfer• XMDA-API
- Library für die Verwendung von XDMA und RDMA Funktionalitäten
n FDMA Ansatz• FDMA Device Treiber
- Konfiguriert FDMA IP• FDMA-API
- Library für die Verwendung von FDMA und RDMA Funktionalitäten
2019-09-0213
Verwendete Hardware
Einleitung Konzept Implementierung Resultate Fazit Schluss
n Linux Host Computer• Dell Precision Tower 5820• CPU: Intel Xeon quad core E5-1620 v3 @ 3.5GHz• Chipset: Intel C610/X99• PCIe: 2x Gen3x16, 1x Gen3x8, 1x Gen2x4 1x Gen2x1
n GPU• Nvidia Quadro P2000• Cores: 1204 Pascal• Memory: 5GB GDDR5• PCIe: Gen3x16 à 126.03 GBit/s
n FPGA Modul• Enclustra KX1 mit Baseboard PE1• FPGA: Xilinx XC7K325T-2FFG676I• RAM: 2.5GB DDR3• PCIe: Gen2x4à 16 GBit/s
2019-09-0214
RDMA und cudaMemcpy
Einleitung Konzept Implementierung Resultate Fazit Schluss
Busauslastung:(Link Speed 126.03 GBit/s)
• cudaMemcpy_gpu2host:Bis 83.5%
• cudaMemcpy_host2gpu:Bis 78.8%
• Direct_cpy_gpu2host:Bis 5.9%
• Direct_cpy_host2gpu:Bis 19.1%
2019-09-0215
XDMA und FDMA
Einleitung Konzept Implementierung Resultate Fazit Schluss
Busauslastung:(Link Speed 16 GBit/s)
• xdma_fpga2gpu:Bis 74.6%
• xdma_gpu2fpga:Bis 86.1%
• fdma_fpga2gpu:Bis 72.1%
• fdma_gpu2fpga:Bis 42.7%
n Gründe für tiefere maximale Busauslastung mit FDMA• AXI to PCIe Bridge IP von Xilinx ist der Flaschenhals• Vermutung: zu wenige Ausstehende Leseanfragen sind unterstütz
n Verbesserungsmöglichkeiten:• AXI to PCIe Bridge IP in UltraScale+ FPGAs testen• Eigene PCIe Implementierung
2019-09-0216
XDMA und FDMA
Einleitung Konzept Implementierung Resultate Fazit Schluss
Busauslastung:(Link Speed 16 GBit/s)
• xdma_fpga2gpu:Bis 74.6%
• xdma_gpu2fpga:Bis 86.1%
• fdma_fpga2gpu:Bis 72.1%
• fdma_gpu2fpga:Bis 42.7%
2019-09-0217
XDMA Transfer Jitter
Einleitung Konzept Implementierung Resultate Fazit Schluss
2019-09-0218
FDMA Transfer Jitter mit und ohne X11
Einleitung Konzept Implementierung Resultate Fazit Schluss
2019-09-0219
Fazit
Einleitung Konzept Implementierung Resultate Fazit Schluss
n XDMA+ Flexible Source, Destination und Transfergrösse+ Effiziente PCIe Implementierung mit Xilinx XDMA IP- Abhängig von Host Reaktivität (nicht Echtzeit tauglich)
n ZHAW FDMA+ Nach Setup keine Host-Interaktion nötig+ Stabile Ausführungszeit, besonders ohne X11 (Echtzeit tauglich)- Nur statische Start- und Ziel-Adressen und Länge möglich, für Stream Verarbeitung aber kein Problem- Langsamerer Lesetransfer (nicht relevant für typische Pipelines)
2019-09-0220
Anwendung am InES
Einleitung Konzept Implementierung Resultate Fazit Schluss
n Neue ZHAW FPDLink-III Grabber-Karte• 6x1080p@60FPS oder 3x2160p@30FPS über FPDLink-III• 2x2Lane CSI-2 mit max 1.5GHz (Z.B. Raspberry pi Cam)• Enclustra Mercury+ XU8 mit Xilinx Zynq UltraScale+ xczu7ev-2DBVB900I• PCIe Generation 3 mit bis zu 16 Lanes