Thrust:如何从主机阵列创建device_vector?

Ash*_*ppa 12 cuda thrust

我从主机上的库中获取一些数据作为指向数组的指针.如何创建在设备上保存此数据的device_vector?

int* data;
int num;
get_data_from_library( &data, &num );

thrust::device_vector< int > iVec; // How to construct this from data?
Run Code Online (Sandbox Code Playgroud)

tal*_*ies 13

根据这个答案,您所需要的只是:

int* data;
int num;
get_data_from_library( &data, &num );

thrust::device_vector< int > iVec(data, data+num);
Run Code Online (Sandbox Code Playgroud)

  • @Ashwin:是的,因为你的指针是*host*指针.如果在您的示例中,`data`是设备指针,则它将失败.在这种情况下,你需要将设备指针包装在`thrust :: device_ptr`和构造函数`device_vector`中.构造函数假设裸指针在主机内存中,并且`device_pointer`在设备内存中.这里没有魔力. (6认同)
  • @Ashwin:它不能.如果要将设备内存中的指针传递给thrust :: vector构造函数,则需要使用thrust :: device_ptr.这就是设备和主机指针在Thrust中的区别. (4认同)