fpga beschleuniger -...

18
Your Name Your Title Your Organization (Line #1) Your Organization (Line #2) FPGA Beschleuniger 15.12.2008 Armin Jeyrani Mamegani HAW Hamburg Department Informatik

Upload: duongdat

Post on 24-Mar-2018

248 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

Your NameYour Title

Your Organization (Line #1)Your Organization (Line #2)

FPGA Beschleuniger

15.12.2008

Armin Jeyrani Mamegani

HAW HamburgDepartment Informatik

Page 2: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

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

Page 3: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

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

Page 4: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

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?

Page 5: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

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

Page 6: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

6

NVIDIA CUDA

Geforce 8 GPU Architektur128 Thread-ProzessorenHW Thread Execution ManagerSIMD Architektur

Page 7: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

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)

Page 8: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

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

Page 9: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

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

Page 10: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

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

Page 11: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

11

OpenCL

Platform ModelStrukturiert in

Compute DeviceCompute Unit

Processing Element

Page 12: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

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

Page 13: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

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

Page 14: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

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

Page 15: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

15

FPGA Beschleuniger

FrameworkVHDL-Bibl.Code-SplitterCode-GeneratorAusführungsskriptFPGA Runtime

FPGA TreiberLaufzeitkonfigurationFPGA Mgmt.Zugriff auf FPGA

Page 16: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

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

Page 17: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

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

Page 18: FPGA Beschleuniger - users.informatik.haw-hamburg.deusers.informatik.haw-hamburg.de/~ubicomp/projekte/master07-08-proj/...NVIDIA CUDA, AMD Stream Computing, OpenCL ... Frei erhältliches

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