Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Vorwort des Gutachters
1 Einstieg in C
2 Das erste Programm
3 Grundlagen
4 Formatierte Ein-/Ausgabe mit »scanf()« und »printf()«
5 Basisdatentypen
6 Operatoren
7 Typumwandlung
8 Kontrollstrukturen
9 Funktionen
10 Präprozessor-Direktiven
11 Arrays
12 Zeiger (Pointer)
13 Kommandozeilenargumente
14 Dynamische Speicherverwaltung
15 Strukturen
16 Ein-/Ausgabe-Funktionen
17 Attribute von Dateien und das Arbeiten mit Verzeichnissen (nicht ANSI C)
18 Arbeiten mit variabel langen Argumentlisten – <stdarg.h>
19 Zeitroutinen
20 Weitere Headerdateien und ihre Funktionen (ANSI C)
21 Dynamische Datenstrukturen
22 Algorithmen
23 CGI mit C
24 MySQL und C
25 Netzwerkprogrammierung und Cross–Plattform-Entwicklung
26 Paralleles Rechnen
27 Sicheres Programmieren
28 Wie geht’s jetzt weiter?
A Operatoren
B Die C-Standard-Bibliothek
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch
Buch: C von A bis Z

C von A bis Z
3., aktualisierte und erweiterte Auflage, geb., mit CD und Referenzkarte
1.190 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1411-7
Pfeil 26 Paralleles Rechnen
Pfeil 26.1 Parallelität
Pfeil 26.1.1 Single-Prozessorsysteme
Pfeil 26.1.2 Hyperthreading
Pfeil 26.2 Programmiertechniken der Parallelisierung
Pfeil 26.2.1 Automatische Parallelisierung
Pfeil 26.2.2 Halbautomatische Parallelisierung
Pfeil 26.2.3 Echte Parallelisierung
Pfeil 26.3 Vom Prozess zum Thread
Pfeil 26.4 Mit den POSIX-Threads programmieren
Pfeil 26.4.1 Ein serielles Beispiel
Pfeil 26.4.2 Das Grundgerüst für ein Programm mit mehreren Threads
Pfeil 26.4.3 Zusammenfassung


Rheinwerk Computing - Zum Seitenanfang

26.2 Programmiertechniken der Parallelisierung Zur nächsten ÜberschriftZur vorigen Überschrift

Als Programmierer können Sie im Grunde mehrere Wege gehen, um Ihre Anwendung zu parallelisieren.


Rheinwerk Computing - Zum Seitenanfang

26.2.1 Automatische Parallelisierung Zur nächsten ÜberschriftZur vorigen Überschrift

Zunächst gäbe es die Möglichkeit, das Parallelisieren dem Compiler zu überlassen. Eine solche automatische Parallelisierung wird derzeit nur vom Intel-Compiler angeboten. Hierzu setzt man bei der Kompilierung die Option /Qparallel für Windows und /parallel für Linux. Bei der Übersetzung sucht der Compiler jetzt nach einfachen Schleifen (beispielsweise Grafikroutinen), die er in mehreren Threads parallel ausführen kann. Wer hier jetzt eine Compiler-Optimierung wie mit den Optionen -O1 etc. sieht, hat recht. Im Grunde ist diese Option des Compilers nichts anderes als das. Bei Tests ist es mir außerdem nicht gelungen, mehr als zwei parallele Threads zu erzeugen.


Rheinwerk Computing - Zum Seitenanfang

26.2.2 Halbautomatische Parallelisierung Zur nächsten ÜberschriftZur vorigen Überschrift

Neben der Möglichkeit, parallele Anwendungen mithilfe des Intel-Compilers automatisch zu erstellen, gibt es noch eine halbautomatische Möglichkeit (wenn man das so sagen darf). »Halbautomatisch« deswegen, weil hierbei der Code nicht verändert, sondern nur ergänzt werden muss. Hierzu verwendet man OpenMP, eine Programmierschnittstelle, die seit 1997 von verschiedenen Hardware- und Compiler-Herstellern zur Shared-Memory-Programmierung auf Multiprozessor-Rechnern verwendet wird. Ein Vorteil von OpenMP ist es, dass die Synchronisation der Threads implizit erfolgt. Allerdings schränkt dieser Vorteil den Grad der Parallelisierung erheblich ein. Des Weiteren lässt sich OpenMP nur für Shared-Memory-Systeme verwenden (wie dies beispielsweise bei den Dual-Core-CPUs der Fall ist).

Für die Parallelisierung werden pragma-Direktiven verwendet, weshalb in dem Fall, dass ein Compiler OpenMP nicht unterstützt, keine Fehlermeldungen ausgegeben werden. OpenMP ist auf vielen gängigen Compilern vorhanden (MS Visual Studio etc.). Auch unter Linux wird der GCC unterstützt – dies allerdings erst ab der Version 4.2, was bedeutet, dass Sie den entsprechenden Snapshot (nach-)installieren müssen. Auch der Intel-Compiler (erhältlich für Linux und Windows) unterstützt OpenMP. OpenMP ist somit auch eine interessante und einfache Möglichkeit der (halbautomatischen) Parallelisierung, die sich allerdings wegen der Vereinfachungen recht schlecht skalieren lässt. Mehr Informationen dazu finden Sie auf der Webseite von OpenMP unter http://www.openmp.org/.


Rheinwerk Computing - Zum Seitenanfang

26.2.3 Echte Parallelisierung topZur vorigen Überschrift

Dann gibt es noch den Weg der echten Thread-Programmierung. Allerdings ist die Multithread-Programmierung nicht unbedingt eine einfache Sache. Mehrere Threads bedeuten häufig auch mehr Aufwand bei der Programmerstellung. Gewöhnlich müssen Threads auch synchronisiert werden. Schließlich stellt jeder Thread so etwas wie eine eigene Anwendung dar. Trotzdem reißt, wenn ein Thread beispielsweise abstürzt, dieser alle anderen Threads mit ins Verderben.

Thread-Bibliotheken gibt es viele. Den Windows-Entwicklern werden da einige hausgemachte Lösungen für Win32, MFC oder das .NET-Framework mitgeliefert. Wer reine Windows-Anwendungen schreibt, der dürfte damit sehr zufrieden sein. Soll es aber plattformübergreifend sein, greift man gewöhnlich zur POSIX-Thread-Bibliothek. Diese Spezifikation beschreibt den POSIX-Standard 1003.1c oder kurz und einfach Pthreads. Auch in diesem Buch greifen wir auf die POSIX-Threads zurück, um hier die Erwartungen eines jeden Lesers unabhängig von der Systemangehörigkeit zu erfüllen.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: C von A bis Z

 C von A bis Z
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: C/C++






 C/C++


Zum Rheinwerk-Shop: Einstieg in C






 Einstieg in C


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: C++ Handbuch






 C++ Handbuch


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern