如果 device_vector 是从迭代器创建的,推力是否复制数据?

Does thrust copy data if its device_vector is created from iterator?

假设我有以下代码

float *raw_data;
cudaMalloc(&raw_data, 100*sizeof(float));
thrust::device_vector <float> vec(raw_data, raw_data+100);

执行最后一行时,thrust是将内存从raw_data复制到device_vector,还是只设置vector对应的范围?

谢谢。

thrust::device_vector <float> vec(raw_data, raw_data+100);

vec 变量填充了从范围为 0 到 100 的指针变量 raw_data 复制的数据。

使用下面的构造函数初始化变量vec。

template<typename InputIterator >
__host__    device_vector (InputIterator first, InputIterator last)