gpt4 book ai didi

opencl - clEnqueueMapBuffer 是如何工作的

转载 作者:行者123 更新时间:2023-12-04 08:27:41 42 4
gpt4 key购买 nike

谁能说说功能clEnqueueMapBuffer工作机制。其实我主要关心的是我可以从这个函数中获得什么速度上的好处,而不是clEnqueueRead/WriteBuffer .

PS :
是否clEnqueueMapBuffer/clEnqueueMapImage还自动从 CPU 分配缓冲区?
如果是。
我想管理我的 CPU 缓冲区。我的意思是我先分配一个大缓冲区。然后如果我需要缓冲。我可以从我首先分配的大缓冲区中分配它。如何制作clEnqueueMapBuffer/clEnqueueMapImage从大缓冲区分配缓冲区。

最佳答案

clEnqueueMapBuffer/clEnqueueMapImage
用于访问内存对象而不是使用的 OpenCL 机制 clEnqueueRead/Write .我们可以将设备上的内存对象映射到主机上的内存区域。一旦我们映射了对象,我们就可以随心所欲地读/写或修改。
Read之间的另一个区别/Write缓冲区和 clEnqueueMapBuffermap_flags争论。如 map_flags设置为 CL_MAP_READ ,映射的内存将是只读的,如果设置为 CL_MAP_WRITE映射的内存将是只写的,如果你想要读+写,那么设置标志 CL_MAP_READ | CL_MAP_WRITE .

相比读/写fns,内存映射需要三步流程>

  • 使用 clEnqueueMapBuffer 映射内存.
  • 通过 memcpy 将内存从设备传输到主机/从主机传输.
  • 使用 clEnqueueUnmapObject 取消映射.

  • 普遍的共识是,与常规读/写相比,内存映射可显着提高性能,请参见此处: what's faster - AMD devgurus forum link

    如果您想复制图像或图像的矩形区域,则可以使用 clEnqueueMapImage也打电话。

    引用:
  • OpenCL in Action
  • Heterogeneous computing with OpenCL
  • Devgurus forum
  • 关于opencl - clEnqueueMapBuffer 是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12255738/

    42 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com