Ich habe keine starken Gefühle gegenüber CUDA vs. OpenCL; vermutlich ist OpenCL die langfristige Zukunft, nur weil es ein offener Standard ist.
Aber aktuelle NVIDIA vs ATI-Karten für GPGPU (nicht Grafikleistung, sondern GPGPU), über die ich eine starke Meinung habe. Um darauf hinzuweisen , möchte ich darauf hinweisen, dass NVIDIA in der aktuellen Top 500-Liste der großen Cluster AMD 4-Systeme auf 1 und auf gpgpu.org Suchergebnisse (Dokumente, Links zu Online-Ressourcen usw.) für NVIDIA führt Überzahl der Ergebnisse für AMD 6: 1.
Ein großer Teil dieses Unterschieds ist die Menge der verfügbaren Online-Informationen. Schauen Sie sich die NVIDIA CUDA Zone im Vergleich zu AMDs GPGPU Developer Central an . Die Menge an Dingen, die Entwickler dort starten, kommt dem Vergleich nicht einmal nahe. Auf der NVIDIA-Website finden Sie Tonnen von Papieren - und Code - von Leuten, die wahrscheinlich an Problemen wie Ihrem arbeiten. Sie finden unzählige Online-Kurse von NVIDIA und anderen Anbietern sowie sehr nützliche Dokumente wie den Best-Practice-Leitfaden der Entwickler usw. Die Verfügbarkeit kostenloser Entwicklungstools - der Profiler, die cuda-gdb usw. - ist für NVIDIAs überwältigend.
(Editor: Die Informationen in diesem Absatz sind nicht mehr korrekt.) Ein Teil des Unterschieds liegt auch in der Hardware. AMDs-Karten haben bessere Spezifikationen in Bezug auf Peak-Flops, aber um einen signifikanten Bruchteil davon zu erhalten, müssen Sie Ihr Problem nicht nur auf viele völlig unabhängige Stream-Prozessoren aufteilen, sondern jedes Arbeitselement muss auch vektorisiert werden. Angesichts der Tatsache, dass der GPGPU-Code schwierig genug ist, reicht diese zusätzliche Komplexität der Architektur aus, um einige Projekte zu erstellen oder zu unterbrechen.
Das Ergebnis all dessen ist, dass die NVIDIA-Benutzergemeinschaft weiter wächst. Von den drei oder vier Gruppen, von denen ich weiß, dass sie GPU-Cluster aufbauen möchten, erwägt keine ernsthaft AMD-Karten. Und das bedeutet, dass noch mehr Gruppen auf der NVIDIA-Seite Papiere schreiben, Code beitragen usw.
Ich bin kein NVIDIA-Shill. Ich wünschte, es wäre nicht so und es gäbe zwei (oder mehr!) Gleich überzeugende GPGPU-Plattformen. Der Wettbewerb ist gut. Vielleicht wird AMD sein Spiel sehr bald verbessern - und die kommenden Fusion-Produkte sehen sehr überzeugend aus. Aber wenn ich jemandem Ratschläge gebe, welche Karten er heute kaufen soll und wo er seine Zeit damit verbringen soll, sich jetzt anzustrengen, kann ich nicht guten Gewissens sagen, dass beide Entwicklungsumgebungen gleich gut sind.
Bearbeitet, um hinzuzufügen : Ich denke, das Obige ist ein wenig elliptisch in Bezug auf die Beantwortung der ursprünglichen Frage, also lassen Sie mich es etwas expliziter machen. Die Leistung, die Sie mit einer Hardware erzielen können, hängt in einer idealen Welt mit unendlich viel verfügbarer Zeit nur von der zugrunde liegenden Hardware und den Fähigkeiten der Programmiersprache ab. In Wirklichkeit hängt die Leistung, die Sie in einem festgelegten Zeitaufwand erzielen können, auch stark von den Entwicklungstools, den vorhandenen Community-Codebasen (z. B. öffentlich verfügbaren Bibliotheken usw.) ab. Diese Überlegungen weisen alle stark auf NVIDIA hin.
(Editor: Die Informationen in diesem Absatz sind nicht mehr korrekt.) In Bezug auf die Hardware macht das Erfordernis der Vektorisierung innerhalb der SIMD-Einheiten in den AMD-Karten das Erreichen der Papierleistung noch schwieriger als bei NVIDIA-Hardware.