Conecte o lado do hospedeiro
Alocar, copiar, executar, copiar de volta e liberar.
Conecte o lado do hospedeiro é uma aula grátis de CUDA Academy no CoddyKit. Esta é a aula 2 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.
O host também tem uma função
O kernel faz os cálculos, mas a CPU do host prepara tudo. Sua função é alocar, copiar os dados de entrada, iniciar, copiar de volta e liberar. 🧩
Dois conjuntos de ponteiros
Você mantém ponteiros do host para os vetores da CPU e ponteiros do dispositivo separados para os buffers da GPU. Um hábito comum é nomeá-los h_A e d_A.
float *h_A, *h_B, *h_C;
float *d_A, *d_B, *d_C;Preencha a entrada na CPU
Primeiro, prepare os dados na memória normal do host. Aqui, basta inicializar h_A e h_B com os valores que a GPU adicionará depois.
for (int i = 0; i < n; i++) {
h_A[i] = i; h_B[i] = 2 * i;
}Alocando no dispositivo
A GPU precisa de seus próprios buffers, portanto chame cudaMalloc para cada vetor. Observe que o tamanho está em bytes, calculado como a quantidade multiplicada por sizeof(float).
size_t bytes = n * sizeof(float);
cudaMalloc(&d_A, bytes);Copie as entradas para a GPU
Mova os vetores de entrada para a GPU com cudaMemcpy e a direção HostToDevice. O kernel só consegue ver dados que estejam no dispositivo.
cudaMemcpy(d_A, h_A, bytes, cudaMemcpyHostToDevice);
cudaMemcpy(d_B, h_B, bytes, cudaMemcpyHostToDevice);Defina a configuração de inicialização
Escolha a quantidade de threads por bloco e depois calcule quantos blocos abrangem todos os elementos. Arredondar para cima garante que cada elemento receba uma thread.
int threads = 256;
int blocks = (n + threads - 1) / threads;Inicie o kernel
Agora inicie o kernel com a sintaxe de três sinais de menor, passando os ponteiros do dispositivo. Essa chamada retorna imediatamente enquanto a GPU trabalha.
vecAdd<<<blocks, threads>>>(d_A, d_B, d_C, n);Copie o resultado de volta
Quando o kernel terminar, traga C de volta com cudaMemcpyDeviceToHost. Essa cópia também espera a conclusão da inicialização.
cudaMemcpy(h_C, d_C, bytes, cudaMemcpyDeviceToHost);Libere a memória do dispositivo
A memória da GPU não é liberada automaticamente, portanto libere cada buffer com cudaFree. Ignorar isso causa um vazamento de memória que permanece até o processo terminar.
cudaFree(d_A); cudaFree(d_B); cudaFree(d_C);A ordem é sagrada
Siga sempre a mesma sequência: alocar, copiar os dados de entrada, iniciar, copiar de volta e liberar. Trocar as etapas faz o kernel ler dados antigos ou inválidos.
O código do host é C++ comum
Observe que o lado do host é apenas C++ comum mais algumas chamadas cuda. Não há nenhum recurso especial do compilador além da inicialização do kernel.
Verificação rápida
O que precisa acontecer antes de você poder iniciar o kernel vecAdd?
Recapitulação
Você conectou todo o lado do host: dois conjuntos de ponteiros, cudaMalloc, cópia para a GPU, inicialização, cópia de volta e cudaFree. O código padrão que dá suporte a todo kernel. ✅
Perguntas Frequentes
A aula “Conecte o lado do hospedeiro” é grátis?
Sim — o texto completo de “Conecte o lado do hospedeiro” é 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 “Conecte o lado do hospedeiro”?
Alocar, copiar, executar, copiar de volta e liberar. 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 2 de 4.
Quanto tempo leva a aula “Conecte o lado do hospedeiro”?
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
- O núcleo de soma de vetores
- Conecte o lado do hospedeiro
- Verifique o resultado na CPU
- Cronometre seu primeiro ganho de velocidade