7

我想在映射内存上使用零拷贝cudaHostGetDevicePointer。我可以使用thrust::host_vector还是必须使用cudaHostAlloc(...,cudaHostAllocMapped)? 或者使用 Thrust 是否更容易?

4

1 回答 1

5

我很确定仍然无法使用推力::host_vector 作为映射的主机分配。有一个固定的内存分配器,但我不相信映射内存可用。你需要做的是这样的:

  1. 分配的映射,固定主机内存cudaHostAlloc
  2. 使用获取零拷贝内存的设备指针cudaHostGetDevicePointer
  3. 在该设备指针上创建thrust::device_ptrusing (有关更多信息,请参见此处)thrust::device_pointer_cast

您可以thrust::device_vector使用thrust::device_ptr或直接将 传递thrust::device_ptr给任何接受迭代器的算法。

于 2012-07-27T17:34:29.757 回答