OpenCL同时占用主机内存和设备内存

时间:2018-05-24 07:40:27

标签: opencl

我的OpenCL程序是这样的:

  1. init_opencl
  2. 过程
  3. release_opencl
  4. 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。

    主机内存

    host memory

    设备内存

    device memory

    我的问题是:

    为什么opencl程序占用主机内存,占用设备内存?

    如何使opencl程序可以不占用主机内存?

    我的测试平台是GTX 750。

    在snapdragon 820中,我还发现系统内存增加了600MB。但是在这个平台上,我并不知道GPU内存的变化。

0 个答案:

没有答案