Erstellt ein Programm-Objekt für den Kontext und lädt den Quellcode, der durch die Strings in strings angegeben wurde in das Programm-Objekt.
cl_program clCreateProgramWithSource ( cl_context context, cl_uint count, const char **strings, const size_t *lengths, cl_int *errcode_ret)
context: der gültige OpenCL-Kontext
count: gibt die Anzahl der Strings in strings an.
strings: Eine Anzhal zeiger zu optional Null-terminierten Zeichenketten, die den Sourcecode darstellen, der geladen werden soll.
lengths: Feld mit der Anzahl Zeichen für jeden String (Stringlänge). Galls ein Element in lenghts 0 sein sollte, muss der entsprechene Eintrag in strings Null-terminiert sein. Falls lengths NULL ist, müssen alle Argumente in string Null-terminiert sein. Jeder Wert, der größer ist als 0 zählt das Nullbyte nicht mit.
errcode_ret: Gibt einen entsprechenden Fehlercode zurück. Falls errcode_ret NULL ist, dann wird kein Fehlercode zurückgeliefert. Mögliche Fehlercodes:
Wert | Beschreibung |
---|---|
CL_SUCCESS | Die Funktion wurde erfolgreich ausgeführt und ein cl_program-Objekt wurde zurückgeliefert, was nicht 0 ist. |
CL_INVALID_CONTEXT | context ist kein gültiger Kontext |
CL_INVALID_VALUE | count ist 0 oder strings oder irgendein Eintrag in strings 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. |
Das Programm-Objekt mit dem Quellcode geladen.
Die Funktion erstellt ein Programm-Objekt für den gegebenen Kontext und lädt den Sourcecode, der durch strings gegeben wurde in das Programm-Objekt. Die Geräte, was mit dem Programm-Objekt in Verbindung steht, sind die, die in dem Kontext verwendet werden. Der Quellcode, der ist entweder OpenCL C Programmcode, Header oder eine andere Quelle (Implementationsabhängig) für CUSTOM-Devices, die Online-Compiler unterstützen.
// context=clCreateContext(...) char* source_str="__kernel void merge () { ... }\n"; size_t source_size=strlen(source_str); int ret=0; cl_program program = clCreateProgramWithSource(context, 1, (const char **)&source_str, (const size_t *)&source_size, &ret);