gpt4 book ai didi

performance - 使用 OpenCL memset() GPU 缓冲区的最快方法是什么?

转载 作者:行者123 更新时间:2023-12-04 22:21:22 26 4
gpt4 key购买 nike

我正在使用 OpenCL,我需要对全局设备内存中的一些数组进行 memset()。 CUDA 有一个类似 memset() 的 API 函数,但 OpenCL 没有。我读了 this ,在那里我找到了两种可能的选择:

  • 在主机上使用 memset() 和一些临时缓冲区,然后 clEnqueueWriteBuffer() 将其复制到设备上的缓冲区。
  • 将以下内核入队:
    __kernel void memset_uint4(
    __global uint4* mem,
    __private uint4 val)
    {
    mem[get_global_id(0)] = val;
    }

  • 哪个更好?或者更确切地说,在哪些情况下/针对哪些平台,一个比另一个更好?

    注意: 如果归零内存的特殊情况值得特殊处理,那也很高兴知道。

    最佳答案

    您可以使用 OpenCL v1.2 中的 clEnqueueFillBuffer() 。这正是您所需要的。并且在如何用模式填充缓冲区方面非常灵活。
    如果您使用的是 1.1 或更低版本……那么您必须求助于其他方法。

    关于performance - 使用 OpenCL memset() GPU 缓冲区的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18100948/

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