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/)建立在推力之上,並且具有用於處理稀疏矩陣(包括轉換)的許多有用的內置函數。 –