Thrust::host_Vector를 사용할 수 있습니까? 아니면 Thrust의 제로 복사를 위해 cudaHostAlloc을 사용해야 합니까?

StackOverflow https://stackoverflow.com//questions/11692326

  •  12-12-2019
  •  | 
  •  

문제

매핑된 메모리에서 제로 복사를 사용하고 싶습니다. cudaHostGetDevicePointer.사용해도 되나요 thrust::host_vector 아니면 내가 사용해야 해 cudaHostAlloc(...,cudaHostAllocMapped)?아니면 Thrust를 사용하는 것이 더 쉬운가요?

도움이 되었습니까?

해결책

아직 Thrust::host_Vector를 매핑된 호스트 할당으로 사용하는 것이 불가능하다고 확신합니다.고정된 메모리 할당자가 있지만 매핑된 메모리를 사용할 수 없다고 생각합니다.당신이해야 할 일은 다음과 같습니다 :

  1. 할당된 매핑되고 고정된 호스트 메모리 cudaHostAlloc
  2. 다음을 사용하여 제로 복사 메모리에 대한 장치 포인터를 가져옵니다. cudaHostGetDevicePointer
  3. 만들기 thrust::device_ptr 사용하여 thrust::device_pointer_cast 해당 장치 포인터에(참조 여기 자세한 내용은)

당신은 둘 중 하나를 만들 수 있습니다 thrust::device_vector 사용하여 thrust::device_ptr 아니면 직접적으로 통과시키거나 thrust::device_ptr 반복자를 허용하는 모든 알고리즘에 적용됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top