您可以在GPU上使用opencl分配比设备内存大的缓冲区吗

您可以在GPU上使用opencl分配比设备内存大的缓冲区吗,opencl,Opencl,是否可以分配比设备内存大的缓冲区(假设是GPU) 我很肯定这一点: clCreateBuffer(context,CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR,sizeof(float) * DATA_SIZE, inputdata, NULL); 不起作用。但这不应该起作用吗 clCreateBuffer(context,CL_MEM_READ_ONLY | CL_MEM_USE_HOST_PTR,sizeof(float) * DATA_SIZE, inp

是否可以分配比设备内存大的缓冲区(假设是GPU)

我很肯定这一点:

clCreateBuffer(context,CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR,sizeof(float) * DATA_SIZE, inputdata, NULL);
不起作用。但这不应该起作用吗

clCreateBuffer(context,CL_MEM_READ_ONLY | CL_MEM_USE_HOST_PTR,sizeof(float) * DATA_SIZE, inputdata, NULL);

我似乎很难让它与我的NVIDIA QUADRO FX 3800配合使用,但我听说其他人成功地分配了比ATI卡上的设备内存大的缓冲区。

一般来说,您不能分配比CL_device_MAX_MEM_ALLOC_SIZE大的缓冲区,该缓冲区通常比CL_device_GLOBAL_MEM_SIZE小。我不知道如何在不将主机内存分为多个cl缓冲区的情况下绕过此限制。

这是不可能的。由于物理限制,OpenCL库无法真正分配缓冲区,并且OpenCL库不知道代码的主题,因此无法将其拆分以进行处理并在以后合并。您必须使用从设备(如CL_device_GLOBAL_MEM_SIZE)获得的知识自行编写代码