2012-06-22 50 views
0

我正在使用OpenCL將python中的數據應用到我的圖形卡上。在那裏我有一個內核用n個線程處理數據。 完成這一步後,我將結果複製回python並放入新的內核中。 (數據非常大,爲900MB,結果爲100MB)結果我需要計算大約200MB的三角形。所有數據超過了我的圖形卡上的內存。OpenCL從RAM中刪除數據

第一個內核完成工作後,我不再需要第一個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() 

回答

1

您需要調用clReleaseMemObject與你通話到clCreateBuffer創建的MEM對象。如果此調用引用計數爲零,則基礎設備/共享內存由實現釋放。