Erzeugt ein Kernel Objekt aus einem Programm-Objekt.
cl_kernel clCreateKernel ( cl_program program, const char *kernel_name, cl_int *errcode_ret)
prorgam: Programm-Objekt mit erfolgreich gebauter Executable
kernel_name: Ein Funktionsname in dem Programm, welcher mit dem __kernel
-Qualifier deklariert wurde.
errcode_ret: Gibt den entsprechenden Fehlercode zurück. Wenn das Argument NULL ist, wird kein Fehlercode zurückgegeben. Mögliche Fehlercodes:
Wert | Beschreibung |
---|---|
CL_SUCCESS | Die Funktion wurde erfolgreich ausgeführt und liefert ein Kernel-Objekt zurück, was nicht 0 ist. |
CL_INVALID_PROGRAM | program ist kein gültiges Programm |
CL_INVALID_PROGRAM_EXECUTABLE | Es gibt kein erfolgreich gebautes Executable für das Programm |
CL_INVALID_KERNEL_NAME | kernel_name ist nicht gefunden worden in dem Programm |
CL_INVALID_KERNEL_DEFINITION | die Argumenttypen der Argumente der Kernel-Funktion für verschiedene Devices (für die die Executable gebaut wurde) sind nicht gleich. |
CL_INVALID_VALUE | kernel_name ist NULL |
CL_OUT_OF_RESOURCES | Es ist ein Fehler beim Reservieren von Speicher aufgetreten, der für die OpenCL-Implementation auf dem Gerät gebraucht wird. |
CL_OUT_OF_HOST_MEMORY | Es ist ein Fehler beim Reservieren von Speicher aufgetreten, der für die OpenCL-Implementation auf dem Hostprozressor gebraucht wird. |
Kernel-Objekt
Ein Kernel ist eine Funktion, die in einem Programm deklariert wurde. Eine Funktion wird durch den __kernel
-Qualifier zum Kernel. Ein Kernel-Objekt schließt die spezifizierte __kernel
-Funktion ein und die Werte der Argumente die beim Aufruf der Kernel-Funktion verwendet werden sollen ein.
// program=clCreateProgramWithSource(...) // clBuildProgram(program,...) int ret=0; cl_kernel kernel = clCreateKernel(program, "vector_add", &ret);