GPU-Programmierung
Ein Programm, das tausende Male hintereinander sehr kleine Kernel startet, ist langsam. Welche Verbesserung ist am besten geeignet?
- ADie Zahl der Starts verringern, z. B. indem mehrere kleine Kernel zu einem zusammengefasst (fusioniert) werden
- BZwischen den Kernel-Starts Wartezeiten einfügen
- CDie Zahl der Threads pro Block auf 1 setzen
Antwort und Erläuterung anzeigen
Antwort: A. Die Zahl der Starts verringern, z. B. indem mehrere kleine Kernel zu einem zusammengefasst (fusioniert) werden
Ein Kernel-Start kostet durch die Verarbeitung auf der CPU-Seite und die Vorbereitung der GPU eine feste Zeit von einigen Mikrosekunden. Ist der Inhalt des Kernels kürzer, fällt nur noch der Startaufwand ins Gewicht. Werden mehrere Verarbeitungen in einem Kernel zusammengefasst, sinkt die Zahl der Starts, und der Aufwand, Zwischenergebnisse in den Speicher zu schreiben und wieder zu lesen, entfällt. Auch Mechanismen, die eine Folge von Starts gesammelt aufzeichnen und auf einmal absenden (z. B. CUDA Graphs), werden genutzt.