GPU에 cl_mem 버퍼를 할당하고 있습니다. 특정 크기를 초과 할 때까지 제대로 작동합니다. 이 경우 할당 자체는 성공하지만 실행 또는 복사는 성공하지 못합니다. 나는 더 빠른 작업을 위해 장치의 메모리를 사용하여 다음과 같이 할당하고 싶습니다.왜 CL_MEM_OBJECT_ALLOCATION_FAILURE가 표시됩니까?
buf = clCreateBuffer (cxGPUContext, CL_MEM_WRITE_ONLY, buf_size, NULL, &ciErrNum);
이제 크기 제한이 이해가되지 않습니다. 약 16MB를 복사 중이지만 약 128MB를 사용할 수 있어야합니다 (CL_DEVICE_MAX_MEM_ALLOC_SIZE
참조).
왜이 숫자가 그렇게 많이 다른가요?
여기 oclDeviceQuery에서 일부 발췌 한 것입니다 :
CL_PLATFORM_NAME: NVIDIA
CL_PLATFORM_VERSION: OpenCL 1.0
OpenCL SDK Version: 4788711
CL_DEVICE_NAME: GeForce 8600 GTS
CL_DEVICE_TYPE: CL_DEVICE_TYPE_GPU
CL_DEVICE_ADDRESS_BITS: 32
CL_DEVICE_MAX_MEM_ALLOC_SIZE: 128 MByte
CL_DEVICE_GLOBAL_MEM_SIZE: 255 MByte
CL_DEVICE_LOCAL_MEM_TYPE: local
CL_DEVICE_LOCAL_MEM_SIZE: 16 KByte
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 64 KByte
이 해결되지 않은 및 까다로운 주제입니다. 불행히도 내가 사용해온 하드웨어가 변경되어서 문제를 재현하는 방법을 모르겠습니다. – count0
Im은 GeForce 8800 GTS에서 같은 문제가 발생했습니다. 모든 실행마다 오류가 발생하기 때문에 어떤 크기가 필요합니까? 그러나 7mb ~ 20mb의 범위에서 전형적입니다. 최대 메모리 할당 크기는 128MB입니다. –