Bestes CUDA-Buch für Fortgeschrittene
April 16, 2014
Mit CUDA ist es einfach, eine Berechnung um den Faktor 2-5 zu beschleunigen. Wie man höhere Speedups erreicht, lernt man in “CUDA Programming” von Shane Cook.
Ich empfehle dieses Buch als „zweites Buch“ über CUDA. Wer bereits CUDA-Grundkenntnisse hat, z. B. im Rahmen des Buchs “Cuda by Example” von Sanders und Kandrot, kann hier die nächsten Schritte machen.
Mit CUDA ist es einfach, eine Berechnung um den Faktor 2-5 zu beschleunigen. Man kann relativ einfach erste Erfolge verbuchen. Aber in vielen Fällen wäre auch ein Faktor 9-10 drin (*). Hierzu benötigt man aber Hintergrundwissen und ein paar Optimierungstechniken. Das Ziel dieses Buches ist es, einen CUDA-Anfänger mit einem kleinen Speedup zu einem CUDA-Profi zu machen, der diesen Faktor 10 erreichen kann (S. xiii).
Und genau das ist dem Autor auch gelungen. Dieses Buch enthält sehr viele nützliche Informationen und insbesondere das Kapitel 9 sollte Pflichtlektüre für jeden CUDA-Entwickler sein.
Leider ist für meinen Geschmack die Reihenfolge der Kapitel nicht optimal gewählt. Es werden schon in den Anfangskapiteln sehr spezielle Optimierungen vorgeführt, bevor man in Kapitel 9 einen richtigen Überblick auf die Grundlagen erhält und verschiedene Techniken der Optimierung erfährt. Insbesondere das Fallbeispiel mit AES in Kapitel 7 wirkte hier störend und sollte beim ersten Lesen übersprungen werden und als letztes gelesen werden.
Dann gibt es auch noch ein paar kleinere Mängel: Ich habe z. B. manche Worte nicht im Index gefunden. Auch ist es schlecht, in Büchern Informationen abzudrucken, die schnell veralten können. Hierzu zählen z. B. Installationsroutinen, Kommandozeilenargumente und IDEs. Auch wird mit Platz teilweise recht großzügig umgegangen, ganze Listings abgedruckt. Das Buch könnte 50 Seiten kürzer sein und nichts an Informationen verlieren. Ein wenig störend ist auch, dass die Zeitmessungen von Benchmarks immer nur als Ausgabe von der Kommandozeile direkt in das Buch kopiert und nicht als Tabelle aufbereitet wurden. An manchen Stellen ist das Buch auch schon ein wenig veraltet, so dass manche Informationen nicht mehr stimmen, z. B. das man zwei GPUs zum Debuggen benötigt (S.63).
(*) Anmerkung: Ein Speedup-Faktor 10 ist natürlich nicht immer möglich, denn der hängt von den sequentiellen Abhängigkeiten des Algorithmus ab. Auch gibt es Probleme, die nicht effizient parallelisiert werden können, die sogenannten P-vollständigen Probleme.
- Shane Cook
- CUDA Programming
- Morgan Kaufmann
- 2012
Siehe auch die Renzension bei Amazon.