Stream Processing und High- Level GPGPU Sprachen

Ähnliche Dokumente
Grafikkarten-Architektur

OpenCL Implementierung von OpenCV Funktionen

OpenCL. Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer

GPGPU mit NVIDIA CUDA

Moderne parallele Rechnerarchitekturen

GPU-basierte Beschleunigung von MapReduce am Beispiel von OpenCL und Hadoop

Multicore Herausforderungen an das Software-Engineering. Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück

OpenGL. (Open Graphic Library)

Untersuchung und Vorstellung moderner Grafikchiparchitekturen

Fachgebiet Programmiermethodik Prof. Dr. Claudia Leopold. Seminar Programmierung von Grafikkarten. GPGPU Basiskonzepte. von.

Seminar GPU-Programmierung/Parallelverarbeitung

Access 2010 Programmierung Import und Export nach Excel

Grundlagen der Spieleprogrammierung

VBA-Programmierung: Zusammenfassung

GPU-Computing im Rahmen der Vorlesung Hochleistungsrechnen

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

GPGPU-Architekturen CUDA Programmiermodell Beispielprogramm Organiosatorisches. Tutorial CUDA. Ralf Seidler

Instruktionssatz-Architektur

Protected User-Level DMA in SCI Shared Memory Umgebungen

Computer-Architektur Ein Überblick

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn

Grundlagen der Rechnerarchitektur

Linux auf FPGAs. Massgeschneiderte Computersysteme. Christoph Zimmermann, Marc-André Beck. 1. März Berner Fachhochschule MedOnStream

GPU-Computing. Michael Vetter

Eine Einführung in die Architektur moderner Graphikprozessoren

1 Bedingungen und der Typ bool. Informatik I: Einführung in die Programmierung 5. Bedingungen, bedingte Ausführung und Schleifen. Vergleichsoperatoren

Staff. Tim Conrad. Zeitplan. Blockseminar: Verteiltes Rechnen und Parallelprogrammierung. Sommer Semester Tim Conrad

Grundlagen der Rechnerarchitektur. Ein und Ausgabe

Friedrich Kittler s digital legacy Challenges, findings and approaches in dealing with complex data collections

1. Übung zu "Numerik partieller Differentialgleichungen"

Implementierung und Evaluierung von Video Feature Tracking auf moderner Grafik Hardware

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT

Grundlagen der Parallelisierung

Symposium on Scalable Analytics. Skalierbare Analysen mit EXASolution

Computer Graphik I Intro

Evolutionäre Algorithmen Software

CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1

Gegenüberstellung herkömmlicher Shader- Hochsprachen und der Metasprache Sh bei der GPU Programmierung

Tag der Umweltmeteorologie Michael Kunz

Aktuelle Themen der Informatik: Virtualisierung

Grafiktreiber im Linuxkernel - die Außenseiter -

Hochleistungsrechnen Hybride Parallele Programmierung. Prof. Dr. Thomas Ludwig Universität Hamburg Informatik Wissenschaftliches Rechnen

Linux-Cluster mit Raspberry Pi. Dr. René Richter Sächsische Studienakademie Dresden

Parallele Programmierung mit GPUs

Nebenläufige Programmierung

MF Breadcrumbs. Sergej Schefer & Fabian Marx

Grundlagen der Programmierung

Entwurf einer universellen rekonfigurierbaren Architektur für Visual Computing. Urs Kanus WSI / GRIS Universität Tübingen urs@gris.uni-tuebingen.

Smartphone Entwicklung mit Android und Java

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Algorithmen mit Python

Video Line Array Highest Resolution CCTV

Modellierung und Programmierung 1

Grundlagen der Programmierung in C Funktionen

2D22 Prinzipien der Softwareentwicklung. Prinzipien der Softwareentwicklung S. Strahringer 1

Programmierkurs: Delphi: Einstieg

Großübung zu Einführung in die Programmierung

Einführung in Hauptspeicherdatenbanken

Klausur zu High Performance Computing 09. Juli 2011, SS 2011

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Einführung in das parallele Programmieren mit MPI und Java

Grid-Systeme. Betrachtung verschiedener Softwareplattformen zur Realisierung von Grids und Vorstellung des Globus Toolkit Grid Systeme 1

Probeklausur: Programmierung WS04/05

KryptoCore-Entwurf und Funktionale Programmierung

XEN Performance. Projektpraktikum Informatik. Arne Klein Arne Klein () XEN Performance / 25

Ein kleines Computer-Lexikon

Embedded OS-9 auf RISC-Prozessoren von Motorola

Peter Dikant mgm technology partners GmbH. Echtzeitsuche mit Hadoop und Solr

Inhalt. Prozessoren. Curriculum Manfred Wilfling. 28. November HTBLA Kaindorf. M. Wilfling (HTBLA Kaindorf) CPUs 28. November / 9

Optimierung eines neuen Logarithmic-Search-Verfahrens zum Image Mosaicing unter Einsatz des CUDA-Frameworks

Boundary Scan Days 2009

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

2.2 Rechnerorganisation: Aufbau und Funktionsweise

Leistungs- und Geschwindigkeitssteigerung. Dipl.-Ing. Sebastian F. Kleinau Applikationsingenieur

Grundlagen der Rechnerarchitektur

Projekt Systementwicklung

Grundlagen der Rechnerarchitektur

Blockseminar: Verteiltes Rechnen und Parallelprogrammierung. Sommer Semester Tim Conrad

Grundlagen der Programmierung 2. Parallele Verarbeitung

Hochschule Bremen. Rechnerstrukturen Labor WS 04/05 I7I. Thema: Grafikkarten. Laborbericht. Datum

0. Einführung. C und C++ (CPP)

Aktuelle Trends und Herausforderungen in der Finite-Elemente-Simulation

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

Ein Streifzug durch die Programmiersprachenlandschaft in der Schule. Gerald Futschek TU Wien Informatiktag 2013

Kapitel 3. Mein erstes C-Programm

Jörn Loviscach Hochschule Bremen

Leistungsverteilung im Rechner

Allgemeine Informatik Thema 1 Informatik; Konzepte

GPU-Programmierung: OpenCL

Transkript:

Stream Processing und High- Level GPGPU Sprachen Seminar Programmierung von Grafikkarten Jens Breitbart

Problem 5000% 4000% 3000% 2000% Rechenleistung: +71% pro Jahr Bandbreite: +25% pro Jahr Zugriffszeit: +5% pro Jahr 2 1000% 0% 2005 2006 2007 2008 2009 2010 2011 2012

Übersicht Stream Processing High-Level GPGPU Sprachen Sh Crashkurs Zusammenfassung 3

Stream Processing Übersicht 4 Stream Processing Paradigma Was ist das? Was ist ein Stream? Was ist ein Kernel? Beispiel Vorteile des Stream Processing Paradigmas? Kommunikation Berechnung GPU Pipeline aus Sicht des Stream Processing Fazit

SP Was ist das? 5 Ausdrücken von Berechnungen durch Streams und Kernel

SP Was ist ein Stream? Geordnete Menge von Daten mit folgenden Eigenschaften: gleicher Datentyp für alle Elemente im Stream unbegrenzte Länge (meist sehr lang) erlaubte Operationen kopieren Substreams aus Stream bilden 6 Elemente mit Hilfe eines weiteren Index-Streams indizieren Kernel anwenden

SP Was ist ein Kernel? Funktion mit folgenden Eigenschaften: Eingabe und Ausgabe sind Streams wird immer auf kompletten Stream angewendet Ausgabe hängt nur von der Eingabe ab 7 Berechnung eines Elementes im Ausgabestream unabhängig von den Berechnungen der anderen Elemente

SP Was ist das? 8 Ausdrücken von Berechnungen durch Streams und Kernel

9 SP Beispiel

10 SP Beispiel

SP Vorteile Kommunikation Lesen des kompletten Streams von externem Speicher Amortisierung der Kosten für die Initialisierung Kommunikation zwischen Kernels kann innerhalb des Prozessors erfolgen aggressives Caching ermöglicht Weiterrechnen trotz fehlender Daten 11

SP Vorteile Noch mehr? Stichwort: Parallelität 12

SP Vorteile Berechnung Parallelität mehrere Kernel parallel ausführen task level parallelism Elemente innerhalb der Kernel parallel berechnen data level parallelism Befehle für das Berechnen eines Elements gleichzeitig ausführen instruction level parallelism 13

SP GPU Pipeline 14 Alternative z.b. Cell BE

SP Fazit auf passender Hardware kann Stream Processing sehr viel Performance freisetzen GPUs aber: starke Einschränkungen schwer zu programmieren nicht für alle Aufgaben gut geeignet 15 Stream Processing auf GPUs Stream Processing-Einschränkungen Hardware-Einschränkungen

GPGPU Sprachen Übersicht High-Level GPGPU Sprachen Glift Accelerator PyGPU BrookGPU Sh Fazit 16

GPGPU Sprachen Überblick Glift Bibliothek benutzt C++ und Cg Ziel: getrennte Entwicklung von Algorithmen und Datenstrukturen STL für Cg aktuell noch nicht verfügbar entwickelt an der Stanford University 17

GPGPU Sprachen Überblick Accelerator Bibliothek benutzt.net bietet data level parallelism durch spezielle Datenstrukturen ( ParallelArray ) aktuell noch nicht verfügbar entwickelt von Microsoft Research 18

GPGPU Sprachen Überblick PyGPU Bibliothek benutzt Python und Cg Bibliothek für Bildbearbeitung auf GPUs, bietet aber auch mathematische Grundfunktionalität V 0.1 verfügbar entwickelt an der Lund University (Schweden) 19

GPGPU Sprachen Überblick 20 BrookGPU eigenständige Sprache Erweiterung von ANSI C implementiert Stream Processing Paradigma kernel void saxpy (float alpha, float4 x<>, float4 y<>, out float4 result<>) { result = (alpha * x) + y; } Open Source, aber praktisch keine sichtbare Entwicklung entwickelt an der Stanford University

GPGPU Sprachen Überblick Sh komplett in C++ integrierte Sprache unterstützt verschiedene Backends: CPU, GPU, Cell BE Stream Processing & Shader für 3D-Anwendungen Open Source aktive Entwicklung entwickelt an der Waterloo University (Kanada) bzw. durch RapidMind 21

GPGPU Sprachen Fazit es gibt noch viele Probleme z.b. kein sicherer Schutz vor Hardware- Limitationen aktuell: Forschungsgebiet, nicht unbedingt für den Endanwender 22 aber: für Entwickler ohne Erfahrung in 3D- Anwendungen deutlich einfacher

Sh Crashkurs Sh Crashkurs Immediated mode Stream programming Kontrollkonstrukte Fazit 23

Sh Crashkurs - Immediated mode ShPoint3f a (0.23, 0.42, 2.3); ShVector3f b (4.2, 10.0, 1.0); ShMatrix3x4f M; ShPoint3f c= M (a + 0.5 * normalize(b)); Berechnung auf Host System, nicht auf GPU Sh als Bibliothek 24

Sh Crashkurs - Streaming prog. 25 ShMatrix3x4f M; ShProgram displacement = SH_BEGIN_PROGRAM( gpu:stream ) { ShInputPoint3f a; ShInnputVector3f b; ShOutputPoint3f c = M (a + 0.5 * normalize(b)); } SH_END; ShChannel<ShPoint3f> p, q; ShChannel<ShVector3f> v; //Channel mit Daten füllen q = displacement << p << v;

Sh Crashkurs Was passiert hier? 26 bool X = true; ShProgram simple = SH_BEGIN_PROGRAM( gpu:stream ) { ShInputVector3f a; ShOutputVector3f b; if (X) b = -a; else b = a; } SH_END; X=false; z = simple << just_a_stream;

Sh Crashkurs...oder zur Laufzeit 27 ShProgramm easy = SH_BEGIN_PROGRAMM( gpu:stream ) { ShInputVector3f a; ShInputAttrib1f X; ShOutputVector3f b; SH_IF (X) { //wenn X>0 b = -a; } SH_ELSE { b = a; } SH_ENDIF; } SH_END;

Sh Crashkurs Fazit außerdem gibt es z.b. noch Texturen, Streams, Schleifen, Sh ermöglicht Entwicklung gemäß dem Stream Processing Paradigma relativ einfach und (theoretisch) ohne GPU- Kenntnisse zu erlernen Sh schützt aber nicht vor GPU-Limitationen 28 Sh enthält noch Bugs

Zusammenfassung Stream Processing Stream Processing = Berechnungen mit der Hilfe von Streams und Kernel ausdrücken GPU kann als Stream Prozessor interpretiert werden High-Level GPGPU Sprachen es gibt einige keine ist wirklich gut 29

Literatur John Owens: Streaming Architectures and Technology Trends Pascal Vicaire: Stream Processing Ujival J. Kapasi et al.: Programmable Stream Processors Michael McCool, Stefanus Du Toit: Metaprogramming GPUs with Sh 30

Literatur Ian Buck et al.: Brook for GPUs: Stream Computing on Graphics Hardware David Tarditi et al.: Accelerator: simplified programming of graphics processing units for general-purpose uses via data parallelism Aaron E. Lefohn et al.: Glift: Generic, Efficient, Random-Access GPU Data Structures 31 Calle Lejdfors, Lennart Ohlsson : PyGPU: A high-level language for high-speed image processing