gpt4 book ai didi

buffer - clEnqueueMapBuffer 和 clEnqueueWriteBuffer 有什么区别

转载 作者:行者123 更新时间:2023-12-02 09:54:36 28 4
gpt4 key购买 nike

它们都可以将数据从主机传输到设备,对吧?那么,有什么区别呢?需要创建一个缓冲区而不需要吗?谢谢!

khronos网站上的解释:

clEnqueueMapBuffer:

将命令加入队列,将 buffer 给定的缓冲区对象区域映射到主机地址空间,并返回指向该映射区域的指针。

clEnqueueWriteBuffer

将命令排队以从主机内存写入缓冲区对象。

最佳答案

写入缓冲区意味着您有 2 个内存对象 - 一个在主机上,由 malloc 等分配,另一个在设备上,通过 OpenCL API 分配。

映射意味着您有一个由 OpenCL API 分配的对象,并且您正在将其地址转换为主机地址空间。

如果您的设备有 RAM 内存,您最好使用映射 - 地址转换比复制花费的时间更少。

如果您的设备有单独的内存,您将不会看到速度差异 - 数据将被隐式复制。

无论如何,映射可以让你摆脱内存重复。

关于buffer - clEnqueueMapBuffer 和 clEnqueueWriteBuffer 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22057692/

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