簡體   English   中英

openCL釋放GPU內存

[英]openCL release GPU memory

我嘗試使用OpenCL在GPU中釋放分配的內存

int arraySize = 130000000;
cl_int* A = new cl_int[arraySize];
cl::Buffer gpuA(context, CL_MEM_READ_ONLY, sizeof(cl_int) * arraySize);
inA.setDestructorCallback(&notNeed);
cl::Event event;
queue.enqueueWriteBuffer(gpuA, CL_TRUE, 0, sizeof(cl_int) * arraySize, A, NULL, &event);
event.setCallback(CL_COMPLETE, &whenWritten);
event.wait();

幾秒鍾的回調后,Written正在運行(寫入文本完成),程序內存在增加,並在Windows10中使用TaskManager-GPU(專用內存使用率),我在圖表中也看到了在增加內存級別。 很好 ;-)

那我就睡十秒

現在我想清除GPU中的內存以供局部變量AI使用

delete A; //local memory is decresing

但是當我使用

clReleaseMemObject(gpuA());

我沒有看到GPU內存的任何變化

我做錯了什么? 最好的解決方案是什么?

感謝您的任何建議

好的,所以我將緩沖區替換為C而不是C清理緩沖區

cl_mem gpuA2 = clCreateBuffer(context(), CL_MEM_READ_ONLY, sizeof(cl_int) * arraySize, NULL, NULL);
clEnqueueWriteBuffer(queue(), gpuA2, CL_TRUE, 0, sizeof(cl_int) * arraySize, A, 0, NULL, NULL);

queue.finish();
clReleaseMemObject(gpuA2);
delete A;

跑步后我看不出任何區別

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM