gpt4 book ai didi

c++ - C++ 类型 std::vector::size_type 在 OpenCL 中的等价物是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:07 25 4
gpt4 key购买 nike

这个主题在 Where should I using OpenCL data types? 中被提及但它没有回答我的问题。

(1)对于C++类型std::vector::size_type,绑定(bind)opencl类型和内核opencl类型应该是什么?

(2) 在将其设置为 clCreateBuffer() 的主机指针之前,如何将 std::vector::size_type 转换为您在回答 (1) 时提到的绑定(bind)类型?

我需要上面的原因是因为我试图将 vector 的大小传递到我的内核中。

最佳答案

  1. 视情况而定。 cl_uint/uintcl_ulong/ulong是可能的选择。当 vector 的大小最多为 2³² - 1 时,前者就足够了。当且仅当您超过该限制时,您应该考虑使用 cl_ulong。/ulong .在此之前,您可能会打破其他一些限制,例如设备的最大允许缓冲区大小 ( CL_DEVICE_MAX_MEM_ALLOC_SIZE ) 或地址空间 ( CL_DEVICE_ADDRESS_BITS )。所以我的建议是坚持 cl_uint/uint除非有充分的理由使用 cl_ulong/ulong .

  2. static_cast<cl_uint>(v.size())甚至 boost::numeric_cast<cl_uint>(v.size()) (如果该值不适合 cl_uint 则抛出异常)。

关于c++ - C++ 类型 std::vector::size_type 在 OpenCL 中的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12497446/

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