В принципе, у меня есть набор данных «редкий стиль», сКакова толчка для расширения матрицы с разреженным стилем?
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/) построен поверх сустейна и имеет много полезных встроенных функций для обработки разреженных матриц, включая преобразования. –