【发布时间】:2012-03-18 17:32:43
【问题描述】:
我从主机上的库中获取一些数据作为指向数组的指针。如何创建一个在设备上保存此数据的 device_vector?
int* data;
int num;
get_data_from_library( &data, &num );
thrust::device_vector< int > iVec; // How to construct this from data?
【问题讨论】:
我从主机上的库中获取一些数据作为指向数组的指针。如何创建一个在设备上保存此数据的 device_vector?
int* data;
int num;
get_data_from_library( &data, &num );
thrust::device_vector< int > iVec; // How to construct this from data?
【问题讨论】:
根据this answer,您只需要:
int* data;
int num;
get_data_from_library( &data, &num );
thrust::device_vector< int > iVec(data, data+num);
【讨论】:
data 是设备指针,它将失败。在这种情况下,您需要将设备指针包装在 thrust::device_ptr 中,并用它构造 device_vector。构造函数假定裸指针在主机内存中,而device_pointer 在设备内存中。这里没有魔法。