Как отмечает talonmies в своем комментарии, вы не можете напрямую получить доступ к элементам, принадлежащим device_vector
, или любому объекту, заключенному в device_reference
. Однако я хотел предоставить этот ответ, чтобы продемонстрировать альтернативный подход к вашей проблеме.
Хотя device_reference
не позволяет вам получить доступ к членам обернутого объекта, он совместим с operator<<
. Этот код должен работать как положено:
#include <thrust/device_vector.h>
#include <iostream>
// provide an overload for operator<<(ostream, uint2)
// as one is not provided otherwise
std::ostream &operator<<(std::ostream &os, const uint2 &x)
{
os << x.x << ", " << x.y;
return os;
}
int main()
{
thrust::device_vector<uint2> vec(5);
vec[0] = make_uint2(4,5);
std::cout << vec[0] << std::endl;
return 0;
}