[英]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(¬Need);
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.