Man muss aber auch fairerweise sagen das Speicher Management ist bei cuda openCL usw aber auch deutlich komplexer... Hab mal bißchen damit rumgespielt und die Art und Weise wie man dort programmiert ist wirklich eine ganz andere. Man arbeitet hier mit Zeigern, es gibt keinen garbagecollector, viele Elemente höher Programmiersprachen kann das framwork garnicht abbilden, usw.
Der Laufzeit Kernel für die Steuerung gpu ist super primitiv im Vergleich zu einer CPU basierten laufzeitumgebung. Da muss man wirklich alles selbst implementieren und man hat während der Laufzeit nur bedingt Einfluss auf die Teil Programme, da ja alles hoch parallel ist. Die CPU stellt quasi Arbeitspakete bereit und lädt diese in dne vram, in der regel matrizen und diese werden anhand bei initialisierung der Schnittstelle definierter Funktionen abgearbeitet und zurück gegeben viel mehr kann die gpu garnicht.