【发布时间】:2016-07-24 11:20:07
【问题描述】:
我需要将一个 C++ 向量向量传递给 OpenCL 内核,例如,我有以下数据:
3 1 9 1 3 8 5 1 3 8 4
3 9 4 0 7 4 3
1 0 4 8 2 8 3 1 2
1 9 3 2
8 3 9 4
4 9 3 9 5 4 3
我在 C++ 中的数据结构是向量的向量:
- std::vector >
所以,我的结构是一个大小为 6 的 vectos 向量,向量“i”的大小是动态的。
如何将数据传递给 OpenCL 内核?
有什么想法吗?
谢谢。
【问题讨论】:
-
您需要将数据传递给的 OpenCL 内核函数的签名是什么?
-
当您将 3 添加到第一个向量的向量时,它会重新分配整个向量及其向量以在内存中连续?那将是非常低的性能。也许只适用于静态大小的内部对象。
-
是一个新的内核函数,我要定义它。我必须将代码迁移到 OpenCL,我遇到了这个问题。我唯一的想法是使用函数“vector.insert(...)”将二维数组更改为一维数组,但在这种情况下,我需要迭代数组的第一个维度,我想避免它.. . 顺序代码是MPI和OpenMP的混合代码,有一部分需要转换成OpenCL。数据来自算法中无法修改的一点。
-
我拥有的另一个信息是二维数组的元素数量。在示例中是 42 个元素。