我正在设计一个并行算法,理论上,我想更新一个 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/