2009-03-09 1 views

Antwort

3

CUDA ist wahrscheinlich eine bessere Option, wenn Sie wissen, dass Ihre Zielarchitektur nVidia-Chips verwendet. Sie haben die vollständige Kontrolle über Ihre Datenübertragungen, Anweisungswege und die Reihenfolge der Operationen. Sie können auch mit viel weniger __synctreads Anrufe kommen, wenn Sie auf der unteren Ebene arbeiten.

DirectX 10 wird einfacher zu verbinden sein, sollte ich denken, aber wenn Sie wirklich Ihre Geschwindigkeitsoptimierung drücken wollen, müssen Sie die zusätzliche Schicht umgehen. DirectX 10 wird auch nicht wissen, wann Texturspeicher im Vergleich zu konstantem Speicher im Vergleich zu gemeinsam genutztem Speicher verwendet wird, und Sie werden es auch in Abhängigkeit von Ihrem speziellen Algorithmus tun.

Wenn Sie Zugang zu einem Tesla C1060 oder etwas in der Art haben, ist CUDA mit Abstand die bessere Wahl. Sie können die Dinge wirklich beschleunigen, wenn Sie die Besonderheiten Ihres GPGPU kennen - ich habe 188x Beschleunigungen in einem bestimmten Algorithmus auf einem Tesla im Vergleich zu meinem Desktop gesehen.

0

Nun, CUDA tragbar ist ... Das ist ein großer Gewinn, wenn Sie mich fragen ...

+0

CUDA ist portabel von Windows zu Linux - oder so verstehe ich - aber nicht von NVidia GPUs zu ATI. –

1

Ich finde CUDA umständlich. Es ist nicht C, sondern eine Teilmenge davon. Es unterstützt nicht nativ Fließkomma mit doppelter Genauigkeit und wird emuliert. Für eine einfache Genauigkeit ist es aber in Ordnung. Es hängt von der Art der Aufgabe ab, die Sie darauf werfen. Sie müssen mehr Rechenzeit parallel verbringen, als Sie die Daten weitergeben, damit es sich lohnt, sie zu verwenden. Aber dieses Problem betrifft nicht nur CUDA.

Ich würde auf Apples OpenCL warten, die den Industriestandard für paralleles Computing zu sein scheint.

+0

Sind Sie sich über die doppelte Genauigkeit sicher? –

0

CUDA hat nichts mit der Unterstützung von Gleitkommaoperationen mit doppelter Genauigkeit zu tun. Dies hängt von der verfügbaren Hardware ab. Die Serien 9, 100, 200 und Tesla unterstützen Gleitkommaoperationen mit doppelter Genauigkeit tesla.

0

Es sollte einfach sein, zwischen ihnen zu entscheiden.

Wenn Ihre App Windows-spezifisch tolerieren kann, können Sie dennoch DirectX Compute in Erwägung ziehen. Andernfalls verwenden Sie CUDA oder OpenCL.

Wenn Ihre App eine Herstellersperre für NVIDIA nicht tolerieren kann, können Sie CUDA nicht verwenden, Sie müssen OpenCL oder DirectX Compute verwenden.

Wenn Ihre App DirectX-Interop ausführt, beachten Sie, dass CUDA/OpenCL Kontextwechsel verursachen wird, der Grafik-API-Interoperabilität verursacht, und DirectX Compute wird dies nicht tun.

Wenn eines oder mehrere dieser Kriterien Ihre Anwendung nicht beeinflussen, verwenden Sie den Urenkel von massiv parallelen Toolchains: CUDA.

Verwandte Themen