Zum Beispiel würde dieses Code-Schnipsel normal kompilieren und ausführen?funktioniert normale Zeigerarithmetik auf Opencl-Kernel?
0
A
Antwort
0
Pointerarithmetik funktioniert, aber Sie müssen Ihre Zeiger mit dem entsprechenden Speicherplatz annotieren. So Ihr Beispiel-Code ist höchstwahrscheinlich falsch: wenn local_buffer
als
local int local_buffer[BUFFER_SIZE];
Dann erklärt der end
und x
Variablen Typen Muss haben auch die local
specfier:
local int* end = …;
for (local int* x = …
Der Standard global
ist, was dazu führt, dass Dinge schlecht ausfallen, wenn der Zeiger auf lokalen oder konstanten Speicher steht. Ich habe festgestellt, dass viele OpenCL-Implementierungen Sie nicht davor warnen, also müssen Sie sehr vorsichtig sein.
Ja, solange die Zeiger alle im Geräteraum sind. Kein Problem. – DarkZeros