c++ - 将 STL 数据结构传递给 opencl 内核

标签 c++ stl opencl

我正在设计一个并行算法,理论上,我想更新一个 std::list<...>每个线程。所以说我有 m*n线程,其中每一个都会索引一个特定的 std::list ,在执行并行算法后,所有列表将合并在一起。

我想到的另一种方法是使用单个 std::list并在更新时锁定访问权限(如果这在 openCL 中可能不完全确定)。

我的一般问题是......是否可以将 STL 数据结构传递给内核?

谢谢

最佳答案

通常不可能将标准库数据结构传递给 OpenCL。 std::list 中存储的对象的内存布局不是连续的,因此您必须在传递给 OpenCL 之前将列表复制到缓冲区中。

std::vector 会更容易,因为至少它的内存是连续的,但您仍然需要在 OpenCL 缓冲区之间进行传输。

关于c++ - 将 STL 数据结构传递给 opencl 内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50719380/

相关文章:

c# - 通过共享内存将数据从 C++ 流式传输到 C#

c++ - 从字符串中提取数字 (Regex C++)

c++ - 输入迭代器可以用在需要前向迭代器的地方吗?

opencv - OpenCL:为什么不能将指向指针的指针作为参数传递给内核函数?

来自过剩的 OpenGL 上下文

c++ - C++ 中的运算符重载和符号

C++ private static constexpr 成员变量

c++ - 如何为 std::ostream_iterator 设置前缀?

c++ - 不能迭代集合

c++ - 为什么我会收到 CL_MEM_OBJECT_ALLOCATION_FAILURE?