cudaMalloc e cudaFree
Reserve e libere a memória global.
cudaMalloc e cudaFree é uma aula grátis de CUDA Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de CUDA Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de CUDA Academy inclui 4 aulas no total.
A GPU tem sua própria RAM
Sua GPU não usa a memória principal do computador. Ela possui um espaço separado chamado memória global, que os núcleos leem e gravam. 🧠
Você precisa solicitá-la
Antes que um núcleo possa usar a memória do dispositivo, você precisa reservar um espaço por conta própria. A função que faz essa reserva é cudaMalloc.
A assinatura de cudaMalloc
cudaMalloc recebe o endereço de um ponteiro e uma quantidade de bytes. Ela preenche esse ponteiro com um novo endereço no dispositivo.
float* d_data;
cudaMalloc(&d_data, n * sizeof(float));Por que um ponteiro para um ponteiro
Você passa &d_data para que cudaMalloc possa gravar o novo endereço de volta na sua variável. O valor retornado é reservado para um código de erro.
Sempre conte em bytes
cudaMalloc trabalha com bytes brutos, não com elementos. Multiplique a quantidade de elementos por sizeof(type) para que o buffer tenha o tamanho correto.
cudaMalloc(&d_arr, count * sizeof(int));Devolva com cudaFree
Quando terminar de usar um buffer, devolva-o à GPU usando cudaFree. Isso libera a memória global para outros trabalhos.
cudaFree(d_data);Pares, como fechadura e chave
Trate cudaMalloc e cudaFree como um par. Cada alocação que fizer deve ter exatamente uma liberação correspondente.
A memória não é inicializada
A memória recém-obtida com cudaMalloc contém valores indefinidos. Lê-la antes de escrever ou copiar dados produz resultados imprevisíveis.
A alocação pode falhar
Se a GPU ficar sem memória, cudaMalloc retornará um erro em vez de causar uma falha. Em código real, verifique sempre esse código de retorno.
A memória global é abundante, mas lenta
Os buffers de cudaMalloc ficam na memória global: gigabytes de espaço, mas a camada mais lenta do chip. Use-a sem economia, mas preste atenção aos padrões de acesso.
O ritmo de todo programa
Quase todo programa CUDA segue o mesmo ritmo: cudaMalloc, copiar os dados para a GPU, iniciar um kernel, copiar os resultados de volta e então executar cudaFree.
Verificação rápida
Vamos confirmar como cudaMalloc recebe o ponteiro de destino.
Recapitulação
Você aprendeu a reservar memória da GPU com cudaMalloc, especificando o tamanho em bytes, e a liberá-la com cudaFree em pares correspondentes. 🎉
Perguntas Frequentes
A aula “cudaMalloc e cudaFree” é grátis?
Sim — o texto completo de “cudaMalloc e cudaFree” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de CUDA Academy, atualize para CoddyKit PRO. O curso de CUDA Academy inclui 4 aulas no total.
O que vou aprender em “cudaMalloc e cudaFree”?
Reserve e libere a memória global. Você pratica CUDA Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar CUDA Academy?
Nenhuma experiência prévia é necessária. CUDA Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “cudaMalloc e cudaFree”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de CUDA Academy?
Sim. Cada aula de CUDA Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- cudaMalloc e cudaFree
- Ponteiros para a memória da GPU
- cudaMemset para inicialização
- Evite vazamentos e liberações duplicadas