0

我正在使用 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()
4

1 回答 1

1

您将需要使用您通过调用 clCreateBuffer 创建的 mem 对象调用clReleaseMemObject 。如果在此调用中引用计数变为零,则底层设备/共享内存将由实现释放。

于 2012-06-22T14:36:24.007 回答