我想在映射内存上使用零拷贝cudaHostGetDevicePointer
。我可以使用thrust::host_vector
还是必须使用cudaHostAlloc(...,cudaHostAllocMapped)?
或者使用 Thrust 是否更容易?
问问题
1326 次
1 回答
5
我很确定仍然无法使用推力::host_vector 作为映射的主机分配。有一个固定的内存分配器,但我不相信映射内存可用。你需要做的是这样的:
- 分配的映射,固定主机内存
cudaHostAlloc
- 使用获取零拷贝内存的设备指针
cudaHostGetDevicePointer
- 在该设备指针上创建
thrust::device_ptr
using (有关更多信息,请参见此处)thrust::device_pointer_cast
您可以thrust::device_vector
使用thrust::device_ptr
或直接将 传递thrust::device_ptr
给任何接受迭代器的算法。
于 2012-07-27T17:34:29.757 回答