1
基本上,我有一个“稀疏式”数据集,与扩展稀疏样式矩阵的方法是什么?
thrust::device_vector<int> indexes(smallsize);
thrust::device_vector<float> values(smallsize);
我想扩大成一个单一的
thrust::device_vector<float> expanded(fullsize);
我知道如何与内核做到这一点的:
template <typename T>
__global__ void AssignByIndex
(
T* inval,
T* outval,
size_t* keys,
int Ilength
)
{
int index = blockIdx.x * blockDim.x + threadIdx.x;
if (index < Ilength)
{
const size_t key = keys[index];//cross access,slow
outval[key]=inval[index];
}
};
但是1)这感觉就像推力可以轻松做到的事情,2)这不允许我使用花哨的迭代器。我想我只是在我的搜索中使用了一个不正确的术语,或者仅仅是没有足够的创造力。
这听起来像一个典型的分散操作。 – talonmies
@talonmies老兄,那完全是缺少的关键字。如果你把它放在答案中,我会将它标记为这样。 – IdeaHat
另外,[cusp](http://code.google.com/p/cusp-library/)建立在推力之上,并且具有用于处理稀疏矩阵(包括转换)的许多有用的内置函数。 –