Laufzeit in ausführbaren Code übersetzt. Somit kann ein in OpenCL C geschriebenes Programm auf unterschiedlichen Zielplattformen ausgeführt werden und es muss zur Entwicklungszeit nicht feststehen, was die Zielplattform ist. So übersetzt der NVidia Compiler das OpenCL C Programm zunächst in CUDA-Code um es dann mittels CUDA auszuführen. OpenCL wurde für die Entwicklung von massiv parallelen Anwendungen konzipiert. So kann z.B. ein Computerbild der Auflösung 1024 x 1024 komplett parallel verarbeitet werden:

    {Klassisches C Programm}
     void trad_mul(int n,
                   const float *a,
                   const float *b,
                   float *c)
     {
        int i;
        for(i = 0; i < n; i++)
        {
            c[i] = a[i] * b[i];
        }// klassische schleife
     }

    {OpenCL C Programm}
     kernel void trad_mul(global const float *a,
                          global const float *b,
                          global float *c)
     {
        int id = get_global_id(0);
        c[id] = a[id] * b[id];
     } // fuehre n work items parallel aus

Wie in den Codebeispielen \[label:klassischC\] und \[label:openCL\] (entnommen aus [@openclintro]) zu erkennen, kann man klassische Schleifen relativ einfach in einen OpenCL Kernel umschreiben um diesen dann parallel auszuführen. Im Codebeispiel \[label:klassischC\] werden zwei Computerbilder multipliziert und das Ergebnis in einem dritten Bild gespeichert. Dies geschieht mit Hilfe einer einfachen for-Schleife die alle Operationen sequenziell abarbeitet. Im Codebeispiel \[label:openCL\] wird das selbe 