0Pricing
CUDA Academy · Aula

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

  1. O núcleo de soma de vetores
  2. Conecte o lado do hospedeiro
  3. Verifique o resultado na CPU
  4. Cronometre seu primeiro ganho de velocidade
← Voltar para CUDA Academy