Fashion Sale Hier klicken Fußball Fan-Artikel calendarGirl Cloud Drive Photos Sony Learn More designshop Hier klicken sommer2016 Fire Shop Kindle PrimeMusic Lego Summer Sale 16

Kundenrezensionen

4,4 von 5 Sternen10
4,4 von 5 Sternen
5 Sterne
7
4 Sterne
2
3 Sterne
0
2 Sterne
0
1 Stern
1
Ihre Bewertung(Löschen)Ihre Bewertung


Derzeit tritt ein Problem beim Filtern der Rezensionen auf. Bitte versuchen Sie es später noch einmal.

am 13. März 2011
Parallele Algorithmen waren mal ein "esoterisches" Thema für theoretische Informatiker. Mit CUDA kann jetzt jeder massiv parallel programmieren und 10- bis zu 100-fache Geschwindigkeitssteigerungen erreichen.

Es gibt diese Bücher - gerade bei neuen Themen - bei denen man den Eindruck hat, die Autoren haben die Dokumentation abgeschrieben und nur ein wenig ausgeschmückt. Das ist hier definitiv nicht der Fall.

Dieses Buch ist der perfekte Start in CUDA für Einsteiger. Aber auch manche Fortgeschrittene und Profis könnten Ihre Freude an den guten Erklärungen und Beispielen haben.

Der Buchtitel "CUDA by Example" sagt es schon: Anhand von Beispielen soll gelernt werden. Und da numerische Algorithmen, wie z. B. Vektoraddition, Matrizen-Multiplikation zwar auch behandelt werden, aber von vielen nicht als "Spaß" empfunden werden, haben die Autoren graphische Beispiele zusammengestellt: Julia-Mengen, einen einfachen Ray Tracer, Wärmeübertragung .

Die Parallelität wird schrittweise, langsam und behutsam eingeführt und immer ausführlich erklärt. Ausgangspunkt ist sequentieller Code für die CPU, der dann umgeformt wird.

Das Ziel des Buches, ist es, dem Leser die Grundlagen von CUDA beizubringen, damit er selber darin entwickeln kann. Die Theorie paralleler Algorithmen wird nicht behandelt, wird aber im Rahmen des Buches auch nicht benötigt.

Als parallele Lektüre und als Nachschlagewerk benötigt man den "NVIDIA CUDA Programming Guide" und die "NVIDIA CUDA Best Practices", die beide von NVIDA mit dem CUDA Toolkit mitgeliefert werden.

Allerdings ist es ein Einsteigerbuch und die folgenden fortgeschrittenen Themen werden nicht behandelt.

- Performance-Optimierung von Kerneln
- Optimierung von Speicherzugriffen ("coalescing")
- CUDA Arrays, 3D-Speicher
- CUDA Hardware im Detail, z. B. Warp-Scheduling
- Vermeidung von Divergenz
- Neuerungen bei Fermi, z. B. Caching
- CUDA Driver API

Fortgeschrittene Kenntnisse in C oder C++ sind notwendig, d.h. man sollte schon Programme geschrieben und gelesen haben. Auch sind Erfahrungen auf der Kommandozeile oder einer C-Entwicklungsumgebung von Vorteil. Grundwissen über parallele Algorithmen ist nicht schlecht, aber nicht unbedingt notwendig.

Und hier noch eine stichwortartige Auflistung, um die Bewertung 4 von 5 zu rechtfertigen.

Positiv
- Gute Beispiele, gute Erklärungen, langsames Tempo
- Die Autoren benutzen erst Grid-Blöcke und im zweiten Schritt Thread-Blöcke, um Parallelität einzuführen. Das ist eine gute Idee und das pädagogisch Sinnvollste.
- Schöne Beispiele zum Anschauen, wie z. B. Julia-Mengen, Ray Tracer als Beispiel für konstanten Speicher, Shared Memory und Bitmaps, Wärmeübertragung für 1D- und 2D-Texturen
- Schöne Einleitung mit Historie und Anwendungsbeispielen
- Installation des Treibers, des Toolkits und des SDKs werden erklärt
- Der Quellcode ist herunterladbar und funktioniert (meistens) auch
- Gutes Beispiele für atomare Operationen im Anhang (Hash-Tabelle)

Negativ
- Der Code wurde immer vollständig abgedruckt. Hier kommt es im Laufe des Buchs zu Wiederholungen. Für Einsteiger mag diese Entscheidung richtig sein, den Fortgeschrittenen nervt es, eine Funktionsdefinition mehr als einmal lesen zu müssen. Ganz schlimm ist dieses bei den Ereignisse / Events, wenn der gesamte Ray Tracer noch zweimal abgedruckt wird (einmal mit globalem, einmal mit konstantem Speicher).
- Sehr schnell veraltende Informationen wurden abgedruckt, z. B. die Liste der Devices auf S. 15f.
- Die Dateinamen der Beispielprogramme stehen nicht im Buch. Man muss daher manchmal ein wenig suchen.
- Abschnitt 3.3 'Querying Devices' ist zu diesem Zeitpunkt zu ausführlich. Das will man nicht alles wissen. Man kann auch zu diesem Zeitpunkt mit 95% der Begriffe nichts anfangen. Da hätte auch ein Verweis zur Dokumentation genügt.
- Für Anfänger wäre ein kurzer Abschnitt über grundlegende Design-Patterns bzw. parallele Algorithmen sehr praktisch.

Fazit

Wer CUDA lernen will, findet in diesem Buch die beste Einleitung, die es momentan gibt.
0Kommentar|10 Personen fanden diese Informationen hilfreich. War diese Rezension für Sie hilfreich?JaNeinMissbrauch melden
am 9. November 2011
Um eines vorwegzunehmen: Ich würde mich im Bereich der Programmierung von C/C++ und mit Grafik-APIs wie OpenGL und DirectX als fortgeschrittenen Entwickler einstufen.

Über den Umweg des Raytracing Frameworks OptiX von Nvidia bekam ich dann ersten Kontakt mit CUDA und wollte eigentlich erstmal nur wissen, wie das so funktioniert und was das genau ist. Daher griff ich zu diesem Buch, wohlwissen, dass es als absolutes Grundlagenwerk ohne "Tiefenwirkung" gebrandmarkt ist.

Was soll ich sagen, ich wurde absout nicht enttäuscht. Ich habe das Buch mit in den Uraub genommen und es quasi in den Kaffeepausen bzw. bei nebenbei tobenden Kindern gelesen. Das beschreibt in etwa den Anspruch bzw. den Aufmerksamkeitsgrad den das Buch an einen erfahrenen Programmierer stellt. Und das ist nun absolut nicht negativ gemeint.

Im Gegenteil. Ich fand es sehr erfrischend, dass man das Buch einfach mal so nebenbei konsumieren kann. Der didaktische Aufbau des Buches ist sehr gut. Man kommt ohne viel Umschweife direkt in die Materie, die einem aber Stück für Stück nähergebracht wird. Das Buch startet mit sehr einfachen Beispielen die dann erstmal sehr einfach in CUDA umgesetzt werden. Danach wird immer etwas weiter optimiert, um die verschiedenen Möglichkeiten von Parallelität CUDA aufzuzeigen oder verschiedene Speichertypen zu verwenden.

Man sollte nicht erwarten, dass man aus dem Buch allzu tiefe technische Details ziehen kann. Auch wird man kaum den optimalsten Code für CUDA schreiben. Aber das ist auch gar nicht der Anspruch des Buches. Das Buch erklärt an sehr schön kurz abgeschlossenen Beispielen wie CUDA funktioniert, und dass CUDA nicht gleich CUDA ist da man zum einen verschiedene Speichertypen und zum anderen verschiedene Parallelisierungsebenen (Cores, Theads) zur Auswahl hat. All dies wird einem sehr schön nahegebracht ohne jedoch tiefer in die Optimierung des Codes einzusteigen. Einzig und allein das wiederholte Abdrucken kompletter Programmteile würde ich zur Diskussion stellen wollen. Das hat zwar den Vorteil, dass man als Anfänger nicht erst schauen muss, wo man diverse Code-Schnippsel einfügen muss. Aber mal ehrlich: Greift jemand, dem so etwas Probleme bereiten würde weil er kaum Programmiererfahrung hat, zu einem Buch über CUDA? Egal, das trübt das positive Gesamtbild nicht nachhaltig.

Von daher kann ich mich den vorherigen Rezensionen nur anschließen. Ein tolles Buch. Für einen "echten" Entwickler ist es super nebenbei zu lesen, aber zu viel Details darf man hier nicht erwarten. Für diesen Interessentenkreis ist es eher ein Einstieg den man locker in ein paar Stunden durchgearbeitet hat, aber man sollte danach noch mehr Material in die Hand nehmen um effizienten CUDA Code schreiben zu können. Für den Laien (denke ich) hingegen ist das Buch ein guter Einstieg in die Programmierung mit CUDA, so dass man gleich loslegen kann.

Ich bekam also genau das, was ich erwartet habe. Allerdings in deutlich besserer Qualität als erhofft. Von daher fünf Daumen hoch :)
0Kommentar|3 Personen fanden diese Informationen hilfreich. War diese Rezension für Sie hilfreich?JaNeinMissbrauch melden
am 29. Oktober 2011
Ich spiel mich schon seit einiger Zeit mit dem Gedanken ein CUDA Programm zu schreiben. Bisher fehlte mir das passende Problem dafür. Ich habe aber nun eine nichtlineare (und nicht konvexe) Portofolio-Optimierung mit Hilfe der Differential Evolution Heuristik geschrieben. Die könnte einen Speedup brauchen und sollte auch parallelisierbar sein.

Im Vorwort schreibt BLAS-Papst J.Dongarra "This book is required reading for anyone working with accelerator-based computing systems". Wahrscheinlich kann man CUDA-Programming auch mit der sehr guten SDK-Dokumentation lernen. Dieses Buch ist aber sicher nützlich. Die Autoren beginnen wie es sich gehört mit "Hello World" und enden mit einem für massiv-paralles Computing garstigen Problem: Einer Hashtabelle. Das war eines der Hauptprobleme beim massiv-parallelen Schachprogramm Hydra (siehe [1]).
Die Beispiele sind sehr gut aufgebaut, die Autoren haben eine didaktische Ader. Nachdem sie aus dem CUDA-Developer Team stammen kennen sie sich auch aus. Bei massiv-paralleler Programmierung kämpft man immer gegen die Kommunikations- und Memory-Latenz. Wie beschäftigt man die im Überfluss vorhandenen Recheneinheiten? Ohne auf die - sich ohnehin ändernden - Details der GPU-Hardware einzugehen behandeln die Autoren diesen zentralen Aspekt mit steigenden Schwierigkeitsgrad. Um dann im Anhang am Beispiel der Hashtabelle aufzuzeigen, dass sich manche Probleme einfach nicht effektiv parallelisieren lassen (es gibt allerdings gefinkelte Lösungen für das Problem. Das würde aber den Rahmen eines Lehrbuchs sprengen).
Besonders gefallen hat mir, dass der Kode vollständig abgedruckt ist. Ich will nicht zwischen Buch und dem Bildschirm hin- und herspringen. Die Autoren kommentieren ihn auch mit Akribie.
Der Inhalt des Buches dient auch als (Video-)Skriptum für universitäre CUDA-Kurse. Die etwas flapsige Sprache ist diesem Zielpublikum angepasst. Mir gefällt der etwas subtilere Humor von D.Knuth besser. Die Autoren werden aber nie peinlich.

Sehr viele Programmierbücher sind heutzutage zu Bildl-Anklick Anleitungen verkommmen. Als Bücher- und Programmiernarr erfreut es mein Herz, dass noch richtige Bücher für richtige Programmierer geschrieben werden. Möglicher Weise liegt es daran, dass CUDA auch nix für Bildl-Anklicker ist.
Nachdem ein Problem vorhanden ist gibt es nach dem Studium dieses Buches keine Ausrede mehr die Ärmel hochzukrempeln und mit richtiger CUDA-Programmierung loszulegen. Werma segn obs was wird.
Ein sehr gutes weiterführendes Buch ist [2].

[1] Chrilly Donninger, Ulf Lorenz: The Chess Monster Hydra.
[2] D.Kirk, Wen-Mei Hwu: Programming Massively Parallel Processors.

P.S.: Ich habe das Problem nun (6.12.2011) parallelisiert. Eine direkte CUDA-Portierung brachte auf einer nicht sehr leistungsstarken Silent-NVIDIA-GPU nur Speedup 1.1. Man kämpft - wenig überraschend - gegen die Memory-Latenz. Durch Cachen und entsprechende Umorganisation der Berechnung ist der Speedup der GPU-Routine 25. Die Gesamtanwendung ist natürlich nicht 25x so schnell geworden. Da kämpft man auch gegen Amdahls Law. Aber es erfüllt meine Vorgaben.
0Kommentar|3 Personen fanden diese Informationen hilfreich. War diese Rezension für Sie hilfreich?JaNeinMissbrauch melden
am 21. Februar 2011
Wer ernsthaft CUDA lernen möchte und Neuling in der parallelen Programmierung ist, sollte zu diesem Buch greifen! Eine derart systematische Einführung in dieses Thema habe ich in keinem anderen Buch oder Online-Tutorial gesehen!
Wer allerdings schon ein bisschen Erfahrung gesammelt hat, der kann getrost die erste Hälfte des Buches skippen.

Der Code der Demos ist online verfügbar und lässt sich problemlos kompilieren und ausführen! Auch eine Leseprobe (Kapitel 4) ist online verfügbar.
0Kommentar|2 Personen fanden diese Informationen hilfreich. War diese Rezension für Sie hilfreich?JaNeinMissbrauch melden
am 23. Juli 2013
Eine gute Einleitung, um zügig zu den ersten CUDA-Programmen zu kommen. Ich habe dieses Buch an 1 1/2 Tagen durchgearbeitet und fühlte mich danach bereit für Vertiefungen.

Der Plauderstil, in dem dieser Text geschrieben ist, - auch wenn gewiss gut gemeint - ist mir etwas auf die Nerven gegangen. Ohne die diversen redundanten Ausschweifungen wäre der Text nur ca. 2/3 so lang und man käme noch schneller durch.
0Kommentar|War diese Rezension für Sie hilfreich?JaNeinMissbrauch melden
am 15. November 2013
Schreibstil und Inhalt finde ich sehr gut gelungen. Trotz meiner eher bescheidenen Englischkenntnisse hab ich das Buch in 2 Wochen durchackern können. Es übt auch Selbstkritik im Vergleich von CPU und GPU, nicht immer ist die GPU automatisch im Vorteil. Die Möglichkeiten, welche CUDA bietet, sind nach Lektüre nun sehr verständlich und ich freue mich auf die vielen Zusatztools von NVidia.
0Kommentar|War diese Rezension für Sie hilfreich?JaNeinMissbrauch melden
am 13. September 2014
Guter Einstieg, saubere Gestaltung und Erklärungen.
Würde ich weiter empfehlen!

Anmerkung zum kostenlosen ebook:
Ebook Version ist so lala und nur 45 Tage online zugreifbar.
0Kommentar|War diese Rezension für Sie hilfreich?JaNeinMissbrauch melden
am 24. Mai 2014
This book covers the cuda basic concepts in a very understandable way. The author manages to give an introduction to more advanced topic, in a seemingsless manner.
0Kommentar|War diese Rezension für Sie hilfreich?JaNeinMissbrauch melden
am 1. Juni 2015
Hervorragendes Buch für den Einstieg in die GPU Programmierung mit dem NVIDIA CUDA SDK, Sanders zeigt anschaulich wie es geht
0Kommentar|War diese Rezension für Sie hilfreich?JaNeinMissbrauch melden
am 16. Dezember 2014
You want to learn GPU programming? Plenty of free, updated tutorials online (videos on Udacity and pdfs) and maybe you want to go with OpenCL, which is not bound to NVIDIA GPUs...
11 Kommentar|War diese Rezension für Sie hilfreich?JaNeinMissbrauch melden

Haben sich auch diese Artikel angesehen


Gesponserte Links

  (Was ist das?)