0Pricing
CUDA Academy · Aula

Enumerando e selecionando dispositivos

cudaSetDevice e contextos por GPU.

Enumerando e selecionando dispositivos é 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.

Mais de uma GPU

Uma única máquina pode conter várias GPUs. Para usar todas elas, seu programa primeiro precisa descobrir quantos dispositivos estão presentes antes de enviar qualquer trabalho.

Contando os dispositivos

Uma chamada informa quantas GPUs o ambiente de execução consegue ver. cudaGetDeviceCount grava esse número em um int fornecido por você.

int count;
cudaGetDeviceCount(&count);

Os dispositivos são numerados

Cada GPU recebe um identificador inteiro de 0 até a contagem menos um. Esse identificador do dispositivo é como você indica ao ambiente de execução uma placa específica.

Escolhendo o dispositivo ativo

Você escolhe qual GPU será o destino das próximas chamadas com cudaSetDevice. Depois disso, as alocações e os lançamentos vão para essa placa.

cudaSetDevice(1);

Existe um dispositivo atual

A qualquer momento, exatamente uma GPU é o dispositivo atual da thread que faz a chamada. Cada cudaMalloc ou lançamento de kernel é direcionado ao dispositivo que estiver atual.

Inspecionando um dispositivo

Antes de confiar em uma GPU, você pode ler as especificações dela. cudaGetDeviceProperties preenche uma estrutura com o nome, o tamanho da memória e a capacidade de computação.

cudaDeviceProp prop;
cudaGetDeviceProperties(&prop, 0);

Lendo as propriedades

A estrutura de propriedades é completa. Campos como nome e totalGlobalMem ajudam você a escolher a melhor placa ou ignorar uma que seja pequena demais.

Cada dispositivo possui sua memória

Um ponteiro retornado por cudaMalloc pertence à GPU que estava ativa naquele momento. Usá-lo enquanto outro dispositivo está ativo é um erro prestes a acontecer.

Contextos por dispositivo

Por trás de cada GPU há um contexto que mantém suas alocações e filas. Trocar o dispositivo atual leva você ao contexto desse dispositivo.

Percorrendo todas as GPUs

Um padrão comum é percorrer um laço que chama cudaSetDevice para cada identificador e depois configura essa placa. É assim que você distribui o trabalho entre todos os dispositivos.

for (int d = 0; d < count; d++) {
  cudaSetDevice(d);
}

Restaure antes de sair

Se uma função auxiliar alterar o dispositivo atual, restaure-o ao terminar. Deixar o dispositivo atual alterado pode surpreender o restante do seu código.

Verificação rápida

Relembre qual chamada escolhe a GPU que será usada pelas próximas alocações e lançamentos.

Recapitulação

Você conta as GPUs, escolhe uma com cudaSetDevice e a examina usando as propriedades. Cada dispositivo possui sua própria memória e seu próprio contexto. A seguir: dividir o trabalho entre elas. ✨

Perguntas Frequentes

A aula “Enumerando e selecionando dispositivos” é grátis?

Sim — o texto completo de “Enumerando e selecionando dispositivos” é 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 “Enumerando e selecionando dispositivos”?

cudaSetDevice e contextos por GPU. 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 “Enumerando e selecionando dispositivos”?

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. Enumerando e selecionando dispositivos
  2. Particionando o trabalho entre GPUs
  3. Acesso ponto a ponto à memória
  4. Várias GPUs com NCCL
← Voltar para CUDA Academy