smu*_*kes 4 memory types boilerplate opencl
我一直在我的一些OpenCL样板代码中使用cl_mem,但我一直在通过上下文使用它,而不是对它究竟是什么有深刻的理解.我一直在使用它作为内存的一种类型我推进和离开板,到目前为止浮动.我试着查看OpenCL文档,但cl_mem没有显示(是吗?).是否有任何文件,或者它是否简单,有人可以解释.
grr*_*sel 11
cl_mem类型是"Memory Object"的句柄(如OpenCL 1.1 Spec的第3.5节所述).这些本质上是OpenCL内核的输入和输出,并通过主机代码(如clCreateBuffer)中的OpenCL API调用返回
cl_mem clCreateBuffer (cl_context context, cl_mem_flags flags,
size_t size, void *host_ptr, cl_int *errcode_ret)
Run Code Online (Sandbox Code Playgroud)
所表示的存储区域可以被允许不同的访问模式,例如只读,或者被分配在不同的存储区域中,这取决于创建缓冲区调用中设置的标志.
通常存储句柄以允许稍后调用以释放存储器,例如:
cl_int clReleaseMemObject (cl_mem memobj)
Run Code Online (Sandbox Code Playgroud)
简而言之,它提供了内存实际位置的抽象:您可以将数据复制到关联的内存中或通过OpenCL API clEnqueueWriteBuffer和clEnqueueReadBuffer退出,但OpenCL实现可以分配它想要的空间.
对于计算机而言,cl_mem是一个数字(就像Linux的文件处理程序),它被保留用作"内存标识符"(API /驱动程序,无论在这个数字下存储有关内存的信息,它都知道它拥有什么/如何很棒,就像这样的东西)
| 归档时间: |
|
| 查看次数: |
9908 次 |
| 最近记录: |