View
249
Download
4
Category
Preview:
Citation preview
Your NameYour Title
Your Organization (Line #1)Your Organization (Line #2)
FPGA Beschleuniger
15.12.2008
Armin Jeyrani Mamegani
HAW HamburgDepartment Informatik
2
Einleitung
Wiederholung aus AW1: Handy Plattform, Dynamic Reconfigurable Computing
RekonfigurierbareLogik
(FPGA)Prozessor
Speicher
SW:Kontrolle
z.B.:OS
HW:Rechenintensive Tasks,
z.B.: Encryption, Video Compression,...
HW/SW Kommunikation:Parameter, Zwischenergebnisse,...
Bus
3
Einleitung
Bessere IdeeWarum Handy Plattform?Warum nicht allgemeine Plattform?
z.B. für PC, Handy, Embedded Computer,...
VoraussetzungBeschriebene Architektur (Prozessor, FPGA, Speicher,
Bussystem)
Problem: EntwicklerKennt die HW nicht und will die HW auch nicht kennenZu wenig Entwickler, die sowohl SW (z.B. C) als auch
HW (z.B. VHDL) entwickeln könnenAber C kann fast jeder
4
Einleitung
Entwicklung im PC SegmentAuslagerung rechenintensiver Berechnungen auf den
GrafikprozessorNVIDIA CUDA, AMD Stream Computing, OpenCL
Entwicklung im Server SegmentZum Teil Grafikprozessorsysteme (NVIDIA)Zusätzlicher FPGA zu AMD Opteron Prozessoren
FPGA-Beschleuniger gibt es im PC-Segment nichtWas machen NVIDIA und Co?
5
NVIDIA CUDA
Compute Unified Device ArchitecturePlatform für paralleles high-performance computing auf der GPUC/C++ EntwicklungswerkzeugeGPU-HW transparent für den EntwicklerThreadmgmt. transparent für den EntwicklerGeeignet für datenintensive Applikationen mit einfach-genauen Fließkommaberechnungen
6
NVIDIA CUDA
Geforce 8 GPU Architektur128 Thread-ProzessorenHW Thread Execution ManagerSIMD Architektur
7
NVIDIA CUDA
Software-StackCUDA Libs
FFT, BLASCUDA Runtime API
Hoch abstrakte FunktionenCUDA Driver API
Besserer Zugriff auf GPUGPU-Code wird in C Syntax geschriebenCuda Parser teilt den Code in GPU und CPU Code auf (__global__ für GPU Code)
8
NVIDIA CUDA
ProBeschleunigt rechenintensive ApplikationenFrei erhältliches SDKNVIDIA Grafikkarten weit verbreitetKompatibilität zu zukünftigen GPUs sichergestellt
KontraFest verdrahtet
Flexibilität liegt nur in der SoftwareAbhängig von der ProduktlinieAbhängig vom HerstellerGrafikprozessor auch manchmal mit Grafikberechnung
beschäftigt
AMD ähnlich
9
OpenCL
Open Computing LanguageNutzung aller Recheneinheiten eines Systems
CPUs, GPUs, DSPsErlaubt daten- und taskparalleles ComputingC-Basiert (ISO C99) mit speziellen Erweiterungen für paralleles ProgrammierenFunktioniert so aber nicht mit FPGAsEinfacher Treiber für FPGA nicht ausreichendSynthesefähige (Zwischen-)Sprache wird benötigtKommunikationsmodell wird benötigt
10
OpenCL
Platform APIAbstraktion über diverse DevicesDevices zur Laufzeit entdecken, auswählen und
initialisierenRechenrahmen und Ausführungsqueues erstellen
Runtime APIAusführen von KernelsMgmt. vom Scheduling und Memory
Mehrere SichtenPlatform ModelExecution ModelMemory ModelProgramming Model
11
OpenCL
Platform ModelStrukturiert in
Compute DeviceCompute Unit
Processing Element
12
OpenCL
Execution ModelCompute Kernel
Basisseinheit, vergleichbar mit C-Funktiondaten- oder taskparallelKernelinstanzen werden auf den Devices ausgeführt
Host-ProgrammKontextdefiniton und Ausführungsmgmt. für die Kernel
KontextDevicesKernels: OpenCL Funktionen, die auf den Devices ausgeführt
werdenProgram Objects: Kernelcode und ExecutableMemory Objects: Speicher, sichtbar für Host und Kernel
Command-Queue: Koordiniert die Ausführung der Kernel auf dem Device
13
FPGA Beschleuniger
Beispiel: Vektoradditionx
1,...,x
n + y
1,...,y
n
Code:for (i = 0; i < n; i++)
z[i] = x[i] + y[i];
CPU: sequentielln x Ausführungszeit
FPGA: parallel (datenparallel)1 x Ausführungszeit
14
FPGA Beschleuniger
HW-AufbauOperationen werden als Komponenten im FPGA
realisiert
FPGA (Device)
CPU (Host)Comm.-Contr.
Component 1InReg. 1
InReg. N
Op.PSEUDOBUS
PERIPHERALBUS
OutReg
Component 1InReg. 1
InReg. N
Op. OutReg
Component 1InReg. 1
InReg. N
Op. OutReg
Component 1InReg. 1
InReg. N
Op. OutReg
Component 1InReg. 1
InReg. N
Op. OutReg
Component 1InReg. 1
InReg. N
Op. OutReg
Component 1InReg. 1
InReg. N
Op. OutReg
Component NInReg. 1
InReg. N
Op. OutReg
Z.B. PCIeBus
Z.B. PCIeController
15
FPGA Beschleuniger
FrameworkVHDL-Bibl.Code-SplitterCode-GeneratorAusführungsskriptFPGA Runtime
FPGA TreiberLaufzeitkonfigurationFPGA Mgmt.Zugriff auf FPGA
16
FPGA Beschleuniger
Zur LaufzeitApplikation wird gestartetFPGA wird automatisch zur Laufzeit ProgrammiertSobald FPGA bereit, erhält es die Daten zum RechnenKommunikation zw. Hostprogramm und FPGA erfolgt
durch Lesen und Beschreiben von RegisternApplikation wird beendetFPGA steht anderen Applikationen zur Verfügung
FPGA Runtime muss diese Abstraktion bereitstellen
17
Ausblick
1. Codeumsetzer➔ Code für den Zugriff auf den Bus und an die richtigen
Register muss in den Code eingefügt werden2. Bibl. für einfache VHDL Operationen
➔ z.B.: unsigned char fpga_add8(unsigned char a, ...)3. Einsatz des Codeumsetzers anhand einer Beispielappl.4. FPGA Runtime5. Skript oder Programm für die Automatische Abfolge6. Evaluierung durch Aufzeigen eines Performancegewinns
18
Literatur
Wayne WolfHigh Performance Embedded Computing, Elsevier(MK), 1. Auflage, 2007Brian Bailey, Grant Martin and Andrew PizialiESL Design and Verification. Morgan Kaufmann, 2007Scott Hauck and Andre DeHonReconfigurable Computing. Morgan Kaufmann, 2008AMDAMD Stream Computing, User Guide, Oktober 2008Tom R. HalfhillParallel Processing with CUDA, Microprocessor Report, Januar 2008NVIDIANVIDIA CUDA, Refenrence Manual, Version 2.0, Juni 2008NVIDIANVIDIA CUDA, Programming Guide, Version 1.1, November 2007Govindaraju et. al.High Performance Discrete Fourier Transforms on Graphics Processors, Microsoft Corp., November 2008Aaftab MunshiThe OpenCL Specification, The OpenCL Working Group, Version 1.0, Dezember 2008Neil TrevettOpenCL, The Open Standard for Heterogenous Parallel Programming, November 2008Aaftab MunshiOpenCL, Parallel Computing on the GPU and CPU, SIGGRAPH 2008
Recommended