我是新来的推力(CUDA),我想要做一些数组操作,但我不觉得在互联网上的任何类似的例子。
我有以下两个阵列(2D):
a = { {1, 2, 3}, {4} }
b = { {5}, {6, 7} }
我想那推力计算此阵:
c = { {1, 2, 3, 5}, {1, 2, 3, 6, 7}, {1, 2, 3, 5}, {1, 2, 3, 6, 7} }
我知道它是如何工作在C / C ++而不是怎么说的推力做到这一点。
这是我知道这是怎么沃尔也许可以工作:
线程1:取[0] - >用b展开。 它写入到c。
线程2:取一[1] - >用b展开。 它写入到c。
但我不知道该怎么做。 我可以写数组a和b的一维数组,如:
thrust::device_vector<int> dev_a;
dev_a.push_back(3); // size of first array
dev_a.push_back(1);
dev_a.push_back(2);
dev_a.push_back(3);
dev_a.push_back(1); // size of secound array
dev_a.push_back(4);
thrust::device_vector<int> dev_b;
dev_b.push_back(1); // size of first array
dev_b.push_back(5);
dev_b.push_back(2); // size of secound array
dev_b.push_back(6);
dev_b.push_back(7);
和伪功能:
struct expand
{
__host__ __device__
?? ?? (const array ai, const array *b) {
for bi in b: // each array in the 2d array
{
c.push_back(bi[0] + ai[0]); // write down the array count
for i in ai: // each element in the ai array
c.push_back(i);
for i in bi: // each element in the bi array
c.push_back(i);
}
}
};
任何人任何想法?