У меня есть основной массив 2D-столбцов на хосте с заполнением, например:
|1 4 7|
|2 5 8|
A_h = |3 6 9|
|x x x|
|x x x|
, и я хочу скопировать данные в память устройства как 1D-массив:
{1, 2, 3, 4, 5, 6, 7, 8, 9} //preferred
или
{1, 2, 3, 4, 5, 6, 7, 8, 9, x, x, x, x, x, x}
Каков самый быстрый и эффективный способ добиться этого с помощью CUDA и / или тяги?
Изменить: я следил за комментарием Роберта, чтобы удалить l oop при использовании тяги, но код может копировать только первый столбец. Как я могу заставить его работать для всего массива без использования al oop?
thrust::counting_iterator<int> first(0);
thrust::counting_iterator<int> last = first + rows;
thrust::device_vector<real_type> A_d(rows * cols);
thrust::copy(thrust::make_permutation_iterator(A_h, first),
thrust::make_permutation_iterator(A_h, last), A_d.begin());