Automatische OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern
|
|
- Ferdinand Walter
- vor 6 Jahren
- Abrufe
Transkript
1 Automatische OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern Bachelorarbeit Moritz Lüdecke 8. Juli 2014 INSTITUT FÜR TECHNISCHE INFORMATIK - LEHRSTUHL FÜR RECHNERARCHITEKTUR UND PARALLELVERARBEITUNG KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
2 Motivation RAM GPU FPGA RAM PCI CPU CPU RAM Programmierer muss angeben,... auf welche Hardwarekomponenten der Code ausgeführt werden soll.... welche Daten auf der jeweiligen Hardwarekomponente verarbeitet werden soll. Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
3 Motivation Großes Ziel Alle Recheneinheiten ausnutzen Vermeiden Wenn genug Tasks vorhanden sind: Task parallel ausführen Ansonsten aufteilen Doppelte Berechnungen Unnötige Kopiervorgänge Ziel der Bachelorarbeit Abhängigkeit der Eingabedaten auflösen Daraus ein Speicherzugriffsmuster bilden Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
4 Motivation Großes Ziel Alle Recheneinheiten ausnutzen Vermeiden Wenn genug Tasks vorhanden sind: Task parallel ausführen Ansonsten aufteilen Doppelte Berechnungen Unnötige Kopiervorgänge Ziel der Bachelorarbeit Abhängigkeit der Eingabedaten auflösen Daraus ein Speicherzugriffsmuster bilden Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
5 Motivation Großes Ziel Alle Recheneinheiten ausnutzen Vermeiden Wenn genug Tasks vorhanden sind: Task parallel ausführen Ansonsten aufteilen Doppelte Berechnungen Unnötige Kopiervorgänge Ziel der Bachelorarbeit Abhängigkeit der Eingabedaten auflösen Daraus ein Speicherzugriffsmuster bilden Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
6 Beispiel: Matrixmultiplikation # C = A B # mit C[ Z e i l e ] [ Spalte ] for i = 0 to A. l ength 1: for j = 0 to B [ 0 ]. length 1: C[ i ] [ j ] = 0 for k = 0 to A [ 0 ]. length 1: C[ i ] [ j ] += A [ i ] [ k ] B [ k ] [ j ] * = Speicher A, Speicher B, Speicher A & B Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
7 OpenCL Host Kernel Open Computing Language Einheitliches Architekturkonzept Aufteilung in Host- und Kernelcode Code wird auf der CPU ausgeführt Verwaltet einzelne OpenCL-Geräte (Devices) Initialisiert Ausführung (Anzahl der Work-Items und Work-Groups) Kann auf verschiedenen Architekturen ausgeführt werden Wird auf OpenCL-Geräten einmal ausgeführt Wird für jedes Work-Item ausgeführt OpenCL C (basiert auf ISO C99) Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
8 OpenCL Host Kernel Open Computing Language Einheitliches Architekturkonzept Aufteilung in Host- und Kernelcode Code wird auf der CPU ausgeführt Verwaltet einzelne OpenCL-Geräte (Devices) Initialisiert Ausführung (Anzahl der Work-Items und Work-Groups) Kann auf verschiedenen Architekturen ausgeführt werden Wird auf OpenCL-Geräten einmal ausgeführt Wird für jedes Work-Item ausgeführt OpenCL C (basiert auf ISO C99) Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
9 OpenCL: Beispielcode Quadratfunktion im OpenCL-Kernelcode } k e r n e l void square ( g l o b a l f l o a t input, g l o b a l f l o a t output, const unsigned i n t count ) { i n t i = get global id ( 0 ) ; i f ( i < count ) { output [ i ] = i n p u t [ i ] i n p u t [ i ] ; } Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
10 OpenCL: Work-Item-Funktionen uint get work dim () size t get global size (uint dimindx ) size t get global id (uint dimindx ) size t get local size (uint dimindx ) size t get enqueued local size (uint dimindx ) size t get local id (uint dimindx ) size t get num groups (uint dimindx ) size t get group id (uint dimindx ) size t get global offset (uint dimindx ) size t get global linear id () size t get local linear id () Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
11 OpenCL: Work-Item-Funktionen Alle Work-Item-Funktionen bauen auf fünf Faktoren auf Vier werden im Hostcode festgelegt Feste Werte im Hostcode cl uint work dim const size t *global work offset const size t *global work size const size t *local work size Iterierbarer Wert Aktuelle global work id Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
12 LLVM / Clang LLVM Clang Compiler-Infrastruktur Fast alle OpenCL-Implementationen bauen auf LLVM auf Bytecode : LLVM IR (Intermediate Representation) LLVM-Frontend C, C++, Objective-C und Objective-C++ Clang AST APIs: LibClang Clang Plugins LibTooling Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
13 LLVM / Clang LLVM Clang Compiler-Infrastruktur Fast alle OpenCL-Implementationen bauen auf LLVM auf Bytecode : LLVM IR (Intermediate Representation) LLVM-Frontend C, C++, Objective-C und Objective-C++ Clang AST APIs: LibClang Clang Plugins LibTooling Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
14 Compiliervorgang in LLVM Optimierung C / C++ Clang x86 Backend x86 Binary OpenCL C OpenCL Frontend LLVM IR PowerPC Backend PowerPC Binary CUDA CUDA Frontend ARM Backend ARM Binary Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
15 Bestimmung des Zugriffsmusters Kernelcode Laufzeitsystem Codeanalyse Zugriffsmuster Zielsetzung Eingabe: Kernelcode Ausgabe: Speicherzugriffsmuster Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
16 Bestimmung des Zugriffsmusters Möglichkeiten 1 Instrumentierung 2 LLVM Passes 3 Statische Codeanalyse mit Clang Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
17 Bestimmung des Zugriffsmusters Möglichkeiten 1 Instrumentierung 2 LLVM Passes 3 Statische Codeanalyse mit Clang Bestimmung des Speicherzugriffsmusters durch Statische Codeanalyse mit Clang: Kernelcode Clang LLVM Clang AST Zugriffsmuster Codeanalyse Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
18 Bestimmung des Zugriffsmusters Zur Erinnerung: Quadratfunktion im OpenCL-Kernelcode } k e r n e l void square ( g l o b a l f l o a t input, g l o b a l f l o a t output, const unsigned i n t count ) { i n t i = get global id ( 0 ) ; i f ( i < count ) { output [ i ] = i n p u t [ i ] i n p u t [ i ] ; } Rahmenbedingungen der Quadratfunktion Zwei Work-Groups mit je acht Work-Item Annahme: count > 15 Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
19 Bestimmung des Zugriffsmusters Rahmenbedingungen der Quadratfunktion Zwei Work-Groups mit je acht Work-Item Annahme: count > 15 input-array Work-Item-Ergebnis Work-Group-Ergebnis output-array Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
20 Problematik unbekannter Größen i n t i = get global id ( 0 ) + 1; i f ( i < count ) { output [ i ] = i n p u t [ i ] i n p u t [ i ] ; } Problem Generell: Rückgabewert der Work-Item-Funktion für jedes Work-Item unterschiedlich Jedes Work-Item liefert ein anderes Zugriffsmuster zurück Während der Codeanalyse ist der Rückgabewert einer Work-Item-Funktionen unbekannt Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
21 Problematik unbekannter Größen i n t i = get global id ( 0 ) + 1; i f ( i < count ) { output [ i ] = i n p u t [ i ] i n p u t [ i ] ; } Lösung Berechnungen müssen festgehalten werden, um sie später durchführen zu können Rückgabewerte von Work-Item-Funktionen und Variablenwert müssen Referenziert werden Zugriffsmuster kann nur mit Kenntnis der Rahmenbedingungen im Hostcode berechnet werden Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
22 Erzeugung des Codebaums i n t i = get global id ( 0 ) + 1; i = 2 i ; i n t j = i 1; Referenzliste: i get global id(0) + 1 i 2 * i j i - 1 Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
23 Erzeugung des Codebaums (++a + b c ) a / 2 Funktionalen Darstellung: (+( pre ++(a ), (b, c ) ), / ( a, 2) ) - + / pre++ * a 2 a b c Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
24 Evaluation Rahmenbedingungen: Parameter Wert global work size 32 local work size 8 global work offset 0 work dim 1 clenqueuetask false Gleiche Rahmenbedingung für alle OpenCL-Kernels Kleine Werte zur Wahrung der Übersichtlichkeit Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
25 Evaluation Systemkomponenten zur Bestimmung der Laufzeit: Prozessor AMD FX Core Taktfrequenz 3,3 GHz Arbeitsspeichergröße 8 GB DDR3 Betriebssystem Arch Linux x86 64 Linuxkernel ARCH Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
26 Vectoraddition } k e r n e l void vectoradd ( g l o b a l const f l o a t a, g l o b a l const f l o a t b, g l o b a l f l o a t c ) { i n t i = get global id ( 0 ) ; c [ i ] = a [ i ] + b [ i ] ; Parameter Typ Zugriffsmuster a Array R: b Array R: c Array W: Laufzeit der Codeanalyse inkl. Zugriffsmustergenerierung: 20 ms Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
27 Rodinia: backprop Kernelfunktion: bpnn adjust weights ocl Parameter Typ Zugriffsmuster delta Array R: hid Variable R ly Array R: 01 in None w Array R: W: Korrektur R:? ?... W:? ?... oldw Array R: W: Korrektur R:? ?... W:? ?... Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
28 Rodinia: Übersicht Benchmark Schleifen If Struct Bedingte Funktions- Laufzeit -Bedingung -Aufrufe Operator aufrufe [ms] backprop X X bfs X X X cfd X X X - X 55 gaussian - X heartwall X X hotspot X X - X - 31 lavamd X X X lud X X myocyte - X - - X 66 nn - X X nw X X - - X 302 pathfinder X X - X - 34 srad X X streamcluster X X X Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
29 Weitere Arbeiten Schleifen If-Bedingungen Structs Bedingte Operatoren (a < b)? a : b Verschachtelte Arrayaufrufe array[array[array[0]]] Mehrdimentionale Arrayaufrufe array[x][y] Funktionsaufrufe Verschachtelte Funktionsaufrufe function1(function2(function3(0))) De- und Inkrementierung eines Arrayelements und des Indexwertes ++array[++i] Kernelfunktionsparameter berücksichtigen Sub-Groups-Funktionen Weitere Datenformate: Booleans, Gleitkommazahlen... Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
30 Zusammenfassung Statische Codeanalyse Mithilfe LLVM und Clang AST Variabenlwerte werden intern durch einen Codebaum festgehalten, damit diese zu einem späteren Zeitpunkt berechnet werden können. Speicherzugriffsmuster wird in zwei Schritten ermittelt: 1 Ermittlung Speicherzugriffsmuster eines Work-Items durch Codeanalyse 2 Generierung Speicherzugriffsmuster eines ganzen OpenCL-Devices Erster Schritt muss dabei nur einmal durchgeführt werden Das Zugriffsmuster gibt an, welche Kernelfunktionsparameter und deren Arrayelemente während der Laufzeit beschrieben und gelesen werden. Es kann nicht immer das richtige Zugriffsmuster bestimmt werden Moritz Lüdecke OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern 8. Juli /25
Automatische OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern
Karlsruher Institut für Technologie Institut für Technische Informatik Lehrstuhl für Rechnerarchitektur und Parallelverarbeitung Prof. Dr. rer. nat. Wolfgang Karl Automatische OpenCL-Code-Analyse zur Bestimmung
MehrInformatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-
Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik
MehrTutorium Rechnerorganisation
Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrProgrammierbeispiele und Implementierung. Name: Michel Steuwer E-Mail: michel.steuwer@wwu.de
> Programmierbeispiele und Implementierung Name: Michel Steuwer E-Mail: michel.steuwer@wwu.de 2 > Übersicht > Matrix Vektor Multiplikation > Mandelbrotmenge / Apfelmännchen berechnen > Kantendetektion
MehrOpenCL Implementierung von OpenCV Funktionen
Multi-Core Architectures and Programming OpenCL Implementierung von OpenCV Funktionen julian.mueller@e-technik.stud.uni-erlangen.de Hardware/Software Co-Design August 18, 2011 1 Table of content 1 OpenCL
MehrDeklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
MehrKarlsruher Institut für Technologie
Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt
MehrDer Goopax Compiler GPU-Programmierung in C++ ZKI AK-Supercomputing, Münster, 27.03.2014, Ingo Josopait
Der Goopax Compiler GPU-Programmierung in C++ AMD R9 290X: 5.6 TFLOPS (SP MulAdd) Programmierung ~10000 Threads Entwicklungsumgebungen Entwicklungsumgebungen CUDA, OpenCL Compiler: kernel GPU Maschinencode
MehrProgrammieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff
Programmieren in C Operatoren, Variablen und deren Sichtbarkeit Prof. Dr. Nikolaus Wulff Auswertung von Ausdrücken Was passiert wenn ein Ausdruck wie z. B. int y,x=2; y = ++x * x++; im Computer abgearbeitet
Mehr(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT
Architektur Übersicht (allgemeine) OOP in C++ Polymorphie Virtuelle Funktionen Kompilieren Linken dynamische/statische Bibliotheken Tutorial: vs2008+ogre+(campus modell) Architektur (allgemeine) OOP in
MehrDie Bildbearbeitungssprache Halide
Die Bildbearbeitungssprache Halide Dominik Danner 13.06.2013 Dominik Danner Die Bildbearbeitungssprache Halide 13.06.2013 1 / 30 Inhaltsverzeichnis 1 Einführung Die Domäne der Bildbearbeitung Einführungsbeispiel
MehrDesign and Implementation of a Soft-error Resilient OSEK Real-time Operating System
Design and Implementation of a Soft-error Resilient OSEK Real-time Operating System Florian Lukas Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich Alexander Universität Erlangen
MehrNutzung paralleler Prozesse bei der Umweltsimulation
Nutzung paralleler Prozesse bei der Umweltsimulation RALF Wieland rwieland@zalf.de ZALF/LSA Nutzung paralleler Prozesse bei der Umweltsimulation p. 1 Warum parallele Prozesse? Die Steigerung der Taktfrequenz
MehrParallele Algorithmen mit OpenCL. Universität Osnabrück, Henning Wenke, 2013-05-08
Parallele Algorithmen mit OpenCL Universität Osnabrück, Henning Wenke, 2013-05-08 Aufräumen Ressourcen in umgekehrter Abhängigkeitsreihenfolge freigeben Objekte haben Reference-Count (RC), initial 1 clrelease
MehrGrundlagen der Parallelisierung
Grundlagen der Parallelisierung Philipp Kegel, Sergei Gorlatch AG Parallele und Verteilte Systeme Institut für Informatik Westfälische Wilhelms-Universität Münster 3. Juli 2009 Inhaltsverzeichnis 1 Einführung
MehrOpenMP am Beispiel der Matrizenmultiplikation
OpenMP am Beispiel der Matrizenmultiplikation David J. Meder, Dr. Victor Pankratius IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe
MehrTransparente Nutzung von Multi-GPU Cluster unter Java/OpenMP
Transparente Nutzung von Multi-GPU Cluster unter Java/OpenMP Dipl. Inf. Thorsten Blaß Programming Systems Group Martensstraße 3 91058 Erlangen Ausblick Motivation Einführung Java/OpenMP (JaMP) JaMP Sprache
MehrLavA OS: Ein Betriebssystem für konfigurierbare MPSoCs
LavA OS: Ein Betriebssystem für konfigurierbare MPSoCs Diplomarbeit Abschlussvortrag Stephan Vogt stephan.vogt@cs.uni-dortmund.de 1 Inhalt Einleitung Wiederverwendung von BS Arbeiten an CiAO Kommunikation
MehrTrace- und Zeit-Zusicherungen beim Programmieren mit Vertrag
Trace- und Zeit-Zusicherungen beim Programmieren mit Vertrag Mark Brörkens Universität Oldenburg, Fachbereich Informatik Email: Mark.Broerkens@informatik.uni-oldenburg.de Einleitung Programmieren mit Vertrag
MehrDie Programmiersprache C
Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,
MehrCORBA. Systemprogrammierung WS 2006-2007
CORBA Systemprogrammierung WS 2006-2007 Teilnehmer: Bahareh Akherattalab Babak Akherattalab Inhaltsverzeichnis: Verteilte Systeme Vergleich zwischen lokale und verteilte Systeme Verteilte Anwendungen CORBA
MehrLeistungsanalyse von Rechnersystemen
Zentrum für Informationsdienste und Hochleistungsrechnen (ZIH) Leistungsanalyse von Rechnersystemen Auf Ein-/Ausgabe spezialisierte Benchmarks Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424
MehrDr. Monika Meiler. Inhalt
Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6
MehrCloud-Task-Parallelisierung in.net: Jenseits der lokalen Prozessor-Power
Cloud-Task-Parallelisierung in.net: Jenseits der lokalen Prozessor-Power Prof. Dr. Luc Bläser Hochschule für Technik Rapperswil Parallel 2013, Karlsruhe 15. Mai 2013 Stufen der Parallelisierung Multi-core
MehrHaskell auf der Überholspur mit LLVM. Henning Thielemann 2014-06-20
Haskell auf der Überholspur mit LLVM Henning Thielemann 2014-06-20 1 2 Funktionsweise 3 Übungen Motivation 1 Motivation LLVM 2 Funktionsweise 3 Übungen Motivation Motivation Haskell-Programmierer: Was
MehrProgramming Models for Cell BE
Hauptseminar MAP08 Programming Models for Cell BE Hannes Stadler, Sebastian Graf HannesStadler@gmx.de, sebgr@gmx.net Betreuung: Matthias Hartl, Hritam Dutta, Frank Hannig Hardware-Software-Co-Design Universität
MehrSicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011
Sicheres C in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011 Dipl. Ing. (FH) Ebrecht Roland, Infineon Technologies AG M.Eng (Electronic Systems) Güller Markus, Infineon Technologies
MehrEyeCheck Smart Cameras
EyeCheck Smart Cameras 2 3 EyeCheck 9xx & 1xxx Serie Technische Daten Speicher: DDR RAM 128 MB FLASH 128 MB Schnittstellen: Ethernet (LAN) RS422, RS232 (nicht EC900, EC910, EC1000, EC1010) EtherNet / IP
MehrClang/LLVM, eine Alternative zu gcc
Clang/LLVM, eine Alternative zu gcc V 1.1 Hans Buchmann Institut für Mikroelektronik IME Fachhochschule Nordwestschweiz FHNW hans.buchmann@fhnw.ch 27.August 2013 H.Buchmann Clang/LLVM 1 / 18 Ein Zwerg
MehrSmartphone Entwicklung mit Android und Java
Smartphone Entwicklung mit Android und Java predic8 GmbH Moltkestr. 40 53173 Bonn Tel: (0228)5552576-0 www.predic8.de info@predic8.de Was ist Android Offene Plattform für mobile Geräte Software Kompletter
MehrGrafiktreiber im Linuxkernel - die Außenseiter -
Grafiktreiber im Linuxkernel - die Außenseiter - Creative Commons by-nc-nd Grundlagen Was ist eine Grafikkarte? Grundlagen Was ist eine Grafikkarte? Ausgabelogik Grundlagen Was ist eine Grafikkarte? Ausgabelogik
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrBesonderheiten von C#
Besonderheiten von C# Wert- und Referenztypen int a, b; a = 3; b = a; a++; Debug.Assert( a==4 && b==3 &&!a.equals(b), "int ist doch kein Werttyp" ); RTyp ra, rb; ra = new RTyp(3); rb = ra; ra.inc(); Debug.Assert(
MehrEinführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
Mehr1 Vom Problem zum Programm
Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren
MehrQuellcode-Repräsentation in Eclipse. Seminarvortrag PG Reclipse Jan Rieke
Quellcode-Repräsentation in Eclipse Seminarvortrag PG Reclipse Jan Rieke Gliederung Motivation Architektur von Eclipse Quelltext-Repräsentation in Eclipse Java-Modell Java DOM/AST Zusätzliche Konzepte
MehrÜbungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen
Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe
MehrProgrammieren in Java
Einführung in die Objektorientierung Klassen 2 Prozeduale Programmierung Bisher: Klassische prozeduale Programmierung Java ist allerdings eine objektorientierte Sprache Rein prozeduale Programmierung daher
MehrProzedurale Datenbank- Anwendungsprogrammierung
Idee: Erweiterung von SQL um Komponenten von prozeduralen Sprachen (Sequenz, bedingte Ausführung, Schleife) Bezeichnung: Prozedurale SQL-Erweiterung. In Oracle: PL/SQL, in Microsoft SQL Server: T-SQL.
MehrSystemanforderungen Verlage & Akzidenzdruck
OneVision Software AG Inhalt Asura 9.5, Asura Pro 9.5, Garda 5.0...2 PlugBALANCEin 6.5, PlugCROPin 6.5, PlugFITin 6.5, PlugRECOMPOSEin 6.5, PlugSPOTin 6.5,...2 PlugTEXTin 6.5, PlugINKSAVEin 6.5, PlugWEBin
MehrManycores: Hardware und Low-Level Programmierung
Manycores: Hardware und Low-Level Programmierung Florian Sattler Universität Passau 18. Juni 2014 Übersicht Einführung Neue Architekturen Programmierung Supercomputing Fazit 2 / 29 Top 500 3 / 29 Motivation
MehrEinfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
MehrEinführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian
Einführung in die Programmierung Arvid Terzibaschian 1 Arrays 2 Arrays: Motivation Gegeben: monatliche Durchschnittstemperaturen der letzten 5 Jahre Gesucht: Mittelwerte für Jahre, Monate, Jahreszeiten,
MehrOpenCL. Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.
OpenCL Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.de Abstract: In diesem Dokument wird ein grundlegender Einblick in das relativ
MehrLeistungs- und Geschwindigkeitssteigerung. Dipl.-Ing. Sebastian F. Kleinau Applikationsingenieur
Leistungs- und Geschwindigkeitssteigerung von LabVIEW-Projekten Dipl.-Ing. Sebastian F. Kleinau Applikationsingenieur Agenda 1. Einführung 2. Hilfreiche Werkzeuge zur Codeanalyse 3. Benchmarks für LabVIEW-VIs
MehrEffizientes Memory Debugging in C/C++
Effizientes Memory Debugging in C/C++ Adam Szalkowski Embedded Computing Conference 2014 Ursachen/ Symptome Debugging Tools Ursachen / Symptome Was habe ich falsch gemacht? Was kann denn passieren im schlimmsten
MehrEinführung in die Systemprogrammierung
Einführung in die Systemprogrammierung Speedup: Grundlagen der Performanz Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 30. April 2015 Eine Aufgabe aus der Praxis Gegeben ein
Mehr1 Wozu ein Performance Test?
Performance Test 1 Wozu ein Performance Test? 004 führte ein S7/S5 OPC-Server Hersteller einen Performance-Test durch, bei dem die Leistungsfähigkeit von S7 OPC-Servern acht verschiedener Hersteller (Applicom,
MehrTeil-Bericht zum 6. Projektabschnitt
Teil-Bericht zum 6. Projektabschnitt Andreas Kitzig September 2011 Bericht zum Vorhaben Robuste Spracherkennung in gestörter Umgebung durch die Kombination einer robusten Merkmalsextraktion und einer Adaption
MehrI.1 Die Parrot Assemblersprache
I.1 Die Parrot Assemblersprache Die virtuelle CPU Parrot ermöglicht die Verarbeitung der Parrot Assemblersprache (PASM). Zum Einstieg soll ein erstes Beispiel die Ausführung einer PASM-Datei zeigen. Legen
MehrHardware Virtualisierungs Support für PikeOS
Virtualisierungs Support für PikeOS Design eines Virtual Machine Monitors auf Basis eines Mikrokernels Tobias Stumpf SYSGO AG, Am Pfaenstein 14, 55270 Klein-Winternheim HS Furtwangen, Fakultät Computer
MehrPraktikum Compilerbau Sitzung 9 Java Bytecode
Praktikum Compilerbau Sitzung 9 Java Bytecode Prof. Dr.-Ing. Gregor Snelting Matthias Braun und Sebastian Buchwald IPD Snelting, Lehrstuhl für Programmierparadigmen KIT Universität des Landes Baden-Württemberg
MehrAccess [basics] Programmieren mit Arrays. Beispieldatenbank. Arrays. Eindimensionale Arrays. VBA-Grundlagen Programmieren mit Arrays
Dass Sie unter Access Daten in Tabellen speichern und gezielt darauf zugreifen können, wissen Sie als Access [basics]-leser schon längst. Aber was, wenn Sie nur ein paar gleichartige Daten zwischenspeichern
MehrUBELIX University of Bern Linux Cluster
University of Bern Linux Cluster Informatikdienste Universität Bern ID BEKO Grid Forum 7. Mai 2007 Inhalt Einführung Ausbau 06/07 Hardware Software Benutzung Dokumentation Gut zu wissen Kontakt Apple/Mac:
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Rückblick Datentypen (int, long, double, boolean, String) Variablen und Variablendeklarationen
Mehr4D Server v12 64-bit Version BETA VERSION
4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und
MehrEffiziente Java Programmierung
Effiziente Java Programmierung Seminar Implementierung moderner virtueller Maschinen am Beispiel von Java SS 2009 von Reinhard Klaus Losse 20. Mai 2009 Gliederung Definition Effizienz Werkzeuge zum Messen
MehrGPU-basierte Beschleunigung von MapReduce am Beispiel von OpenCL und Hadoop
am Beispiel von OpenCL und Masterseminar Hochschule für Technik, Wirtschaft und Kultur Leipzig Leipzig, 02.11.2011 Gliederung 1 Grundlagen 2 3 Gliederung 1 Grundlagen 2 3 Was ist? Clustersystem zur verteilten
Mehrb) Gegeben sei folgende Enumeration: enum SPRACHE {Deutsch, Englisch, Russisch};
Aufgabe 1: (15 Punkte) Bei den Multiple-Choice-Fragen ist jeweils nur eine richtige Antwort eindeutig anzukreuzen. Auf die richtige Antwort gibt es die angegebene Punktzahl. Wollen Sie eine Multiple-Choice-Antwort
MehrÜbung zur Vorlesung Programmieren in C
Übung zur Vorlesung Programmieren in C 6 Pointers Marvin Gülker Ruhruniversität Bochum Wintersemester 2015/2016 Marvin Gülker (Ruhruniversität Bochum) 6 Pointers Wintersemester 2015/2016 1 / 29 Gliederung
MehrZugriff auf die Modul-EEPROMs
MAX-P- und P-Bibliotheken EEPROM-Zugriff 1 Zugriff auf die Modul-EEPROMs Jedes X-Bus-Modul verfügt über ein EEPROM, in dem modulspezifische Daten gespeichert werden. Neben einigen Bereichen, die vom Betriebssystem
MehrModul 122 VBA Scribt.docx
Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval
MehrPython Programmierung. Dipl.-Ing.(FH) Volker Schepper
Python Programmierung Kontaktdaten Homepage: http://wwwlehre.dhbw-stuttgart.de/~schepper/ Email: Volker. Schepper [A@T] yahoo.de Vorlesung Skriptsprachen Vorlesung: 06.03.2013 13.03.2013 20.03.2013 27.03.2013
MehrDie beste Infrastruktur ist nur so schnell, wie der Code der darauf läuft. Fallbeispiel Wettervorhersage
Die beste Infrastruktur ist nur so schnell, wie der Code der darauf läuft Fallbeispiel Wettervorhersage VPE Swiss Workshop, HSR 24. Januar 2013 David Müller, Tobias Gysi Vision trifft Realität. Supercomputing
MehrTeile und Herrsche. Themen heute. Eigene Funktionen Parameter Fallunterscheidungen Fehlersuche. Programmieren für Ingenieure Sommer 2015
Teile und Herrsche Programmieren für Ingenieure Sommer 2015 Andreas Zeller, Universität des Saarlandes C-Programm Vom Programm zum Prozessor Prüfen und Übersetzen Maschinen- Programm Hochladen über USB
MehrKlausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Winter 2009/2010, 18. Februar 2010 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name:
MehrArrays und Methoden. Programmiervorkurs WS 2010 / 11
Arrays und Methoden Programmiervorkurs WS 2010 / 11 Einleitung Bisher sind einfach Programme möglich Nun wollen wir Organisation und Stil verbessern Gesamter Code sollte nicht an einer Stelle stehen Nicht
MehrCLR CIL MCS ECMA-335. Linux.Ne t. 2005 Albrecht Liebscher, Erlanger Linux Tage
C# CLR CIL MCS ECMA-335 Linux.Ne t Was ist.net? Microsoft Homepage:.NET is the Microsoft Web services strategy to connect information, people, systems and devices through software. Mono Handbuch:.Net besteht
MehrMAP CellSs Mapprakt3
MAP CellSs Mapprakt3 Andreas Fall, Matthias Ziegler, Mark Duchon Hardware-Software-Co-Design Universität Erlangen-Nürnberg Andreas Fall, Matthias Ziegler, Mark Duchon 1 CellSs Cell CPU (1x PPU + 6x SPU)
MehrBinäre lineare Optimierung mit K*BMDs p.1/42
Binäre lineare Optimierung mit K*BMDs Ralf Wimmer wimmer@informatik.uni-freiburg.de Institut für Informatik Albert-Ludwigs-Universität Freiburg Binäre lineare Optimierung mit K*BMDs p.1/42 Grundlagen Binäre
MehrAutor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH
Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich
MehrErste Schritte. Das Arduino-Board. Ihr Fundino-Board. Programmieren für Ingenieure Sommer 2015. Andreas Zeller, Universität des Saarlandes
Erste Schritte Programmieren für Ingenieure Sommer 2015 Andreas Zeller, Universität des Saarlandes Das Arduino-Board Ihr Fundino-Board Anschluss über USB Anschluss über USB Programmierumgebung Download
MehrHEUTE. Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: Was ist Effizienz? vollständige Induktion
17.11.04 1 HEUTE 17.11.04 3 Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: was ist Effizienz? vollständige Induktion JAVA: Arrays die for -Schleife die Sprunganweisungen break und continue
MehrÜbung 1 mit C# 6.0 MATTHIAS RONCORONI
Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,
MehrAlgorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.
Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte
MehrDie Vision Landschaft und was sie mit Moore s Gesetz zu tun hat
Die Vision Landschaft und was sie mit Moore s Gesetz zu tun hat Horst A. Mattfeldt Produkt Manager Matrix Vision GmbH V1.0 10/2010 MATRIX VISION GmbH 1 Inhalt/Content: Vom Vision Sensor über Atom Boxen
MehrC/C++ Programmierung
1 C/C++ Programmierung Verbunde, Reihungen, Zeiger Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Typen 6.2.5 Primitive
MehrGrundlagen. Die Komponenten eines C Programms. Das erste Programm
Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen
MehrGrundlagen zur nebenläufigen Programmierung in Java
Grundlagen zur nebenläufigen Programmierung in Java Karlsruher Entwicklertag 2013 5. Juni 2013 Referent: Christian Kumpe Inhalt des Vortrags Was zeigt dieser Vortrag? Ein einfaches Beispiel mit allerlei
MehrAufbau und Funktionsweise eines Computers
Aufbau und Funktionsweise eines Computers Thomas Röfer Hardware und Software von Neumann Architektur Schichtenmodell der Software Zahlsysteme Repräsentation von Daten im Computer Hardware Prozessor (CPU)
MehrExchange 2013 Architecture Overview
Basel Exchange 2013 Architecture Overview René Lübke Architecture Overview 40 René Lübke Size Matters 15 René Lübke Q&A 5 Alle Agenda Architectural Overview - Generelle Übersicht - Client Access - Transport
MehrFHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt
Inhalt 1. Einführung 2. Array-Komponenten von elementaren Datentypen 3. Array-Komponenten sind Objekte 4. Array als Parameter 5. Kopieren von Arrays 6. Beispiel 7. Vector versus Array Folie 1 Lernziele
MehrProgrammieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen
Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung
MehrÜbersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung
Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des
MehrAufbau eines VR-Systems zur multimodalen Interaktion mit komplexen physikalischen Modellen
Fazit Aufbau eines s zur multimodalen Interaktion mit komplexen physikalischen Modellen Guido Rasmus Maximilian Klein, Franz-Erich Wolter Leibniz Universität Hannover Institut für Mensch-Maschine-Kommunikation
MehrKontrollstrukturen, Pseudocode und Modulo-Rechnung
Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1
MehrLearning Suite Talent Suite Compliance Suite. Systemvoraussetzungen
Learning Suite Talent Suite Compliance Suite Systemvoraussetzungen Vorwort Dieses Dokument beschreibt, welche Anforderungen an die Installationsumgebung zu stellen sind, um die Plattform unter optimalen
MehrTutorium Java Ein Überblick. Helge Janicke
Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren
Mehrx86 Open Source Virtualisierungstechniken Thomas Glanzmann <thomas@glanzmann.de>
x86 Open Source Virtualisierungstechniken März 2006 Zu meiner Person Informatik Student an der Universität Erlangen im 9. Semester 4 jährige Mitarbeit an dem Projekt FAUmachine der
Mehr1. Übung zu "Numerik partieller Differentialgleichungen"
1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:
MehrJava-Vorkurs 2015. Wintersemester 15/16
Java-Vorkurs 2015 Wintersemester 15/16 Herzlich Willkommen! package de.unistuttgart.47.01.javavorkurs; public class WelcomeErstis { public static void main(string[] args){ System.out.println( Herzlich
MehrProgrammierung von Multicore-Rechnern
Programmierung von Multicore-Rechnern Prof. Dr.-Ing. habil. Peter Sobe HTW Dresden, Fakultät Informatik/Mathematik www.informatik.htw-dresden.de Gliederung: Ein Blick auf Multicore-Prozessoren/ und -Rechner
MehrHochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller
Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit, 08:00 09:30 Uhr (90 min) Aufgabenblätter 14 Seiten (einschl. Deckblatt) erreichbare Punktzahl 54 zugelassene
MehrProgrammiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm
Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i
MehrTechnische Voraussetzungen
Technische Voraussetzungen Um NextPhysio Videos abspielen zu können, müssen ihr Computer und ihre Internetverbindung bestimmte Anforderungen erfüllen. Hier finden Sie alles - übersichtlich aufbereitet
MehrComputeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag
Mehr5.4 Klassen und Objekte
5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen
MehrRealisierung einer 32'768-Punkt-FFT für 2 GBytes/s Datenrate auf einem FPGA
Realisierung einer 32'768-Punkt-FFT für 2 GBytes/s Datenrate auf einem FPGA Mentor User Conference 2004 - Würzburg Michael Pichler, m.pichler@zma.ch Dino Zardet, d.zardet@zma.ch Prof. Karl Schenk, k.schenk@zma.ch
MehrName: Klausur Programmierkonzepte SS 2011
Prof. Dr.-Ing. Hartmut Helmke Ostfalia Hochschule für angewandte Wissenschaften Fakultät für Informatik Matrikelnummer: Punktzahl: Ergebnis: Freiversuch F1 F2 F3 Klausur im SS 2011: Programmierkonzepte
Mehr