4. Parallelprogrammierung
|
|
|
- Barbara Stieber
- vor 9 Jahren
- Abrufe
Transkript
1 4. Parallelprogrammierung AlDaBi Prak4kum David Weese 2010/11 Enrico Siragusa WS 2011/12
2 Inhalt Einführung in Parallelität OpenMP Bemerkungen zur P- Aufgabe
3 EINFÜHRUNG IN PARALLELITÄT Folien z.t. aus VL Programmierung von Hardwarebeschleunigern von Alexander Reinefeld und Thomas Steinke, WS09
4 Was ist Parallelität? Parallelität ist eine OpWmierungstechnik um die Laufzeit zu reduzieren Dazu wurden benutzt mehrere Prozessoren (CPUs oder Cores) 1 CPU 4 CPUs Time Time Parallelisierung Die parallele Laufzeit sollte am besten ¼ der serielle Laufzeit, wenn 4 CPUs benutzt würden
5 Parallele Pla^ormen Gemeinsamer Speicher (shared memory) Verteilter Speicher (distributed memory) CPU CPU CPU CPU CPU CPU Cache Cache Cache Cache Cache Cache Gemeinsamer Bus RAM RAM RAM RAM I/O Netzwerk
6 ProzesskommunikaWon Gemeinsamer Speicher (shared memory)... über gemeinsame Speicherbereich Schreiben/Lesen im RAM SynchronisaWon über gegenseiwgen Ausschluss Verteilter Speicher (distributed memory)... über Nachrichtenaustausch (message passing) Senden/Empfangen von Nachrichten Nur lokale (private) Variablen Prozess A Prozess B sendet Nachricht empfängt schreibt liest RAM Prozess A Prozess B
7 Process VS Thread Prozess Laufende Instanz eines Programms Besteht aus eigenem Adressraum Für Stack, Heap, Programmcode,... Ist dadurch vor anderen Prozessen geschützt Kann Resourcen reservieren Hat einen oder mehrere Threads, die den Code ausführen Thread Ausführungseinheit des Prozess Bestehen aus eigenem Stack und CPU- Registerzustand Haben den Adressraum des zugehörigen Prozesses Threads desselben Prozesses sind nicht voreinander geschützt Beispiel: Auf mehrere Threads verteilte for- Schleife eines Programms
8 Prozesslayout Thread A Process Thread B Data Data Data Code Code Code Heap Heap Heap Stack Stack A Stack B Stack
9 Fork & Join Modell
10 Fallstricke KriWscher Wehlauf (Race CondiWon) SituaWonen, in denen das Wehrennen (race) der Prozesse beim Zugriff auf gemeinsame Ressourcen Auswirkungen auf das Ergebnis eines Programmlaufs hat Beispiel: 2 Threads schreiben in dieselbe Speicherstelle Verklemmung (Deadlock) Threads warten gegenseiwg auf die Resourcen der anderen Aushungern (StarvaWon) Ressource wechselt unfairerweise nur innerhalb einer Gruppe von Threads Threads außerhalb der Gruppe erhalten die Resource nie
11 KriWscher Wehlauf Write V = 0 Master Thread Thread A Thread B Time Read V = 0 Write V +=1 Read V = 0 Write V +=1 Read V = 1
12 Lösung SynchronisaWon Mutex (Mutual Exclusion) Kann von mehreren Threads verlangt werden (lock), aber nur einer besitzt sie bis er sie freigibt (unlock) Semaphore Kann von mehreren Threads verlangt werden, ist aber immer nur in Besitz von höchstens k Threads Mutex ist Semaphore mit k=1 Barrier Eine Gruppe von Threads hält solange an einer Barriere an, bis alle angekommen sind, danach laufen alle weiter
13 Verklemmung Philosophenproblem Algorithmus: Denk bis die linke Gabel ist verfügbar Denk bis die rechte Gabel ist verfügbar Iss Lieg die rechte Gabel ab Lieg die linke Gabel ab Wiederhole Verklemmung Jeder nimmt die linke Gabel auf und wartet auf die rechte Lösung Eine Mutex für den ganzen Tisch zum Prüfen und Aufnehmen zweier Gabeln Semaphore mit k=4
14 OPEN MULTI- PROCESSING Folien z.t. aus VL Parallele Programmierung von Nicolas Maillard und Marcus Rih, TU Berlin
15 Einführung OpenMP stellt eine Programmierschnihstelle (API) für C/C++ (und Fortran) zur Verfügung Erweiterung der Programmiersprache durch #pragma- DirekWven Eine DirekWve besteht aus einem Namen und einer Klauselliste: #pragma omp direcwve [clause list] BibliotheksfunkWonen #include <omp.h> Nur für Pla^ormen mit gemeinsamen Speicher (shared memory) Nützliche Links OpenMP Homepage - hhp:// OpenMP Tutorial - hhp://compuwng.llnl.gov/tutorials/openmp/ Kurzübersicht - hhp:// documents/openmp3.0- SummarySpec.pdf
16 Verfügbarkeit Compiler OpenMP Unterstützung Compiler Schalter g++ GCC 4.2: OpenMP 2.5 GCC 4.4: OpenMP 3.0 -fopenmp! Visual C++ VS : OpenMP 2.0 /openmp! In der IDE* Intel C++ V9: OpenMP 2.5 V11: OpenMP 3.0 Windows: /Qopenmp! Linux: -openmp! Sun Studio V12: OpenMP 2.5 V12 U1: OpenMP 3.0 -xopenmp! OpenMP akwvieren in Visual Studio 2005 oder später: Öffne ProperWes des Projektes und gehe zu: Configuration Properties -> C/C++ -> Language! Setze OpenMP Support auf yes! Achtung: Visual Studio 2005 Express EdiWon unterstüzt kein OpenMP, obwohl der Schalter exiswert
17 Überblick
18 OpenMP Beispiel Einfaches Beispielprogramm in OpenMP: #include <cstdio>! #include <omp.h>! int main(int, char*[])! {!!#pragma omp parallel!!printf("hello, world.\n");!!return 0;! }! Ausgabe auf Intel Core 2 Duo: Hello, world.! Hello, world.!
19 OpenMP Beispiel (II) Unterscheidung der Threads: #include <cstdio>! #include <omp.h>! int main(int, char*[])! {!!#pragma omp parallel!!printf("i'm thread %i of %i.\n",!!!omp_get_thread_num(),!!!omp_get_num_threads());! }!!return 0;! Ausgabe: I'm thread 0 of 2.! I'm thread 1 of 2.!
20 Programmiermodell Parallelität lässt sich schrihweise erzeugen Ein serielles Programm wird zu einem parallelen Serielle Version weiterhin nutzbar DirekWve parallel startet ein Team Aktueller Thread ist Master Alle Threads bearbeiten den folgenden Abschnih DirekWve for teilt IteraWonen auf Team- Mitglieder auf Jeder Thread bearbeitet einen Teil Ende des parallelen Blocks Implizite SynchronisaWon (barrier) Nur Master läuy weiter Master Thread Parallele Regionen
21 Von seriell zu parallel Serielles Programm: double A[10000];! for (int i = 0; i < 10000; ++i)!!a[i] = langwierige_berechnung(i);! Die berechnungen sind unabhängig langwierige_berechnung braucht nur i Die Schleife ist sehr einfach parallelisierbar
22 parallel Parallele Ausführung mit parallel Folgender Block wird von allen Threads parallel ausgeführt Programmierer verteilt die Arbeit Entweder manuell Oder mit weiteren DirekWven, bspw. for, secwons,... double A[10000];! int cnt = omp_get_num_threads();! #pragma omp parallel! {!!int id = omp_get_thread_num();!!int i_start = * id / cnt;!!int i_end = * (id+1) / cnt;!!langwierige_berechnung(a, i_start, i_end);! }!
23 for Auyeilung von SchleifeniteraWon mit for OpenMP teilt IteraWonen den einzelnen Threads zu Nur for- Schleifen mit beswmmter Syntax double A[elemente];! #pragma omp parallel for! for (int i = 0; i < 10000; ++i)! A[i] = langwierige_berechnung(i);! Seit OpenMP 3.0 sind auch Iterator- Schleifen parallelisierbar: vector<int> v(10000);! typedef vector<int>::iterator iter;! #pragma omp parallel for! for (iter i = v.begin(); i < v.end(); ++i)! langwierige_berechnung(*i);!
24 for (II) Einschränkungen Nur ganzzahlige Schleifenvariablen (mit oder ohne Vorzeichen) Test nur mit <, <=, >, >= Schleifenvariable verändern: nur einfache Ausdrücke Operatoren ++, - -, +, +=, - = Obere und untere Grenze unabhängig von Schleifendurchlauf Ausdrücke sind möglich AutomaWsche SynchronisaWon nach for mit Barriere kann mit nowait unterdrückt werden
25 for (III) Verschiedene Arten, den Indexraum auf Threads zu verteilen Auswahl erfolgt mit schedule schedule(stawc[,k]) Indexraum wird in Blöcke der Größe k zerlegt und den Threads reihum zugewiesen k=1: k=5: schedule(dynamic[,k]) Indexraum wird in Blöcke der Größe k zerlegt und den Threads nach Bedarf zugewiesen schedule(guided[,k]) Indexraum wird in Blöcke propor4onal zur Restarbeit auf Threads aufgeteilt und nach Bedarf zugewiesen; k = minimale IteraWonszahl schedule(auto) ImplemenWerung- spezifisch (Standard, wenn keine Angabe) schedule(runwme) Entscheidung zur Laufzeit (omp_set_schedule, omp_get_schedule, OMP_SCHEDULE)
26 Klauseln Festlegen der Anzahl der Threads: double A[10000];! #pragma omp parallel for num_threads(4)! for (int i = 0; i < 10000; ++i)!!a[i] = langwierige_berechnung(i);! AlternaWv ginge auch omp_set_num_threads(4);! Oder über Umgebungsvariable export OMP_NUM_THREADS=4! Bedingte Parallelisierung: double A[elemente];! #pragma omp parallel for if (elemente > 100)! for (int i = 0; i < elemente; ++i)!!a[i] = langwierige_berechnung(i);!
27 Mehrdimensionale Schleifen Zusammenfassung von Schleifen for- DirekWve wirkt nur auf nächste Schleife collapse(k) kombiniert Indexraum der folgenden k Schleifen Beispiel: MatrixmulWplikaWon #pragma omp parallel for collapse(3)! for (int i = 0; i < dim1; ++i)!!for (int j = 0; j < dim2; ++j)!!!for (int k = 0; k < dim3; ++k)!!! C[i][j] = A[i][k]*B[k][j];!
28 secwons Parallelisierung ohne Schleifen mit Abschnihen Jedem Abschnih wird ein Thread zugewiesen Nur stawsche Parallelität möglich: Abschnih gilt für ganzes Team #pragma omp parallel! #pragma omp sections! {! #pragma omp section! arbeit1();! #pragma omp section! arbeit2();! #pragma omp section! arbeit3();! }!
29 secwons (II) Rekursionen sind mit sec4ons sehr einfach parallelisierbar Beispiel: Quicksort mit verschachtelten Teams: void quicksort(int a[], int l, int r)! {!!if (l < r)!!{!!!int i = partition(a, l, r);!!!#pragma omp parallel sections!!!{!!!!#pragma omp section!!!!quicksort(a, l, i - 1);!!!!#pragma omp section!!!!quicksort(a, i + 1, r);!!!}!!}! }!
30 task Parallelisierung ohne Schleifen mit Tasks (OpenMP 3.0) Jeder Task wird (reihum) einem Thread zugewiesen Unterschied zu secwons DefiniWon eines Tasks an beliebiger Stelle von beliebigem Thread im Team Ein Thread im Team führt den Task aus void quicksort(int a[], int l, int r)! {! if (l < r)! {! int i = partition(a, l, r);! #pragma omp task! quicksort(a, l, i - 1);! quicksort(a, i + 1, r);! }! }! int main()! {! #pragma omp parallel! {! #pragma omp single! quicksort(a, 1, 99);! }! }!
31 SynchronisaWon Block der nur von einem / dem Master Thread im Team ausgeführt werden soll #pragma omp single / #pragma omp master Beispiel: Datei einlesen, Textausgabe auf der Konsole Block der von jedem Thread einzeln (seriell) ausgeführt werden soll #pragma omp cri4cal Analog zur Mutex, entspricht dem Bereich zwischen lock und unlock Beispiel: Zugriff auf gemeinsame Datenstruktur / Resource Atomares Schreiben ( kleiner kriwscher Abschnih ) #pragma omp atomic Beispiel: InkremenWeren eines globalen Zählers SynchronisaWon aller Threads mit Barriere #pragma omp barrier
32 master, barrier int main()! {!!int a[5];!!#pragma omp parallel!!{!!!#pragma omp for!!!for (int i = 0; i < 5; i++) a[i] = i * i;! }!!!#pragma omp master!!!for (int i = 0; i < 5; i++)!!!!std::cout << a[i] << std::endl;!!!#pragma omp barrier!!!#pragma omp for!!!for (int i = 0; i < 5; i++) a[i] += i;!!}!
33 atomic, criwcal void max_zeros(int *a, int size)! {!!int max = a[0]; int zeros = 0;!!#pragma omp parallel for num_threads(4)!!for (int i = 0; i < size; i++)!!{!!!if (a[i] == 0)!!!!#pragma omp atomic!!!!zeros++;!!!if (a[i] > max)!!!#pragma omp critical!!!{!!!!if (a[i] > max) max = a[i];!!!}!!}! }!!std::cout << max << zeros << std::endl;!
34 Speicherklauseln für Variablen shared Daten sind für alle Threads sichtbar/änderbar. Standard in Schleifen. private Jeder Thread hat eigene Kopie. Daten werden nicht iniwalisiert. Sind außerhalb des parallelen Abschnihs nicht bekannt. firstprivate private Daten. IniWalisierung mit letztem Wert vor parallelem Abschnih lastprivate private Daten. Der Thread, der die letzte IteraWon ausführt, übergibt den Wert aus dem parallelen Abschnih an das Hauptprogramm. threadprivate globale Daten, die im parallelen Programmabschnih jedoch als privat behandelt werden. Der globale Wert wird über den parallelen Abschnih hinweg bewahrt. reduc4on private Daten, werden am Ende auf einen globalen Wert zusammengefasst.
35 BEMERKUNGEN ZUR P- AUFGABE
36 Bemerkungen zu Aufgabe 3 Typischer Fehler: Variable- length Arrays sind nicht Teil des C++ Standards int rows = 5;! int cols = 10;! int matrix [rows][cols];! int rows = 5;! int cols = 10;! vector<int> matrix(rows*cols);! delete anstah delete[] int *matrix = new int[rows*cols];! //...! delete matrix;! int *matrix = new int[rows*cols];! //...! delete[] matrix;!
37 Bemerkungen zu Aufgabe 3 (II) Mögliche Verbesserungen: Auf die Traceback- Matrix kann auch verzichtet werden Traceback- Matrix speichert Richtung, aus der das Maximum kam AlternaWv kann man die Richtung des Traceback während des Zurückverfolgens berechnet werden FunkWonen wie score oder max als inline definieren Eine Matrix- Klasse programmieren hhps://svn.mi.fu- berlin.de/agbio/aldabi/ws11/documents/aufgabe3/matrix.h
38 Hinweise zu Aufgabe 4 Was passiert, wenn der Text einfach nur in nichtüberlappende Teile zerlegt wird? Matches, die halb in beiden Teilen liegen, werden nicht gefunden what! ever! whateve! r! Wie muss der Text aufgeteilt werden, damit Alle Matches gefunden werden Keine Matches doppelt ausgegeben werden Wie verhindert man, dass 2 Threads gleichzeiwg den vector mit Matches beschreiben
4. Parallelprogrammierung
4. Parallelprogrammierung AlDaBi Prak4kum David Weese 2010/11 René Rahn WS 2014/15 Inhalt Einführung in Parallelität OpenMP Bemerkungen zur P- Aufgabe Einführung in Parallelität Folien z.t. aus VL Programmierung
4. Parallelprogrammierung. AlDaBi Praktikum
4. Parallelprogrammierung AlDaBi Praktikum Inhalt Einführung in Parallelität OpenMP Bemerkungen zur P-Aufgabe Einführung in Parallelität Folien z.t. aus VL Programmierung von Hardwarebeschleunigern von
4. Parallelprogrammierung AlDaBi Prak4kum
4. Parallelprogrammierung AlDaBi Prak4kum David Weese WS 2010/11 Inhalt Einführung in Parallelität OpenMP Bemerkungen zur P- Aufgabe EINFÜHRUNG IN PARALLELITÄT Folien z.t. aus VL Programmierung von Hardwarebeschleunigern
1. Einführung in OpenMP
1. Einführung in OpenMP Übersicht Einführung Homogene und inhomogene Arbeitsverteilung Rekursive Parallelität Beispiele Parallele Programmierung 1 Nicolas Maillard, Marcus Ritt 1 Überblick OpenMP: Vereinfachte
Parallele Programmierung mit OpenMP
Parallele Programmierung mit OpenMP - Eine kurze Einführung - 11.06.2003 RRZN Kolloquium SS 2003 1 Gliederung 1. Grundlagen 2. Programmiermodell 3. Sprachkonstrukte 4. Vergleich MPI und OpenMP 11.06.2003
Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss
Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige
Zählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
OpenMP 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
Klausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)
Einführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte
Softwarelösungen: Versuch 4
Softwarelösungen: Versuch 4 Nichtstun in Schleife wird ersetzt durch zeitweilige Zurücknahme der Anforderung, um es anderen Prozessen zu erlauben, die Ressource zu belegen: /* Prozess 0 */ wiederhole flag[0]
Hochschule München, FK 03 FA SS 2012. Ingenieurinformatik
Hochschule München, FK 03 FA SS 2012 Ingenieurinformatik Zulassung geprüft vom Aufgabensteller: Teil 1/Aufgabe 1: 30 Minuten ohne Unterlagen, Teil 2/Aufgaben 2-4: 60 Minuten, beliebige eigene Unterlagen
Modellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
Einführung in die Programmierung (EPR)
Goethe-Center for Scientific Computing (G-CSC) Goethe-Universität Frankfurt am Main Einführung in die Programmierung (EPR) (Übung, Wintersemester 2014/2015) Dr. S. Reiter, M. Rupp, Dr. A. Vogel, Dr. K.
Beispiel: Schleifenparallelisierung
Beispiel: Schleifenparallelisierung for (i = 0; i high) { printf ( Exiting during iteration %d\n,i); break; for (j=low;j
1 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
1. Ü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:
Propädeutikum. Dipl.-Inf. Frank Güttler
Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) [email protected] Universität Leipzig Institut für Informatik Technische Informatik
Objektorientierte 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
Lehrer: Einschreibemethoden
Lehrer: Einschreibemethoden Einschreibemethoden Für die Einschreibung in Ihren Kurs gibt es unterschiedliche Methoden. Sie können die Schüler über die Liste eingeschriebene Nutzer Ihrem Kurs zuweisen oder
Monitore. Klicken bearbeiten
Sascha Kretzschmann Institut für Informatik Monitore Formatvorlage und deren Umsetzung des Untertitelmasters durch Klicken bearbeiten Inhalt 1. Monitore und Concurrent Pascal 1.1 Warum Monitore? 1.2 Monitordefinition
Einführung in die C++ Programmierung für Ingenieure
Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF
Einfache 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"
C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet
C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()
MPI-Programmierung unter Windows mit MPICH2. Installieren von MPICH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen. Christian Terboven
MPI-Programmierung unter Windows mit MPIH2 Installieren von MPIH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen hristian Terboven Rechen- und Kommunikationszentrum RWTH Aachen 1 02/2007 luster-installationsworkshop
Programmierung in C. Grundlagen. Stefan Kallerhoff
Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/
Einige Grundlagen zu OpenMP
Einige Grundlagen zu OpenMP Stephanie Friedhoff, Martin Lanser Mathematisches Institut Universität zu Köln 22. Juni 2016 Überblick Was ist OpenMP? Basics Das OpenMP fork-join-modell Kompilieren und Ausführen
Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper ([email protected])
HMExcel Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper ([email protected]) Inhalt 1. Einleitung...1 2. Beispiele...2 2.1. Daten in ein Tabellenblatt schreiben...2
Wir arbeiten mit Zufallszahlen
Abb. 1: Bei Kartenspielen müssen zu Beginn die Karten zufällig ausgeteilt werden. Wir arbeiten mit Zufallszahlen Jedesmal wenn ein neues Patience-Spiel gestartet wird, muss das Computerprogramm die Karten
Klausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2009, 16. Juli 2009 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name: Matrikelnr.:
Funktionale Programmierung mit Haskell
Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel
Tutorium 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
Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 -
Matrix42 Use Case - Sicherung und Rücksicherung persönlicher Version 1.0.0 23. September 2015-1 - Inhaltsverzeichnis 1 Einleitung 3 1.1 Beschreibung 3 1.2 Vorbereitung 3 1.3 Ziel 3 2 Use Case 4-2 - 1 Einleitung
Informatik Repetitorium SS 2009. Volker Jaedicke [email protected] 0179 1322692
Informatik Repetitorium SS 2009 Volker Jaedicke [email protected] 0179 1322692 Operatoren und Datentypen Beispiel: Anweisungen Variable int a float b int c a= a % (int) (++b-1/4) Vorher 36 3.5 c=b
Grundlagen verteilter Systeme
Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 3 12.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: a)
Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:
VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt
AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b
AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität
Projektseminar Parallele Programmierung
HTW Dresden WS 2014/2015 Organisatorisches Praktikum, 4 SWS Do. 15:00-18:20 Uhr, Z136c, 2 Doppelstunden o.g. Termin ist als Treffpunkt zu verstehen Labore Z 136c / Z 355 sind Montag und Donnerstag 15:00-18:20
Einführung in die C-Programmierung
Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).
Programmierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang
sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche
5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu
Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten
Erwin Grüner 09.02.2006
FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife
Java Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt
Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt AMPEL-Steuerung(en) Die Beschreibung und Programmierung der Ampel (vor allem Ampel_5) können sehr kompliziert
Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.
040304 Übung 9a Analysis, Abschnitt 4, Folie 8 Die Wahrscheinlichkeit, dass bei n - maliger Durchführung eines Zufallexperiments ein Ereignis A ( mit Wahrscheinlichkeit p p ( A ) ) für eine beliebige Anzahl
Kurze Einführung in die Programmiersprache C++ und in Root
Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung
Einführung in wxwidgets & wxdev-c++
Einführung in wxwidgets & wxdev-c++ Vortrag im Rahmen der Vorlesung Computational Physics im Sommersemester 2009 Folie 1/13 Gliederung wxwidgets: Übersicht wxdev-c++: Übersicht Installation wxwidgets Syntax
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang
1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.
1 Einleitung Lernziele automatische Antworten bei Abwesenheit senden Einstellungen für automatische Antworten Lerndauer 4 Minuten Seite 1 von 18 2 Antworten bei Abwesenheit senden» Outlook kann während
Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18
Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.
Felder, Rückblick Mehrdimensionale Felder. Programmieren in C
Übersicht Felder, Rückblick Mehrdimensionale Felder Rückblick Vereinbarung von Feldern: typ name [anzahl]; typ name = {e1, e2, e3,..., en} Die Adressierung von Feldelementen beginnt bei 0 Die korrekte
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
Architektur Verteilter Systeme Teil 2: Prozesse und Threads
Architektur Verteilter Systeme Teil 2: Prozesse und Threads 21.10.15 1 Übersicht Prozess Thread Scheduler Time Sharing 2 Begriff Prozess und Thread I Prozess = Sequentiell ablaufendes Programm Thread =
Kontrollstrukturen und Funktionen in C
Kontrollstrukturen und Funktionen in C Lernziele: Vertiefen der Kenntnisse über Operatoren, Kontrollstrukturen und die Verwendung von Funktionen. Aufgabe 1: Quickies: Datentypen in C a) Was sind die elementaren
Einführung in die Programmierung
Name, Vorname Matrikelnummer Probeklausur zur Vorlesung Einführung in die Programmierung WS 2008/09 Dauer: 2 Stunden Hinweise: Schreiben Sie Ihren Namen und Ihre Matrikelnummer auf dieses Deckblatt und
Einführung in PHP. (mit Aufgaben)
Einführung in PHP (mit Aufgaben) Dynamische Inhalte mit PHP? 2 Aus der Wikipedia (verkürzt): PHP wird auf etwa 244 Millionen Websites eingesetzt (Stand: Januar 2013) und wird auf etwa 80 % aller Websites
In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.
Binäre Suchbäume Tries (Folie 182, Seite 58 im Skript) In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut. In Tries entspricht die ite Verzweigung dem iten Zeichen des Schlüssels.
Modul CTO Barcode für Windows Seite 1
Modul CTO Barcode für Windows Seite 1 1 Barcode Modul 1.1 Vorwort Das Modul Barcode dient zum Ausdrucken von Barcodes auf Etiketten, Listen und Formularen auf grafikfähigen Windows-Druckern. Zum Einsatz
Zwischenablage (Bilder, Texte,...)
Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen
Arbeiten mit UMLed und Delphi
Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf
Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.
Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann. Einleitung Es kommt vor, dass im Handel Disketten angeboten werden, die Styles und Registrationen
Mikrocontroller Grundlagen. Markus Koch April 2011
Mikrocontroller Grundlagen Markus Koch April 2011 Übersicht Was ist ein Mikrocontroller Aufbau (CPU/RAM/ROM/Takt/Peripherie) Unterschied zum Mikroprozessor Unterschiede der Controllerarten Unterschiede
1) Farbsteuergerät in der Nikobus-Software unter Modul zufügen hinzufügen.
Programmierung des Farbsteuergeräts 340-00112 für Nikobus Diese Bedienungsanleitung gilt auch für die Nikobus-Produkte 340-00111 und 340-00113. Achtung: einige der aufgeführten Betriebsarten sind nur auf
Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>
Allgemeines Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C #include main() { printf( hello world\n ); } Peter Sobe 1 Die Großfamilie der C-Sprachen
MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH
MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: [email protected] Stand: MORE Projects GmbH Einführung Die in More Profile integrierte
Microcontroller Kurs. 08.07.11 Microcontroller Kurs/Johannes Fuchs 1
Microcontroller Kurs 08.07.11 Microcontroller Kurs/Johannes Fuchs 1 Was ist ein Microcontroller Wikipedia: A microcontroller (sometimes abbreviated µc, uc or MCU) is a small computer on a single integrated
Die Programmiersprache C99: Zusammenfassung
Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach
Professionelle Seminare im Bereich MS-Office
Gegenüber PowerPoint 2003 hat sich in PowerPoint 2007 gerade im Bereich der Master einiges geändert. Auf Handzettelmaster und Notizenmaster gehe ich in diesen Ausführungen nicht ein, die sind recht einfach
Anleitung über den Umgang mit Schildern
Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder
OECD Programme for International Student Assessment PISA 2000. Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland
OECD Programme for International Student Assessment Deutschland PISA 2000 Lösungen der Beispielaufgaben aus dem Mathematiktest Beispielaufgaben PISA-Hauptstudie 2000 Seite 3 UNIT ÄPFEL Beispielaufgaben
Stornierungsbedingungen und weitere Voraussetzungen - 2016
Stornierungsbedingungen und weitere Voraussetzungen - 2016 Teil I) Buchungsbedingung und Verbesserung A. BOOKING ONLINE Folgendes Verfahren ermöglicht der Kunde ihr Aufenthalt im Hotel in voller Selbstständigkeit
Bedienungsanleitung Anlassteilnehmer (Vereinslisten)
Bedienungsanleitung Anlassteilnehmer Dieses Programm ist speziell für Vereine entworfen. Es ist lizenzfrei verwendbar und gratis. Das Programm ist mit Excel 2010 erstellt worden und enthält VBA Programmierungen,
OpenMP - Threading- Spracherweiterung für C/C++ Matthias Klein, Michael Pötz Systemprogrammierung 15. Juni 2009
- Threading- Spracherweiterung für C/C++ Matthias Klein, Michael Pötz Systemprogrammierung 15. Juni 2009 Grundlagen der Parallelen Programmierung Hardware Threads vs. Prozesse Kritische Abschnitte Lange
PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN
PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 2. UNIX/Linux-Prozessverwaltung und zugehörige Systemaufrufe Wintersemester 2015/16 2. Die UNIX/LINUX-Prozessverwaltung Aufgaben: 1. Erzeugen neuer Prozesse
Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15
Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15 1 Bitte melden Sie sich über das Campusmanagementportal campus.studium.kit.edu
Übung: Verwendung von Java-Threads
Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum
5. Tutorium zu Programmieren
5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting
Dynamic Ressource Management
best Open Systems Day Fall 2006 Dynamic Ressource Management Unterföhring Marco Kühn best Systeme GmbH [email protected] Agenda Überblick Dynamic Resource Pools und FSS Dynamic Resource Memory RCAP Oracle
Ingenieurinformatik Diplom-FA (C-Programmierung)
Hochschule München, FK 03 WS 2014/15 Ingenieurinformatik Diplom-FA (C-Programmierung) Zulassung geprüft: (Grundlagenteil) Die Prüfung ist nur dann gültig, wenn Sie die erforderliche Zulassungsvoraussetzung
WinVetpro im Betriebsmodus Laptop
WinVetpro im Betriebsmodus Laptop Um Unterwegs Daten auf einem mobilen Gerät mit WinVetpro zu erfassen, ohne den Betrieb in der Praxis während dieser Zeit zu unterbrechen und ohne eine ständige Online
Einführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen
Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen Die folgenden Schritte sind für die Verbuchung von Studien- bzw. Prüfungsleistungen notwendig. Eine Online-Anleitung mit vielen weiterführenden
OpenMP. Viktor Styrbul
OpenMP Viktor Styrbul Inhaltsverzeichnis Was ist OpenMP Warum Parallelisierung Geschichte Merkmale von OpenMP OpenMP-fähige Compiler OpenMP Ausführungsmodell Kernelemente von OpenMP Zusammenfassung Was
Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
Die Java Stream API. Funktionale Programmierung mit der Stream API des JDK 1.8. Prof. Dr. Nikolaus Wulff
Die Java Stream API Funktionale Programmierung mit der Stream API des JDK 1.8 Prof. Dr. Nikolaus Wulff Funktionale Programmierung Neben der Collection API mit default Methoden ist als weitere Neuerung
Gezielt über Folien hinweg springen
Gezielt über Folien hinweg springen Nehmen wir an, Sie haben eine relativ große Präsentation. Manchmal möchten Sie über Folien hinweg zu anderen Folien springen. Das kann vorkommen, weil Sie den gesamten
Game Engine Architecture and Development. Platform Unabhängiger Code Multi Threading in Game Engines Profiling
Game Engine Architecture and Development Platform Unabhängiger Code Multi Threading in Game Engines Profiling Folien Die Folien werden auf acagamics.de hochgeladen Das Passwort ist 60fps (ohne ) Rückblick:
Feiertage in Marvin hinterlegen
von 6 Goecom GmbH & Co KG Marvin How to's Feiertage in Marvin hinterlegen Feiertage spielen in Marvin an einer Reihe von Stellen eine nicht unerhebliche Rolle. Daher ist es wichtig, zum Einen zu hinterlegen,
5.3.1.7 Laborübung - Task Manager (Verwalten von Prozessen) in Windows XP
5.0 5.3.1.7 Laborübung - Task Manager (Verwalten von Prozessen) in Windows XP Einführung Drucken Sie diese Übung aus und folgen Sie den Anweisungen. In dieser Übung werden Sie sich den Task Manager ansehen
Objektorientiertes Programmieren mit Suse Linux
Objektorientiertes Programmieren mit Suse Linux Zum Programmieren werden 2 Komponenten benötigt: 1. einen Editor zur Eingabe des Quellcodes 2. einen Compiler, der den Quellcode in die Maschinensprache
Lizenzierung von SharePoint Server 2013
Lizenzierung von SharePoint Server 2013 Das Lizenzmodell von SharePoint Server 2013 besteht aus zwei Komponenten: Serverlizenzen zur Lizenzierung der Serversoftware und CALs zur Lizenzierung der Zugriffe
Dokumentenverwaltung im Internet
Dokumentenverwaltung im Internet WS 09/10 mit: Thema: Workflow und Rollenverteilung im Backend Gruppe: DVI 10 Patrick Plaum und Kay Hofmann Inhalt 1. Benutzer und Benutzergruppen erstellen...2 1.1. Benutzergruppen...2
Klausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2014, 16. Juli 2014 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name: Matrikelnr.:
