Frage

Ich möchte von Menschen mit Erfahrung in der Codierung für beide hören. Ich selbst nur Erfahrung mit NVIDIA haben.

NVIDIA CUDA scheint viel populärer als die Konkurrenz zu sein. (Zählung nur Frage-Tags auf diesem Forum, 'CUDA' übertrifft 'OpenCL' 3: 1, und 'nvidia' übertrifft 'ati' 15: 1, und es gibt keinen Tag für 'ati-Stream' überhaupt).

Auf der anderen Seite, nach Wikipedia, ATI / AMD-Karten sollen viel mehr Potenzial haben, vor allem je Dollar. Die schnellste NVIDIA-Karte auf dem Markt von heute, GeForce 580 ($ 500) wird bei 1,6 einfacher Genauigkeit TFlops bewertet. AMD Radeon 6970 kann für $ 370 werden muß, und es wird mit 2,7 TFlops bewertet. Die 580 512-Ausführungseinheiten bei 772 MHz. Die 6970 hat 1536 die Ausführungseinheiten bei 880 MHz.

Wie realistisch ist, dass das Papier Vorteil von AMD über NVIDIA und ist es wahrscheinlich in den meisten GPGPU Aufgaben realisiert werden? Was geschieht mit ganzzahligen Aufgaben?

War es hilfreich?

Lösung

Bildlich gesprochen ati hat einen guten Motor im Vergleich zu nvidia. Aber nvidia hat ein besseres Auto: D

Dies ist vor allem, weil nvidia gute Menge die Ressourcen investiert hat (in Geld und Menschen) wichtige Bibliotheken für wissenschaftliches Rechnen (BLAS, FFT) und dann einen guten Job wieder es bei der Förderung erforderlich zu entwickeln. Dies mag der Grund sein CUDA die Tags hier im Vergleich zu ati dominiert (oder OpenCL)

Was den Vorteil in GPGPU Aufgaben im Allgemeinen realisiert werden, wäre es nach oben in Abhängigkeit von anderen Fragen beenden (je nach Anwendung), wie Speicherübertragungsbandbreite, ein guter Compiler und wahrscheinlich auch die Fahrer. nvidia mit einem reiferen Compiler, ein stabiler Treiber unter Linux (Linux, weil seine Verwendung ist weit verbreitet in Scientific Computing), kippt das Gleichgewicht zugunsten von CUDA (zumindest vorerst).


Bearbeiten 12. Januar 2013

Es ist zwei Jahre her, seit ich diesen Beitrag gemacht und es scheint immer noch Ansichten manchmal zu gewinnen. Also habe ich beschlossen, ein paar Dinge

zu klären
  • AMD hat ihr Spiel verstärkt. Sie haben nun beide BLAS und FFT-Bibliotheken. Zahlreiche Bibliotheken von Drittanbietern auch um OpenCL bis schneidest.
  • Intel hat Xeon Phi in die Wildnis eingeführt sowohl OpenMP und OpenCL unterstützen. Es hat auch die Fähigkeit zur Nutzung der vorhandenen x86-Code. wie in den Kommentaren erwähnt, beschränkt x86 ohne SSE jetzt
  • NVIDIA CUDA und haben immer noch die Kante im Bereich von Bibliotheken zur Verfügung. Sie können jedoch nicht auf OpenCL so viel konzentrieren, wie zuvor.

Kurz OpenCL hat die Lücke in den letzten zwei Jahren geschlossen. Es gibt neue Spieler auf dem Feld. Aber CUDA ist immer noch ein bisschen vor der Packung.

Andere Tipps

Ich habe keine starken Gefühle über CUDA vs. OpenCL; vermutlich OpenCL ist die langfristige Zukunft, nur vermöge ein offener Standard ist.

Aber aktuellen Tages NVIDIA vs ATI-Karten für GPGPU (nicht die Grafikleistung, aber GPGPU), dass ich habe eine starke Meinung zu. Und zu führen in dem, werde ich darauf hinweisen, dass auf der aktuellen Top-500-Liste von großen Clustern AMD NVIDIA führt 4 Systeme auf 1 und auf gpgpu.org , um Online-Ergebnisse (Papiere, Links Suche Ressourcen, usw.) für NVIDIA outnumber Ergebnisse für AMD 6: 1.

Ein großer Teil dieser Differenz ist die Menge der Online-Informationen zur Verfügung. Schauen Sie sich die NVIDIA CUDA Zone im Vergleich zu AMDs GPGPU developer Central . Die Menge an Material dort für Entwickler Anfahren nicht einmal in der Nähe nicht gekommen, um zu vergleichen. Auf NVIDIAs Website finden Sie Tonnen Papiere finden - und trug Code - von Menschen wahrscheinlich auf Probleme wie das Ihre Arbeit. Sie werden Tonnen von Online-Kursen, von NVIDIA zu finden und anderswo, und sehr nützliche Dokumente wie die Best-Practice-Leitfaden Entwickler, etc. Die Verfügbarkeit von freien Entwick-Tools - Profiler, die CUDA-GDB, etc. - überwiegend NVIDIAs Weise kippt.

(Herausgeber: die Informationen in diesem Absatz ist nicht mehr genau.) Und einige der Unterschied ist auch Hardware. AMDs Karten haben bessere Spezifikationen in Bezug auf die Spitze Flops, aber in der Lage sein einen signifikanten Anteil davon zu bekommen, müssen Sie nicht nur Ihr Problem brechen auf viele völlig unabhängig Stream-Prozessoren, die jeweils Workitem muss auch vektorisiert werden. Da GPGPUing diejenigen Codes hart genug ist, dass zusätzliche Komplexität der Architektur ist genug zu machen, oder einige Projekte zu brechen.

Und das Ergebnis all dessen ist, dass die NVIDIA User-Community wächst weiter. Von den drei oder vier Gruppen Ich weiß denken GPU-Cluster zu bauen, keiner von ihnen ernsthaft Karten AMD erwägen. Und das bedeutet noch mehr Gruppen Papiere schreiben, Code beitragen, etc. auf der NVIDIA Seite.

Ich bin kein NVIDIA shill; Ich wünschte, es nicht so wäre, und dass es sich um zwei (oder mehr!) Gleichermaßen zwingenden GPGPU-Plattformen. Wettbewerb ist gut. Vielleicht ist das Spiel sehr bald Schritt AMD auf - und die bevorstehenden Fusionsprodukte sehen sehr überzeugend. Aber jemand Rat zu geben, um die Karten zu kaufen heute, und wo ihre Zeit verbringt Mühe setzt jetzt in, ich kann nicht mit gutem Gewissen sagen, dass beide Entwicklungsumgebungen sind gleich gut.

Edited hinzufügen : Ich denke, die oben ein wenig elliptisch ist die ursprüngliche Frage in Bezug auf die zu antworten, so lassen Sie mich machen es etwas deutlicher. Die Leistung, die Sie von einem Stück Hardware bekommen kann, ist, in einer idealen Welt mit unendlich viel Zeit zur Verfügung, nur abhängig von der zugrunde liegenden Hardware und die Fähigkeiten der Programmiersprache; aber in Wirklichkeit die Menge an Leistung, die Sie in einer festen Menge von Zeit zu bekommen investiert ist auch stark abhängig von Entwick-Tool, bestehende Community Codebasen (zB öffentlich zugängliche Bibliotheken, etc). Diese Überlegungen zeigen alle stark an NVIDIA.

(Herausgeber:. Die Angaben in diesem Absatz ist nicht mehr genau) In Bezug auf der Hardware, stellt die Voraussetzung für die Vektorisierung in SIMD-Einheiten in den AMD-Karten auch Papier Leistung zu erzielen noch härter als mit NVIDIA-Hardware

.

Der wesentliche Unterschied zwischen AMD und NVIDIA-Architekturen ist, dass AMD für Probleme optimiert wird, in dem das Verhalten des Algorithmus kann zur Compile-Zeit bestimmt werden, während NVIDIA für Probleme optimiert wird, in dem das Verhalten des Algorithmus kann nur zum Laufe bestimmt werden Zeit.

AMD hat eine relativ einfache Architektur, die sie mehr Transistoren auf ALUs verbringen kann. Solange das Problem vollständig zu Kompilierung-Zeit definiert werden und erfolgreich auf die Architektur in einem etwas statisch oder linear abgebildet wird, gibt es eine gute Chance, dass AMD Lage sein wird, den Algorithmus schneller als NVIDIA auszuführen.

Auf der anderen Seite, NVIDIAs Compiler tut weniger Analyse bei der Kompilierung. Stattdessen NVIDIA hat eine erweiterte Architektur, wo sie mehr Transistoren auf Logik ausgegeben haben, die dynamische Verhalten des Algorithmus zu handhaben ist in der Lage, die nur zur Laufzeit ergibt.

Ich glaube, die Tatsache, dass die meisten Supercomputer, dass die Verwendung GPUs mit NVIDIA gehen sind, dass die Art des Problems, dass die Wissenschaftler in laufenden Berechnungen auf, besser im Allgemeinen Karte interessiert sind Nvidias Architektur als AMD.

Ich habe einige iterative Codierung in OpenCL getan. Und die Ergebnisse davon in NVIDIA und ATI läuft, sind so ziemlich das gleiche. In der Nähe der gleichen Geschwindigkeit in dem gleichen Wert ($) Karten.

In beiden Fällen Geschwindigkeiten waren ~ 10x-30x mit einer CPU verglichen wird.

Ich habe testen CUDA nicht, aber ich bezweifle, dass es meine zufälligen Speicherprobleme holen magisch lösen könnte. Heutzutage sind CUDA und OpenCL mehr oder weniger die gleichen, und ich mehr Zukunft auf OpenCL sehen als auf CUDA. Der Hauptgrund dafür ist, dass Intel-Treiber mit OpenCL für ihre Prozessoren zu starten. Dies wird ein großer Fortschritt in der Zukunft sein (Lauf 16, 32 oder 64 Threads von OpenCL in CPU ist wirklich schnell und einfach in dem Hafen GPU).

einige Zeit mit OpenCL für GCN-Karten nach einigen Jahren von CUDA für Fermi und Kepler verbracht hat, ziehe ich es noch CUDA als Programmiersprache und würde AMD-Hardware mit CUDA wählen, wenn ich eine Option hatte.

Hauptunterschiede von NVIDIA und AMD (OpenCL):

Für AMD:

  • Auch bei Maxwell, NVidia hat noch mehr Befehl Latenzen und komplexe Algorithmen sind wahrscheinlich 10 bis schneller auf AMD (gleiche theoretische Tflops vorausgesetzt) ??nach einfachen Optimierungen für beide. Der Spalt wurde auf 60% für die Kepler VS GCN auf. Es ist schwieriger, komplexer Kernel für NVidia in diesem Sinne zu optimieren.

  • Billige Karten.

  • OpenCL ist offener Standard mit anderen Anbietern zur Verfügung.

Für Nvidia:

  • Hat die Tesla Linie von Hardware, die für eine zuverlässige hohe Serverlasten geeignet ist.

  • New Maxwell ist viel energieeffizienter.

  • Compiler und Tools sind viel weiter fortgeschritten. AMD kann immer noch nicht maxregcout Parameter erhalten zu implementieren, so dass Sie leicht Belegung auf verschiedenen Hardware und deren Compiler hat mit jeder Version steuern kann eine Menge von zufälligen Ideen, was ist ein optimaler Code, dass der Wandel, so dass Sie alle alten Code zu überdenken müssen ein halbes Jahr, weil es plötzlich 40% langsamer geworden ist.

An diesem Punkt, wenn GPGPU ist Ihr Ziel, ist CUDA die einzige Wahl, da OpenCL mit AMD für Server-Farm nicht bereit ist, und es ist wesentlich härter effizienten Code für AMD zu schreiben aufgrund der Tatsache, dass der Compiler immer zu sein scheint " in beta“.

Ich bin neu in GPGPU, aber ich habe einige Erfahrung in wissenschaftlichem Rechnen (PhD in Physik). Ich setze ein Forschungsteam zusammen und ich möchte zu verwenden GPGPU für meine Berechnungen gehen. Ich hatte zwischen den verfügbaren Plattformen zu wählen. Ich auf Nvidia entschieden, für ein paar Gründe:., Während ATI schneller auf dem Papier sein könnte, Nvidia hat eine ausgereifte Plattform und mehr Dokumentation so wird es möglich sein, näher an die Spitzenleistung auf dieser Plattform zu bekommen

Nvidia auch eine akademische Forschung Förderprogramm hat, eine für die Unterstützung beantragen können, Vor kurzem erhielt ich eine TESLA 2075-Karte, die ich sehr glücklich bin über. Ich weiß nicht, ob ATI oder Intel unterstützt diese Art und Weise zu erforschen.

Was ich über OpenCL gehört, dass es versucht, alles auf einmal zu sein, ist es wahr, dass Ihr OpenCL-Code mehr tragbar sein wird, aber es ist auch wahrscheinlich nicht die volle Leistungsfähigkeit der beiden Plattformen nutzen. Ich würde lieber ein bisschen mehr und Schreib Programme erfahren, die die Ressourcen besser zu nutzen. Mit dem TESLA K10 das kam gerade in dieses Jahr aus Nvidia in dem 4,5 TeraFlops ist reichen, damit es nicht klar ist, dass Nvidia hinter ist ... aber Intel MHK beweisen könnte einen echten Konkurrenten sein, vor allem, wenn sie bei der Bewegung der GPGPU-Einheit erfolgreich das Motherboard. Aber jetzt, entschied ich mich Nvidia.

Meine Erfahrung OpenCL bei der Bewertung der Floating-Point-Performance neigt NVIDIA-Karten zu begünstigen. Ich habe mit einem paar Floating-Point-Benchmarks auf NVIDIA-Karten gearbeitet reichen von der 8600M GT auf die GTX 460. NVIDIA-Karten konsequent etwa die Hälfte der theoretischen Einzel precisino Spitze zu diesem Benchmarks erreichen.
Die ATI-Karten ich gearbeitet habe selten zu erreichen besser als ein Drittel der mit einfacher Genauigkeit Spitze. Beachten Sie, dass meine Erfahrung mit ATI ist schief; Ich habe nur in der Lage gewesen, mit einer 5000-Serie Karte zu arbeiten. Meine Erfahrung ist meist mit HD-4000-Serie-Karten, die nie gut unterstützt wurden. Unterstützung für die HD 5000 Serie Karten ist viel besser.

Ich möchte die Debatte hinzuzufügen. Für uns im Geschäft der Software können wir roh mit einfacher Genauigkeit Leistung, um die Produktivität beeinträchtigen aber auch, dass ich keine Kompromisse eingehen, da, wie bereits erwähnt, können Sie nicht so viel Leistung auf auf ATI-Hardware unter Verwendung von OpenCL erreichen, wie Sie erreichen können wenn Sie in CUDA auf NVIDIAs Hardware schreiben.

Und ja, mit PGI Ankündigung von x86-Compiler für CUDA, gibt es keinen guten Grund, um mehr Zeit und Ressourcen aufwenden in OpenCL Schreiben:)

P. S: Mein Argument voreingenommen sein könnte, da wir fast alle unsere GPGPU Arbeit auf CUDA tun. Wir haben eine Bildverarbeitung / Computer Vision Bibliothek CUVI (CUDA für Vision und Imaging), die einige Kern IP / CV-Funktionalität auf CUDA beschleunigt.

Cuda ist sicherlich populär als OpenCL als heute, wie es veröffentlicht wurde 3 oder 4 Jahre vor OpenCL. Seit OpenCL freigegeben wurde, hat Nvidia nicht viel für die Sprache beigetragen, da sie viel auf CUDA konzentrieren. Sie haben nicht einmal OpenCL 1.2-Version für jeden Fahrer freigegeben wird.

Was heterogenes Computing sowie Handgeräte wie besorgt OpenCL wird sicherlich gewinnen mehr Popularität in naher Zukunft. Ab sofort größten Beitrag zum OpenCL AMD, es ist sichtbar auf ihrer Website.

in meiner Erfahrung:

  • Wenn Sie beste absolute Performance wollen, dann müssen Sie sehen, die auf der neuesten Hardware-Iteration ist, und verwenden Sie ihre Stapel (einschließlich der neuesten / Beta-Versionen).

  • Wenn Sie die beste Leistung für das Geld wollen Sie bei Gamer Karten Ziel wird eher als „Profi“ Karten und die Flexibilität der verschiedenen Plattformen Targeting favorisiert OpenCL.

  • Wenn Sie beginnen, insbesondere cuda neigt dazu, mehr poliert zu werden und mehr Tools und Bibliotheken haben.

schließlich, meine persönliche Sicht, nach „Unterstützung“ von nvidia erschreckend (wir haben einen toten tesla und es wurde seit Monaten nicht verändert, während ein Client wartet): die Flexibilität zu springen Schiff mit OpenCL ist das Risiko wert etwas geringere Leistung, wenn nvidia voraus sind in dem Release-Zyklus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top