WikiDer > OpenCL
OpenCL | ||||
| Entwickler | Apfel | |||
| Letzte Version | 2.1 Überarbeitung 23 (11. November 2015) | |||
| Status | Aktiv | |||
| Betriebssystem | Multiplattform | |||
| Kategorie | API | |||
| Webseite | (und) Projektseite | |||
| ||||
OpenCL (ÖffnenCwird bearbeitet lSprache) ist ein Programmiersprache, Rahmen und Plattform entwickelt von Apfel zur Durchführung komplexer Parallelrechnungen auf dem Zentralprozessor und der GPU (auch bekannt als GPU). Die Sprache basiert auf einem Dialekt des C Programmiersprache und Sets Anwendungen in der Lage, verschiedene Prozessortypen einheitlich für alle Arten von Berechnungen zu verwenden.
Geschichte
OpenCL wurde von Apple zu der . hinzugefügt Chronos-Gruppe präsentiert als offener Standard, wie OpenGL und openAL, Standards für jeweils 3D-Computergrafik und 3D-Sound. Am 16. Juni 2008 wurde die Computing-Arbeitsgruppe gegründet bei der Khronos Group mit dem Ziel, Berechnungen auf heterogenen Daten (Daten aus verschiedenen Quellen) und parallele Berechnungen auf der CPU und der GPU zu standardisieren.[1] Version 1.0 des Standards wurde am 9. Dezember 2008 veröffentlicht.[2] Am selben Tag angekündigt NVIDIA um auch diese Version vollständig zu unterstützen.[3] Am 12. Dezember 2008 wurde OpenCL AMD und NVIDIA zum ersten Mal demonstriert auf SIGGRAPH Asien 2008.
OpenCL wird von allen Arten von Unternehmen unterstützt, wie Activision, Blizzard, AMD, Apple, Electronic Arts, Ericsson, IBM, Intel, Motorola, Nokia, NVIDIA, Samsung und Texas Instruments.
OpenCL wurde veröffentlicht in Mac OS X 10.6 Schneeleopard.[4]
Seit Ubuntu 10.10 bietet Ubuntu auch Unterstützung für OpenCL-Anwendungen.[5] (und inoffiziell seit 9.10[6])
OpenCL 2.0 wurde am 22. Juli 2013 veröffentlicht.[7]
Technik
OpenCL verwendet eine Teilmenge der ISO/IECC99-Standard von C mit Erweiterungen für Parallelität.[2] Das IEEE 754-Standard wird für Berechnungen mit verwendet Gleitkommazahlen.
Die Implementierungen von Apfel,[8]NVIDIA,[8]RapidMind[8] und Mesa Gallium3D[9] basieren auf LLVM mit Clan wenn Frontend.
Anwendungen
OpenCL kann in Bereichen eingesetzt werden, in denen die Rechenleistung der Grafikkarte einen Leistungsvorteil bietet. Beispiele sind: Simulationen von Flüssigkeiten, Bildbearbeitung, mathematische Operationen (z. Schnelle Fourier-Transformation), medizinische Bildverarbeitung und Computerspiele.
OpenCL C
OpenCL definiert auch OpenCL C. Dies ist eine Variante der ähnlichen Sprache C99, die zur Optimierung der GPU-Programmierung verwendet wird. Es implementiert Änderungen, die erforderlich sind, um eine C-Programmiersprache zu verwenden, um unter anderem GPUs (und zukünftige Prozessoren) anzupassen, um parallele Berechnungen zu unterstützen. OpenCL C bietet auch Unterstützung für Vektortypen. Dies verbessert die Effizienz des stromlinienförmigen Datenflusses. Entwickler verwenden OpenCL C, um leistungs- und datenintensive Routinen in ihrer Anwendung neu zu schreiben. Während des Neuschreibens wird die Routine in ihren grundlegendsten Zustand gebracht. Eine Reihe diskreter Operationen beschreibt die Berechnungen, die parallel über einen Datensatz erstellt werden können.
Kernel
Der resultierende Code entspricht dem einer normalen C-Funktion; dies wird OpenCL-Kernel genannt. Im Gegensatz zu herkömmlichem C-Code wird der OpenCL-Kernel in einem nicht kompilierten Zustand in der Anwendung implementiert. Sie werden on-the-fly (während der Ausführung der Anwendung) kompiliert und für die Hardware des Benutzers optimiert, bevor sie zur Berechnung an die GPU oder gleichzeitig an die CPU gesendet werden.
API
Eine weitere Variante von OpenCL ist die OpenCL-API. Die OpenCL-API stellt Funktionen bereit, die den Zugriff auf Anwendungen ermöglichen, um parallele Rechenaufgaben zu verwalten. Es summiert sich openCL-fähige Hardware in einem System und macht diese für die Nutzung von Datenstrukturen zwischen Anwendungen und OpenCl einsatzbereit. Es überprüft auch die Kompilierung und Übermittlung von Kerneln an die GPU. Es verfügt auch über eine Vielzahl von Funktionen, die Wartezeiten und auch die Synchronisierung verwalten.
Laufzeit
OpenCl Runtime führt Aufgaben aus, die von der Anwendung über die OpenCL-API angefordert werden. OpenCL Runtime sorgt auch für den effizienten Datentransfer zwischen dem Hauptspeicher und dem von der GPU verwendeten dedizierten VRAM. Es gibt wiederum Befehle vom Kernel an die GPU-Hardware, während dieser Befehle kümmert sich OpenCL Runtime um alles.
Siehe auch
Externe Links
- (und) Offizielle Website
- (und) Spezifikation von OpenCL 2.0
Quellen, Anmerkungen und/oder Verweise
|