Unverzichtbar für die Performance-Optimierung

February 21, 2012

Was “Programming Massively Parallel Processors: A Hands-On Approach” von anderen Büchern unterscheidet, ist die genaue Beschreibung der Funktionsweise der Hardware.

Dieses Buch ist vor etwa zwei Jahren erschienen. Aus diesem Grund sind Teile des Buches veraltet, da viele Konstanten für die G80- und die G200-Architekturen angegeben werden. Die momentan aktuelle Fermi-Architektur wird nur kurz in Kapitel 12 vorgestellt.

Aber: Was dieses Buch von anderen unterscheidet, ist die genaue Beschreibung der Funktionsweise der Hardware, wie z. B. das Warp-Scheduling und die Speicherzugriffe. Auch wird anhand von zwei Fallbeispielen Schritt-für-Schritt sequentieller Code in möglichst optimalen CUDA-Code umgeformt. Hier lernt der Leser das Umschreiben und Anpassen von Code an die GPU und erfährt wichtige Tipps, wie z. b. ‘“loop fission’”, “‘latency hiding”’ und “‘memory coalescing’”. Man erfährt so aber auch, dass das Schreiben von optimalem Code erhebliche (Denk-)Arbeit erfordert.

Es gibt allerdings auch ein paar Kritikpunkte: die Beispiele erfordern Kenntnisse in der Mathematik, der Index ist unvollständig und der Abschnitt über OpenCL bringt nicht viel, da es für den Einstieg zu wenig ist. Auch werden CUDA Arrays (2D, 3D) und Texturen nicht ausführlich genug behandelt.

Wer CUDA-Programme schreiben möchte, die die GPU möglichst gut ausnutzen, kommt an der Lektüre dieses Buches nicht vorbei.

  • David Kirk, Wen-Mei W. Hwu
  • Programming Massively Parallel Processors: A Hands-On Approach
  • Morgan Kaufman
  • 2010

Siehe auch die Renzension bei Amazon