opencl - OpenCL 同时吃掉主机内存和设备内存
问题描述
我的 OpenCL 程序是这样的:
- init_opencl
- 过程
- release_opencl
在1. init_opencl中,我预先创建了所有将要使用的缓冲区,如下所示:
g_mem_under_down_lap_pyr_32FC3 = clCreateBuffer(g_ctx, CL_MEM_READ_WRITE,
g_sizeMgr->getPyrCapacity() * 3 * sizeof(float), nullptr, &err);
g_mem_mean_down_lap_pyr_32FC3 = clCreateBuffer(g_ctx, CL_MEM_READ_WRITE,
g_sizeMgr->getPyrCapacity() * 3 * sizeof(float), nullptr, &err);
然后在2. 进程中,我使用clEnqueueWriteBuffer先将数据从主机内存传输到缓冲区,然后运行内核。最后,我使用clEnqueueReadBuffer从缓冲区中读出数据。
最后在3. release_opencl中,我调用了clReleaseMemObject来释放所有的缓冲区。
但是当我运行程序时,我观察到在2. 进程中,主机内存和设备内存同时增加了大约 600MB。
主机内存
设备内存
我的问题是:
为什么opencl程序占用了设备内存,却占用了主机内存?
以及如何使opencl程序不占用主机内存?
我的测试平台是 GTX 750。
而在骁龙820中,我也发现系统内存增加了600MB。但是在这个平台上,我并没有改变 GPU 内存。
解决方案
推荐阅读
- google-apps-script - 如何使用 Google Calendar API 和 Apps 脚本找到与多个参与者开会的时间?
- python - Pandas - 如何仅将列表的最后一个元素获取到另一列?
- python - 有没有办法从我的终端在 GPU 上运行代码?
- nuxt.js - Vuetify v-container 流体未正确应用
- javascript - 如何渲染对象内的对象数组反应本机?
- vue-storefront - Vue-店面 | 在magento购物车上为相同sku和id添加的项目显示购物车中的项目
- wpf - 背景颜色在行颜色上可见
- moving-average - 为什么 MQL4 机器人在 StrategyTester 运行中未检测到 5-EMA 和 20-EMA 交叉?
- excel - 提交 Excel 加载项后无法访问工作簿中的持久数据
- python-3.x - 如何使用给定数据正确创建熊猫数据框?