Pergunta

Quero usar cópia zero na memória mapeada por cudaHostGetDevicePointer.Eu posso usar thrust::host_vector ou devo usar cudaHostAlloc(...,cudaHostAllocMapped)?Ou é de alguma forma mais fácil de fazer com o Thrust?

Foi útil?

Solução

Tenho certeza de que ainda não é possível usar um push::host_vector como uma alocação de host mapeada.Existe um alocador de memória fixado, mas não acredito que a memória mapeada esteja disponível.O que você precisa fazer é algo assim:

  1. Memória de host fixada e mapeada alocada com cudaHostAlloc
  2. Obtenha o ponteiro do dispositivo para a memória de cópia zero usando cudaHostGetDevicePointer
  3. Criar uma thrust::device_ptr usando thrust::device_pointer_cast naquele ponteiro do dispositivo (veja aqui Para maiores informações)

Você pode fazer um thrust::device_vector usando o thrust::device_ptr ou passar diretamente o thrust::device_ptr para qualquer algoritmo que aceite um iterador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top