Funções __device__ e __host__
Saiba onde cada tipo de função pode ser executado.
Funções __device__ e __host__ é 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.
Além do Kernel
Os kernels são pontos de entrada, mas a maior parte do código fica nas funções auxiliares. O CUDA oferece mais dois qualificadores para indicar onde uma função comum pode ser executada. Vamos conhecê-los.
O Qualificador __device__
Uma função __device__ é executada na GPU e só pode ser chamada por outro código da GPU, como um kernel ou outra função do dispositivo.
__device__ int square(int x) {
return x * x;
}Auxiliares para Kernels
Pense nas funções __device__ como sua caixa de ferramentas da GPU. Elas mantêm os kernels organizados ao armazenar a lógica reutilizada pelas threads do dispositivo.
O Qualificador __host__
O qualificador __host__ indica código comum da CPU. Ele é o padrão, portanto funções comuns de C++ já são funções do hospedeiro.
__host__ void setup() {
// runs on the CPU
}O Padrão É o Hospedeiro
Se você não usar qualificadores, sua função será exclusiva do hospedeiro por padrão. É por isso que C++ normal continua compilando dentro de um arquivo .cu.
Os Dois ao Mesmo Tempo
Combine os dois e a função será compilada para ambos os lados. O nvcc cria uma versão para a CPU e outra para a GPU.
__host__ __device__ int dbl(int x) {
return x + x;
}Por Que Compilar para os Dois?
Marcar uma função auxiliar como __host__ __device__ permite executar a mesma matemática no código de referência da CPU e dentro dos kernels, sem duplicação. ✨
Regras de Chamada
O código do hospedeiro não pode chamar uma função __device__, e o código do dispositivo não pode chamar uma função exclusiva do hospedeiro. O compilador impõe essa separação.
Sem __global__ a Partir do Dispositivo
Uma função __device__ não pode ser lançada. Somente kernels __global__ aceitam o lançamento com três sinais de menor feito pelo hospedeiro.
Expansão para Ganhar Velocidade
O compilador frequentemente faz expansão inline de funções __device__ pequenas, portanto envolver a lógica em funções auxiliares geralmente não custa nada durante a execução.
Escolha a Marcação Certa
Escolha de acordo com o local de execução: __device__ para funções auxiliares da GPU, __host__ para código da CPU e ambos quando a lógica for compartilhada.
Verificação Rápida
Agora é hora de testar os qualificadores do dispositivo e do hospedeiro.
Recapitulação
Você aprendeu que __device__ é executado na GPU, __host__ é executado na CPU, o padrão é o hospedeiro e combinar os dois compartilha uma função entre os mundos. 🎯
Aprenda C++ com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Funções __device__ e __host__” é grátis?
Sim — o texto completo de “Funções __device__ e __host__” é 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 “Funções __device__ e __host__”?
Saiba onde cada tipo de função pode ser executado. 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 “Funções __device__ e __host__”?
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 qualificador de função __global__
- Funções __device__ e __host__
- Espaços de endereçamento separados
- O ciclo de vida de um programa CUDA