Für Software-Entwickler ist sie frei zugänglich, aber wenn Hardware-Hersteller kompatible Software anbieten wollen, müssen sie wohl aufgrund von Patenten, Lizenzen etc. Abgaben an Nvidia zahlen. Denn die PhysX-API ist (meines Wissens) nicht frei.
Einige Leute schreiben hier etwas von PhysX.
Ist Cuda = PhysX?
Sind das nicht verschiedene Techniken, bei denen die Grafikkarte Berechnungen von der CPU übernimmt?
Der PhysX-GPU-Client ist eine Anwendung, die auf Cuda läuft. (daneben gibt es noch PhysX-Clients für x86-CPUs, die PowerPC-CPUs von Xbox360 und PS3 und natürlich, nicht mehr gepflegt, für die alte Ageia PPU. Und dann kann PhysX auch noch die PhysX-Engine im Spiel selbst oder eben den Befehlssatz zwischen beiden meinen)
Dementsprechend muss die Hardware auch nicht kompatibel gemacht werden, man muss nur den CUDA-Treiberaufsatz für die jeweilige Architektur anpassen. Das ist mit der genannten Veröffentlichung möglich (und zwar für jeden für jede Architektur, nicht nur für Hardwarehersteller für ihre eigene) und das ist offensichtlich auch Sinn dieser Veröffentlichung.
Das glaube ich eher weniger.
Allein schon die Aussage, dass die neue Architektur nicht gut mit CUDA läuft ist sehr unwahrscheinlich. Dieser Code muss nun gut in den AMD Treiber eingearbeitet werden (wodurch ein CUDA-Support für AMD Karten noch eine weile dauern wird). Woher will nun also nvidia Wissen, wie CUDA auf den neuen AMD Karten läuft? Nehmen wir mal an, nvidia hat Samples, meinst du Sie haben einen Treiber, der optimal auf die neue Karte abgestimmt ist?
CUDA benutzt außerdem keine speziellen Befehle von der GPU die nicht auch schon ein paar Jahre jede AMD Karte kann, von daher sollte das alles kein Problem werden.
Das hat nichts mit speziellen Befehlen zu tun, die sind sowieso Architekturspezifisch und es kann sich jeder selbst überlegen, wie er die CUDA-Befehle am besten in Maschienencode für seine Architetkur umsetzt. Aber es gibt grundlegende Berechnungselemente, die eine Architektur entweder direkt kann, oder aufwendig in mehreren Durchgängen nachstellen muss. Das fängt an bei Cache- und Puffergrößen (wenn CUDA mehrheitlich mit Paketgrößen arbeitet, die bei AMD erst in der nächst höheren Speicherhierarchie Platz finden, haben sie keine Chance), geht über einzelne Rechenverfahren (schwer, da was detailiertes über GPUs rauszufinden, aktuelles Beispiel aus dem CPU-Bereich wäre FMA4, dass nicht nur zwei Befehle zusammenfasst, sondern auch noch mehrere Speicherungen/Kopien unnötig macht) und endet bei der Lastverteilung auf verschiedene Einheiten. So wird GCN offensichtlich ein Hybrid aus einer konventionellen Shadern und einer universellen Verwaltungseinheit sein. Wenn CUDA-Befehle so komplex sind, dass sie nur auf der universellen Einheit in der vorgesehenen Zahl von Durchgängen ausgeführt werden können, dann würden große Teile eines GCN-Chips brach liegen. Auch Latenzen können ein Thema sein. Bei Grafikberechnungen lassen die sich gut kaschieren (klare Renderingstruktur -> Preloading leicht möglich, Multithreading gut abstimmbar), bei gpGPU eher nicht. Wenn Nvidia hier einen Vorsprung hat, könnten sie den so in Szene setzen.
Generell darf man auch eins nicht vergessen: AMD braucht so oder so Zeit für eine vernünftige Umsetzung. Wenn dann noch Probleme dazu kommen, steht AMD vor der Wahl. Offiziell keine Unterstützung zu versprechen wäre das vorläufige Ende von AMDs gpGPU-Computing, z.B. IBM, Oracle und ARM sich zu CUDA bekennen. Eine Unterstützung in ferner Zukunft anzukündigen würde ebenfalls bedeuten, dass auf absehbare Zeit niemand AMD-Karten für professionelle Zwecke kauft und es könnte ein ernsthaftes Problem für Fusion werden, wenn diverse Multimedia- und Endanwenderprogramme auf CUDA aufspringen und von Intel GPU-Unterstützung erhalten. Baldige Unterstützung anzukündigen und dann eine schlecht optimierte oder gar fehlerhafte Implementation zu liefern, würde den Ruf auf Jahre hinaus schädigen.
Fazit: Nvidia in Sachen CUDA-Leistung die Stirn zu bieten ist allgemein schwer, die haben nunmal Heimvorteil. Es kann auch durchaus technische Gründe geben, warum es noch schwerer oder fast unmöglich wird. Sollte dies in Bezug auf GCN der Fall sein, wäre dies für Nvidia ein optimaler Zeitpunkt für eine Öffnung, die die ganze Plattform umgekehrt deutlich attraktiver für Softwareentwickler macht.