Ich entwickle einen CFD-Code (Computational Fluid Dynamics) mit CUDA. Während ich einige Beschleunigungstests an einer einzelnen Tesla K40 GPU (im Vergleich zur Intel Xeon E5 v2 CPU) für verschiedene Problemgrößen durchführe, zeigt die GPU eine höhere Beschleunigung, indem die Problemgröße erhöht wird. Zum Beispiel bekomme ich eine Beschleunigung um einen Faktor von ~ 1,5x für ~ 1 Million Elemente, während es sich auf ~ 11x für 10 Millionen Elemente verbessert.GPU-Leistung hängt von der Anzahl der Elemente ab (problem_size)
Ich habe keine Ahnung, dass das theoretisch die höhere Leistung für größere Probleme verursacht? Tatsächlich ist dies auch der Fall, den ich in vielen wissenschaftlichen Anwendungen (insbesondere Strömungsmechanik) gesehen habe, die auf GPU laufen. (Ich habe mich gefragt, ob etwas wie Kernel Overhead, Latenz usw. betroffen sind?)
Danke für jede Antwort oder Kommentar!
PS: Mit speedup meine ich das Verhältnis der Ausführungszeit des GPU-Codes zur Ausführungszeit der CPU-Version. Tatsächlich vergrößere ich die Problemgröße in beiden Versionen (und verwende natürlich die gleiche Problemgröße für beide in jedem Vergleichstest) und berechne die Beschleunigung für die entsprechende Problemgröße neu.
Beschleunigung relativ zu was? – Drop
Wie ich schon erwähnt habe; die Beschleunigung im Vergleich zur CPU. – Siamak
Sie sollten weitere Details angeben. Wie ist die Geschwindigkeit pro Element? Erhalten Sie die relative Leistungssteigerung, weil die GPU pro Element schneller wird (wahrscheinlich aufgrund von versteckten Latenzen) oder weil die CPU langsamer wird (möglicherweise Cache-Größe). – havogt