Thrust::host_Vector를 사용할 수 있습니까? 아니면 Thrust의 제로 복사를 위해 cudaHostAlloc을 사용해야 합니까?
문제
매핑된 메모리에서 제로 복사를 사용하고 싶습니다. cudaHostGetDevicePointer
.사용해도 되나요 thrust::host_vector
아니면 내가 사용해야 해 cudaHostAlloc(...,cudaHostAllocMapped)?
아니면 Thrust를 사용하는 것이 더 쉬운가요?
해결책
아직 Thrust::host_Vector를 매핑된 호스트 할당으로 사용하는 것이 불가능하다고 확신합니다.고정된 메모리 할당자가 있지만 매핑된 메모리를 사용할 수 없다고 생각합니다.당신이해야 할 일은 다음과 같습니다 :
- 할당된 매핑되고 고정된 호스트 메모리
cudaHostAlloc
- 다음을 사용하여 제로 복사 메모리에 대한 장치 포인터를 가져옵니다.
cudaHostGetDevicePointer
- 만들기
thrust::device_ptr
사용하여thrust::device_pointer_cast
해당 장치 포인터에(참조 여기 자세한 내용은)
당신은 둘 중 하나를 만들 수 있습니다 thrust::device_vector
사용하여 thrust::device_ptr
아니면 직접적으로 통과시키거나 thrust::device_ptr
반복자를 허용하는 모든 알고리즘에 적용됩니다.
제휴하지 않습니다 StackOverflow