为了与 openCL 进行全速通信,必须使用主机端的固定内存。这样的内存永远不会被分页,并且可以通过使用带有 CL_MEM_ALLOC_HOST_PTR 标志的 clCreateBuffer() 然后使用 clEnqueueMapBuffer 来获得。
但是人们可能知道一个对象已经在固定内存中(因为它是使用这些函数创建的,但在另一个上下文中),因此想要全速使用 clEnqueueReadBuffer()/clEnqueueWriteBuffer()。不幸的是,如果内存没有在当前上下文中固定,则该对象不会被视为固定,并且数据速率不是最大的。
如何说一个对象已经在 OpenCL 的固定内存中?