clCreateProgramWithSource

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.

Signatur

cl_program clCreateProgramWithSource ( cl_context context,
                                       cl_uint count,
                                       const char **strings,
                                       const size_t *lengths,
                                       cl_int *errcode_ret)

Parameter

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.

Rückgabewert

Das Programm-Objekt mit dem Quellcode geladen.

Hinweise

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.

Beispiel

// 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);

Siehe auch