OpenCL

Ich habe mich im Master-Kurs "Parallele Programmierung" sowie in meiner Informatik-Masterarbeit und in der Vorbereitung darauf viele Monate ausgiebig mit dem OpenCL-Standard beschäftigt und damit OpenCL-Funktionen (-Kernel) programmiert und beschleunigt.
Es ging in der Arbeit darum, OpenCL global memory automatisch durch OpenCL local memory zu beschleunigen und dabei die Programmlaufzeit zu evaluieren.

Mittels OpenCL können herkömmliche Programme (nicht nur Grafik/3D) auf einer GPU um ein Vielfaches gegenüber einer CPU beschleunigt werden, da GPUs üblicherweise ein Mehrfaches mehr Prozessoren als CPUs haben.
Zum Beispiel Matrix-Multiplikation mit 256x256 Matrizen:
Vergleich OpenCL mit Intel-Grafikkarte, seriell mit CPU (Intel Core 2 Quad).
CPU: 8724.946 ms
GPU: 16.508 ms (reine Ausführungszeit: ohne OpenCL-Setup, Speicher kopieren etc.)

In Bezug auf OpenCL kenne ich mich besonders aus mit:

  • OpenCL-Speicherarten (global, local, host memory)
  • Schwierigkeiten der Installation und Inbetriebnahme (Linux und Windows)
  • welche Grafikchips/CPUs unterstützt werden
  • welche Leistungen einzelne OpenCL-Plattformen/-Implementierungen:
    • Intel Beignet
    • Intel compute-runtime (NEO)
    • Intel(R) CPU Runtime for OpenCL(TM) Applications
    • AMD: APP/GPUPRO
    • Nvidia
    bieten
  • Fehlerarten bei der Ausführung von OpenCL-Programmen/-Kerneln / Bedeutung der Fehlercodes
  • ...
© 2013-2022. Stefan Gebauer, M.Sc. Computer Science/Informatik (TU), B.Sc. Angewandte Informatik (FH)