OpenCL 2.0 und HSA
OpenCL ist seit jeher ein zentraler Bestandteil der Kombiprozessoren von AMD. Mit der im Vergleich deutlich höheren Performance der Grafikeinheit soll die Lücke zur Konkurrenz geschlossen werden, vor allem in Programmen abseits des Grafikbereichs.Es passt also nur zu gut rein, dass AMD mit den Kaveri APUs den ersten Chip auf den Markt bringt, der mit OpenCL 2.0 kompatibel ist. OpenCL 2.0 hat eine ganze Palette an neuen Features, die den Programmierern neue Möglichkeiten bieten, Probleme zu beschleunigen die, bisher nur ineffizient oder gar nicht auf der Grafikeinheit ausgeführt werden konnten.
Ein großes Problem bei der Arbeit mit OpenCL ist das kopieren der Daten von und in den Grafikspeicher. Muss man hier zu oft kopieren, lohnt sich die schnellere Berechnung kaum noch und die Ausführung insgesamt kann sogar langsamer werden. Insbesondere bei APUs fällt es hier ins Gewicht, dass CPU und GPU nicht gleichzeitig auf den selben Daten arbeiten können, da die Daten direkt nebeneinander im Arbeitsspeicher liegen. Viele Kopiervorgänge sind hier prinzipiell also schon unnötig.
OpenCL 2.0 bietet nun die Möglichkeit, dass Prozessor und Grafikeinheit gleichzeitig, inklusive Synchronisation, auf den selben Daten arbeiten können und somit weniger Kopiervorgänge anfallen.
Ein weiteres Feature von OpenCL 2.0 und HSA sind CPU Callbacks. Sie bieten die Möglichkeit während das Programm auf der Grafikeinheit ausgeführt wird, Funktionen auf der CPU aufzurufen. Sind beispielsweise nur wenige Elemente einer großen Datenmenge von Berechnungn auf der CPU abhängig, müssen mit OpenCL 1.x die komplette Berechnung auf der GPU unterbrochen werden, dann für besagte Elemente Werte auf der CPU berechnet werden und anschließend das endgültige Ergebnis auf der GPU berechnet werden. In OpenCL 2.0 können dagegen Threads, welche nicht betroffen sind ungestört zuende rechnen.
PC Mark 8
PCMark 8 - Home | ||||||||||||
| ||||||||||||
0 4000 2000 | Punkte | |||||||||||
PCMark 8 - Creative | ||||||||||||
| ||||||||||||
0 4000 2000 | Punkte | |||||||||||
PCMark 8 - Work | ||||||||||
| ||||||||||
0 5000 2500 | Punkte | |||||||||
Basemark CL 1.1
Basemark CL 1.1 - Physics | ||||||||||||
| ||||||||||||
0 70 35 | Punkte | |||||||||||
Basemark CL 1.1 - Fractal | ||||||||||||
| ||||||||||||
0 275 137.5 | Punkte | |||||||||||
Basemark CL 1.1 - Image | ||||||||||||
| ||||||||||||
0 75 37.5 | Punkte | |||||||||||
Basemark CL 1.1 - Video | ||||||||||||
| ||||||||||||
0 135 67.5 | Punkte | |||||||||||
Basemark CL 1.1 - Complete | ||||||||||||
| ||||||||||||
0 90 45 | Punkte | |||||||||||
AMD HSA JPEG Decoder
JPEG Decoder | ||||||
| ||||||
0 15 7.5 | Punkte | |||||
Mit WinZip, dem x264 Encoder und Hanbrake gibt es aber auch einige Beispiele in denen OpenCL nicht von Vorteil oder gar von Nachteil sind, da sie die CPU ausbremsen. Dies zeigt sich meist unabhängig von der Grafikeinheit und tritt teils auch mit einer AMD Radeon HD 7970 auf. Es bleibt also noch viel Optimierungspotenzial auch bei bereits von OpenCL unterstützen Programmen, damit sich ein spütbarer Vorteil daraus ergibt. Mit OpenCL 2.0 und auch AMDs HSA Implementierung dürfte hier nochmals gehörig Schwung reinkommen, vor allem, da mit den neuen Features auch neue Algorithmen und Probleme von der massiv parallelen Ausführung von Grafikchips profitieren können.