我正在使用OpenCL将python中的数据复制到我的显卡上。我有一个内核用n个线程处理数据。 在此步骤之后,我将结果复制回python和新内核。 (数据非常大,900MB,结果是100MB)结果我需要计算大约200MB的三角形。所有数据都超过了我的图形卡上的内存。
在第一个内核完成它的工作后,我不再需要第一个900MB了。
我的问题是,如何从图形卡中删除第一个数据集(存储在一个数组中)?
这里有一些代码:
#Write
self.gridBuf = cl.Buffer(self.context, cl.mem_flags.READ_ONLY | cl.mem_flags.COPY_HOST_PTR, hostbuf=self.grid)
#DO PART 1
...
#Read result
cl.enqueue_read_buffer(self.queue, self.indexBuf,index).wait()
答案 0 :(得分:1)
您需要使用您通过调用clCreateBuffer创建的mem对象调用clReleaseMemObject。如果此调用引用计数变为零,则实现将释放底层设备/共享内存。