(Делая это ответом, потому что это слишком долго для комментария.)
Я не знаю pcl, но, возможно, это потому, что вы передаете на стороне хоста std::vector
, а не данные, которые находятся на устройствеside.
... что такое "сторона хоста" и "сторона устройства", спросите вы?А что такое std
?
Ну, std
- это просто пространство имен , используемое стандартной библиотекой C ++.std::vector
- это (шаблонный) класс в стандартной библиотеке C ++, который динамически распределяет память для элементов, которые вы в него помещаете.
Дело в том, что память, используемая std::vector
, являетсяваша основная системная память (RAM), которая не имеет никакого отношения к графическому процессору.Но, вероятно, ваша библиотека pcl требует, чтобы вы передавали данные, находящиеся в памяти GPU, которые не могут быть данными в std::vector
.Вам нужно было бы выделить память на стороне устройства и скопировать туда свои данные из памяти хоста.
См. Также:
Почему у нас нет доступа к памяти устройства на стороне хоста?
и обратитесь к руководству по программированию CUDA относительно того, как выполнить это распределение и копирование (по крайней мере, как выполнить это на самом низком возможном уровне; ваш "pcl" может иметьсвои возможности для этого.)