Nvidias CUDA: Das Ende der CPU?

Analyse Englisch: www.mjfriendship.de/en/index.php?op...27&Itemid=47 Trotz der früheren Aussagen, dass dies kein Pferderennen ist, konnten wir der Versuchung nicht widerstehen, das Programm auf einer 8800 GTX zu laufen, die dreimal so schnell war wie die mobile 8600, unabhängig von der Größe von die Blöcke. Man

Analyse

Englisch: www.mjfriendship.de/en/index.php?op...27&Itemid=47 Trotz der früheren Aussagen, dass dies kein Pferderennen ist, konnten wir der Versuchung nicht widerstehen, das Programm auf einer 8800 GTX zu laufen, die dreimal so schnell war wie die mobile 8600, unabhängig von der Größe von die Blöcke. Man könnte meinen, das Ergebnis wäre basierend auf den jeweiligen Architekturen vier- oder mehrfach schneller: 128 ALUs im Vergleich zu 32 und eine höhere Taktfrequenz (1, 35 GHz im Vergleich zu 950 MHz), aber in der Praxis war das nicht der Fall. Auch hier ist die wahrscheinlichste Hypothese, dass wir durch die Speicherzugriffe eingeschränkt waren. Um genauer zu sein, wird auf das anfängliche Bild wie ein mehrdimensionales CUDA-Array zugegriffen - ein sehr komplizierter Begriff für das, was wirklich nichts anderes als eine Textur ist. Es gibt mehrere Vorteile:

  • Zugriffe profitieren vom Textur-Cache;
  • Wir haben einen Wrapping-Modus, der es im Gegensatz zur CPU-Version vermeidet, die Kanten des Bildes zu verwalten.

Wir hätten auch die freie Filterung mit normalisierter Adressierung zwischen [0, 1] anstelle von [0, Breite] und [0, Höhe] nutzen können, aber das war in unserem Fall nicht nützlich. Wie Sie als treuer Leser wissen, hat der 8600 16 Textureinheiten im Vergleich zu 32 für den 8800GTX. Es gibt also nur ein Verhältnis von zwei zu eins zwischen den beiden Architekturen. Addieren Sie den Unterschied in der Frequenz und wir erhalten ein Verhältnis von (32 x 0, 575) / (16 x 0, 475) = 2, 4 - in der Nähe des Drei-zu-Eins-Verhältnisses, das wir tatsächlich beobachtet haben. Diese Theorie hat auch den Vorteil, zu erklären, warum sich die Größe der Blöcke auf dem G80 nicht wesentlich ändert, da die ALUs ohnehin durch die Textureinheiten begrenzt sind.

Zusätzlich zu den ermutigenden Ergebnissen sind unsere ersten Schritte mit CUDA in Anbetracht der ungünstigen Bedingungen, die wir gewählt hatten, sehr gut verlaufen. Die Entwicklung auf einem Vista-Laptop bedeutet, dass Sie gezwungen sind, CUDA SDK 2.0, das sich noch in seiner Beta-Phase befindet, mit dem 174.55-Treiber zu betreiben, der ebenfalls in der Betaversion ist. Trotz alledem haben wir keine unangenehmen Überraschungen zu berichten - nur ein wenig Angst, als die erste Ausführung unseres Programms, immer noch sehr fehlerhaft, versuchte, Speicher jenseits des zugewiesenen Speicherplatzes anzusprechen.

Der Monitor blinkte frenetisch und wurde dann schwarz ... bis Vista den Videotreiber-Wiederherstellungsdienst startete und alles in Ordnung war. Aber Sie müssen zugeben, dass es überraschend war, wenn Sie in solchen Fällen gewöhnliche Segmentierungsfehler mit Standardprogrammen sehen. Zum Schluss eine (sehr kleine) Kritik an Nvidia: In der gesamten Dokumentation, die für CUDA verfügbar ist, ist es eine Schande, nicht ein kleines Tutorial zu finden, das Schritt für Schritt erklärt, wie man die Entwicklungsumgebung in Visual Studio einrichtet. Das ist kein allzu großes Problem, da das SDK voll von Beispielprogrammen ist, die Sie erforschen können, um herauszufinden, wie Sie das Gerüst eines Minimalprojekts für eine CUDA-Anwendung erstellen, aber für Anfänger wäre ein Tutorial viel praktischer.

Top