使用OpenCL时,可以通过调用
来检查设备上image3D的最大理论大小CL_DEVICE_IMAGE3D_MAX_WIDTH
CL_DEVICE_IMAGE3D_MAX_DEPTH
CL_DEVICE_IMAGE3D_MAX_HEIGHT
但是例如我的GPU没有提供足够的内存来分配那个大小的3D RGBA图像。很明显,当我尝试推送这样的图像时,会发生OutOfResources错误。
我的问题:如果vector<float>
包含尺寸为<2048
的图片,我该如何检查它是否适合我的GPU?
我的问题的背景是,我想分割图像,以便部分处理它。
答案 0 :(得分:2)
您可以使用CL_DEVICE_MAX_MEM_ALLOC_SIZE
返回内存对象分配的最大大小(以字节为单位)。
虽然这并没有考虑到当前使用的内存,但您可以尝试通过跟踪您正在执行的分配并检查CL_DEVICE_GLOBAL_MEM_SIZE
来自行完成。