2013-04-07 1 views
2

В C++ для того, чтобы создать вектор, который имеет 10 векторов целых чисел, я бы сделал следующее:CUDA Thrust library: Как я могу создать host_vector из host_vectors целых чисел?

std::vector< std::vector<int> > test(10); 

Поскольку я думал Thrust использует ту же логику, с STL я попытался сделать то же самое:

thrust::host_vector< thrust::host_vector<int> > test(10); 

Однако у меня слишком много запутанных ошибок. Я пробовал:

thrust::host_vector< thrust::host_vector<int> > test; 

и все получилось, но я ничего не могу добавить к этому вектору. Выполнение

thrust::host_vector<int> temp(3); 
    test.push_back(temp); 

дал бы мне те же ошибки (слишком много, чтобы вставить их здесь).

Как правило, при использовании Thrust, существует ли разница между использованием host_vector и STL's vector?

Спасибо заранее

ответ

4

контейнеры упорных разработаны только для POD (простые старые данные) типы. Невозможно создать многомерные векторы, создавая «векторы векторов» в тяге, главным образом из-за ограничений на стороне графического процессора, которые делают невозможным передачу и использование в кодах кода устройства.

Существует некоторая степень совместимости между стандартными типами библиотек и алгоритмами C++ и реализацией хост-хоста этих STL-производных моделей, но вы должны действительно придерживаться векторов-хостов, когда хотите работать как с концами хоста, так и с помощью библиотеки ,

+0

спасибо, мне, вероятно, придется создать один вектор из многомерного для выполнения моей работы. – ksm001

+0

@ ksm001: Это обычный способ, которым люди делают это с помощью тяги. Если вам интересно, взгляните на куспи. Этот проект реализовал сложные расчеты с разреженной матрицей только с использованием упорных контейнеров – talonmies

 Смежные вопросы

  • Нет связанных вопросов^_^