打算使用所有可用的GPU的内存为我的算法,使检索它与用量:clCreateBuffer()永远不会失败
clGetDeviceInfo(..., CL_DEVICE_GLOBAL_MEM_SIZE, ...);
这是字节,然后分配给它的GPU有:
clCreateBuffer(gpuContext, CL_MEM_READ_WRITE, 536543232, NULL, & errcode_ret);
想知道为什么它的工作原理,如果尝试分配更多的内存会失败?尝试了100场演出,它仍然工作!
clCreateBuffer(gpuContext, CL_MEM_READ_WRITE, 100000000000, NULL, & errcode_ret);
所以问题是为什么它可以与指定的任意数量的内存一起工作?
当你检查'errcode_ret'的值时,你会得到什么?通常情况下,像这样的函数将通过在该变量中设置一个值而失败,而不是通过崩溃程序或抛出异常。 – Xirema
@Xirema errcode_ret在CL_SUCCESS – Slav
的所有这些调用之后都为0您是否可以在完整的程序中编辑该问题,以便重现此问题?我的电脑上的一个示例程序产生了错误代码“-61”,它对应于'CL_INVALID_BUFFER_SIZE'。 – Xirema