2013-07-12 2 views
-1

2 차원 문제로 다루는 opencl 응용 프로그램의 중첩 for 루프를 코딩하려고합니다. 글로벌 작업 크기는 block_dimension의 배수가 아닌 그래서 나는 크기를 선언하고있다 : 나는 CL_INVALID_WORK_SIZE 오류를 얻고있다2 차원의 로컬 작업 크기

size_t global_work_size[2] = {length1,length2}; 
size_t local_work_size[2] = {NULL,NULL}; 
err = clEnqueueNDRangeKernel(commands, Kernel, 2, NULL, global_work_size, local_work_size, 0, NULL, NULL); 

. 현지 작업 크기를 어떻게 변경해야합니까?

답변

1

Juste은 커널 그렇게 전화 :

err = clEnqueueNDRangeKernel(commands, Kernel, 2, NULL, global_size, NULL, 0, NULL, NULL); 
+0

나는 그 전에 시도하고 나에게 위치를 읽는 동안 액세스 위반했다. – shunyo

+0

글쎄,이 오류는 로컬 크기에 NULL을 사용하고 있다는 사실에서 오지 않았을 것이라 확신합니다. NULL을 사용하는 효과는 [표준] (http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clEnqueueNDRangeKernel.html)에도 설명되어 있습니다. * local_work_size는 NULL 일 수도 있습니다 이 경우 OpenCL 구현은 전역 작업 항목을 적절한 작업 그룹 인스턴스로 분할하는 방법을 결정합니다. * – CaptainObvious

+0

버퍼에 액세스하는 데 문제가있었습니다. 고맙습니다. – shunyo