본문 바로가기
반응형

Program Language56

amd opencl __constant AMD에서 __kernel argument 를 __constant 로 못받는듯하다; HOST:: //create buffer read onlycl_mem cltmp = clCreateBuffer(context, CL_MEM_READ_ONLY, 2048, 0, &err);clEnqueueWriteBuffer(... cltmp...);cl_mem clarg = cltmp; //copy buffer clSetKernelArg(... clarg...);clEnqueueTask(...); DEVICE::__kernel void k(... __const mem...){} 이렇게 하면 Intel 에선 잘 작동하지만. amd에선 argument가 cl_mem주소가 아닌 0으로 넘어온다.. 왜그런진 모르겠지만. 2012. 6. 20.
printf debugging printf로 디버깅 할때 끝에 \n newline을 넣어도 print가 제대로 안 될때가 있다. 이땐 printf후에 fflush(stdout); 을 해주면 출력하고 버퍼를 비우게된다. (당연히 속도는 늦어진다.) 2012. 6. 19.
standard functions in OpenCL memset in OpenCL 커널에서도 memset이된다! memset(dst_ptr, value, size); printf in OpenCL Intel 에선 그냥 쓰면된다. AMD에선 #pragma OPENCL EXTENSION cl_amd_printf : enable Calling clFinish on a command queue flushes all pending output by printf in previously enqueued and completed commands to the implementation-defined output stream.근데 잘안되네; 2012. 6. 4.
sizeof main() { int arr[16]; int* nptr; int* ptr; ptr = malloc(sizeof(int)*16); printf("SIZE arr=%d , nptr=%d, ptr=%d\n", sizeof(arr), sizeof(nptr), sizeof(ptr)); } 결과 : SIZE arr=64 , nptr=4, ptr=4 main() { char arr[16]; char* nptr; char* ptr; ptr = malloc(sizeof(char)*16); printf("SIZE arr=%d , nptr=%d, ptr=%d\n", sizeof(arr), sizeof(nptr), sizeof(ptr)); } 결과 : SIZE arr=16 , nptr=4, ptr=4 배열 크기는 하나크기*.. 2012. 6. 4.