Como fazer um valor de tipo vetorial para a memória fixada no cuda

Eu tenho dúvidas sobre como fazer a memória fixada.

Agora estou usando o CUDA para lidar com grande tamanho de dados.

Para reduzir o tempo de execução, descubro que é necessário fazer com que a cópia de memória e o lançamento do kernel se sobreponham.

Depois de pesquisar alguns textos e páginas da Web, para sobrepor a cópia da memória e o lançamento do kernel, percebo que é necessário alocar memória do host usando o cudaMallocHost que alocará a memória do host para a memória fixada.
No caso de usar o tipo inteiro ou array no host, era fácil criar memória fixa.

Bem assim...

cudaStream_t* streams = (cudaStream_t*)malloc(MAX_num_stream * sizeof(cudaStream_t));
for(i=0; i<MAX_num_stream; i++)
    cudaStreamCreate(&(streams[i]));

cudaMallocHost(&departure, its_size);

for(n=1; ... ; n++){
   cudaMemcpyAsync( ... streams[n]);
   kernel <<< ... , ... , ... , streams[n] >>> (...);
}

Mas no meu caso, minha memória de partida do host é definida pelo tipo de vertor.

E não consigo encontrar em qualquer lugar o caminho para transformar a memória host de tipo de vetor em memória fixada usando cudaMallocHost.

Ajude-me ou dê alguns conselhos para resolver este problema. Obrigado por ler meu pobre inglês. Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion