FPGA Beschleuniger - Persönliche Webseiten der …ubicomp/projekte/master07...NVIDIA CUDA, AMD...

Post on 24-Mar-2018

221 views 2 download

transcript

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