К сожалению, device_reference<T>
не может выставить членов T
, но может преобразоваться в T
.
Для реализации print
создайте временную копию каждого элемента, преобразовав ее во временную temp
:
void print(thrust::device_vector<point> &points, unsigned int index)
{
point temp = points[index];
std::cout << temp.y << temp.y << std::endl;
}
Каждый раз, когда вы вызываете print
, он вызывает передачу из графического процессора в системную память для создания временной. Если вам нужно распечатать всю коллекцию points
за раз, более эффективный метод скопирует весь вектор points
массово в host_vector
или std::vector
(используя thrust::copy
), а затем проведет итерацию по коллекции как обычно.