0
예를 들어,이 스 니펫 코드가 정상적으로 컴파일되고 실행됩니까?정상적인 포인터 연산은 opencl 커널에서 작동합니까?
int* end = local_buffer + BUFFER_SIZE;
for(int* x = local_buffer; x < end; ++x)
{
...
}
예를 들어,이 스 니펫 코드가 정상적으로 컴파일되고 실행됩니까?정상적인 포인터 연산은 opencl 커널에서 작동합니까?
int* end = local_buffer + BUFFER_SIZE;
for(int* x = local_buffer; x < end; ++x)
{
...
}
포인터 연산이 작동하지만 포인터에 적절한 메모리 공간을 주석으로 추가해야합니다. 그래서 예제 코드는 대부분 잘못입니다 : local_buffer
그런 다음
local int local_buffer[BUFFER_SIZE];
end
및 x
변수 '유형 필수로 선언 된 경우 또한 local
specfier이 : 기본값은 global
입니다
local int* end = …;
for (local int* x = …
을, 포인터가 로컬 또는 상수 메모리에 있으면 상황이 잘못 될 수 있습니다. 나는 많은 OpenCL 구현이 이것에 대해 경고하지 않는다는 것을 알았 기 때문에 조심해야한다.
예, 포인터가 모두 장치 공간에있는 한. 문제 없습니다. – DarkZeros