CUDA vs Direct X 10 für die parallele Mathematik. Irgendwelche Sachen, die du darüber hast?CUDA vs Direct X 10 für die parallele Mathematik. Irgendwelche Sachen, die du darüber hast?
Antwort
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.
Nun, CUDA tragbar ist ... Das ist ein großer Gewinn, wenn Sie mich fragen ...
CUDA ist portabel von Windows zu Linux - oder so verstehe ich - aber nicht von NVidia GPUs zu ATI. –
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.
Sind Sie sich über die doppelte Genauigkeit sicher? –
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.
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.
- 1. hast du python setup.py ausgeführt?
- 2. Wie man die Bearbeitungsschaltfläche in der uitableviewcell anzeigt, nur für die Beiträge, die du gepostet hast
- 3. Wie bekomme ich IDs, die du nicht hast?
- 4. Gewährleistet die "Concurrency" -Grenze von 10 10 parallele Slice-Läufe?
- 5. Parallele Implementierung für mehrere SVDs mit CUDA
- 6. Irgendwelche Vorschläge für verteilte parallele Baumsuchalgorithmen?
- 7. Verwendet JavaScript: history.back(); Hast du unbekannte Probleme?
- 8. Quaternion Mathematik für die Rotation?
- 9. Was git gotchas hast du gefangen?
- 10. Gibt es irgendwelche Möglichkeiten, die Grafikkarte zu benutzen (abgesehen von CUDA und OpenCL)?
- 11. Powershell, wie viele Ersatzteile hast du gemacht?
- 12. int x = 10; x + = x--; in .Net - Warum?
- 13. Machst du jemals einen Codewechsel und teste nur, anstatt zu versuchen, die Änderung, die du vorgenommen hast, vollständig zu verstehen?
- 14. Was hast du in deiner log4net Config? Hacks, Optimierungen, Beobachtungen?
- 15. Direct X 11 gezackte Kanten
- 16. Testing für die Unendlichkeit in CUDA
- 17. Grand Central vs parallele Erweiterungen
- 18. float1 vs float in CUDA
- 19. Xvfb mehrere Displays für die parallele Verarbeitung?
- 20. Konnte den Socket-Transport "ssl" nicht finden - hast du vergessen, es zu aktivieren, als du PHP konfiguriert hast?
- 21. ein Rechtecks in Direct X
- 22. Parallele laufende Summe einer Matrix in CUDA
- 23. Cuda parallele Code-Generierung in Visual Studio
- 24. Wie hast du jemals mit einem Nabaztag interagiert?
- 25. Die Logik und Mathematik der Objektorientierung
- 26. Symbolische Mathematik für. NET
- 27. Was ist das interessanteste Designmuster, das du je gesehen hast?
- 28. Die Motivation für mehrdimensionale CUDA Block Grid
- 29. Kannst du die Stimme für Twilio ändern?
- 30. Nvidia Tesla vs 480 für CUDA Programmierung
Sie sollten auch in OpenCL schauen, die plattformübergreifend sein sollte (Windows/Linux/etc) und Cross-Vendor (Nvidia/Ati) – hannson