小编Tom*_*Tom的帖子

如何使用推力和CUDA流将内存从主机异步复制到设备

我想使用推力将内存从主机复制到设备

thrust::host_vector<float> h_vec(1 << 28);
thrust::device_vector<float> d_vec(1 << 28);
thrust::copy(h_vec.begin(), h_vec.end(), d_vec.begin());
Run Code Online (Sandbox Code Playgroud)

使用CUDA流类似于使用流将内存从设备复制到设备的方式:

cudaStream_t s;
cudaStreamCreate(&s);

thrust::device_vector<float> d_vec1(1 << 28), d_vec2(1 << 28);
thrust::copy(thrust::cuda::par.on(s), d_vec1.begin(), d_vec1.end(), d_vec2.begin());

cudaStreamSynchronize(s);
cudaStreamDestroy(s);
Run Code Online (Sandbox Code Playgroud)

问题是我无法将执行策略设置为CUDA以在从主机复制到设备时指定流,因为在这种情况下,推力会假设两个向量都存储在设备上.有办法解决这个问题吗?我正在使用github的最新推力版本(它在version.h文件中显示为1.8).

c++ asynchronous cuda thrust

7
推荐指数
1
解决办法
3167
查看次数

标签 统计

asynchronous ×1

c++ ×1

cuda ×1

thrust ×1