CUDA matrizes dinâmicas globais (como em C) alocadas na memória do dispositivo

Então, estou tentando escrever um código que utiliza a arquitetura CUDA da Nvidia. Percebi que copiar para e do dispositivo estava realmente prejudicando meu desempenho geral, então agora estou tentando mover uma grande quantidade de dados para o dispositivo.

Como esses dados são usados em várias funções, eu gostaria que fosse global. Sim, posso passar sugestões, mas gostaria muito de saber como trabalhar com globais neste cas

ntão, eu tenho funções de dispositivo que desejam acessar uma matriz alocada por dispositiv

Ideally, eu poderia fazer algo como:

__device__ float* global_data;

main()
{
  cudaMalloc(global_data);
  kernel1<<<blah>>>(blah); //access global data
  kernel2<<<blah>>>(blah); //access global data again
}

No entanto, eu ainda não descobri como criar uma matriz dinâmica. Eu descobri uma solução alternativa declarando a matriz da seguinte maneira:

__device__ float global_data[REALLY_LARGE_NUMBER];

E embora isso não exija uma chamada cudaMalloc, eu preferiria a abordagem de alocação dinâmic

questionAnswers(6)

yourAnswerToTheQuestion