Nai
Lt. Commander
- Registriert
- Aug. 2012
- Beiträge
- 1.579
Hallo liebe Leser des Programmierforums!
Ich hätte so eine kurze Frage die mich seit längeren wurmt und wo ich auch keine Antwort in Google finde: Bei GPUs ist doch das Scheduling der Vektorinstruktionen auf die Vektorrechenkerne sehr primitiv. Deshalb bleiben die Rechenkerne von denjenigen SIMD-Lanes auch ungenutzt, die durch Predication oder durch die Active-Mask deaktiviert sind. Das hat Beispielhaft zur Folge, dass wenn bei einer Vektor-Recheninstruktion 50 \% aller SIMD-Lanes deaktiviert sind die GPU für diese Instruktion auch nur 50 \% ihrer Rechenleistung ausnutzen kann.
Wie viel Rechenleistung geht jedoch bei CPUs verloren bzw wie sieht die Ausnutzung der Vektoreinheiten aus wenn:
1. Ein Programm Vektorinstruktion verwendet, die Schmäler als die SIMD-Breite der CPU ist (zum Beispiel eine 128-Bit-SSE-Instruktion statt einer 256-Bit-AVX-Instruktion, oder noch schlimmer eine Skalare-Instruktion)?
2. Ein Programm bei einer Vektorinstruktion die SIMD-Lanes durch Predication deaktiviert?
Da das interne Scheduling von CPUs ja cleverer ist als bei GPUs und die CPU afaik intern auf RISC-Basis arbeitet nehme ich an, dass nicht ganz so viel Rechenleistung verloren geht. Für diese Vermutung habe ich leider keine Quelle gefunden. Weiß da jemand etwas genaueres?
MfG Nai
Ich hätte so eine kurze Frage die mich seit längeren wurmt und wo ich auch keine Antwort in Google finde: Bei GPUs ist doch das Scheduling der Vektorinstruktionen auf die Vektorrechenkerne sehr primitiv. Deshalb bleiben die Rechenkerne von denjenigen SIMD-Lanes auch ungenutzt, die durch Predication oder durch die Active-Mask deaktiviert sind. Das hat Beispielhaft zur Folge, dass wenn bei einer Vektor-Recheninstruktion 50 \% aller SIMD-Lanes deaktiviert sind die GPU für diese Instruktion auch nur 50 \% ihrer Rechenleistung ausnutzen kann.
Wie viel Rechenleistung geht jedoch bei CPUs verloren bzw wie sieht die Ausnutzung der Vektoreinheiten aus wenn:
1. Ein Programm Vektorinstruktion verwendet, die Schmäler als die SIMD-Breite der CPU ist (zum Beispiel eine 128-Bit-SSE-Instruktion statt einer 256-Bit-AVX-Instruktion, oder noch schlimmer eine Skalare-Instruktion)?
2. Ein Programm bei einer Vektorinstruktion die SIMD-Lanes durch Predication deaktiviert?
Da das interne Scheduling von CPUs ja cleverer ist als bei GPUs und die CPU afaik intern auf RISC-Basis arbeitet nehme ich an, dass nicht ganz so viel Rechenleistung verloren geht. Für diese Vermutung habe ich leider keine Quelle gefunden. Weiß da jemand etwas genaueres?
MfG Nai
Zuletzt bearbeitet: