Funciones __device__ y __host__
Descubra dónde puede ejecutarse cada tipo de función.
Funciones __device__ y __host__ es una lección gratuita de CUDA Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de CUDA Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CUDA Academy incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
Beyond the Kernel
Kernels are entry points, but most code lives in helpers. CUDA gives two more qualifiers to say where a plain function may run. Let us meet them.
The __device__ Qualifier
A __device__ function runs on the GPU and is callable only from other GPU code, like a kernel or another device function.
__device__ int square(int x) {
return x * x;
}Helpers for Kernels
Think of __device__ functions as your GPU toolbox. They keep kernels tidy by holding logic the device threads reuse.
The __host__ Qualifier
The __host__ qualifier means ordinary CPU code. It is the default, so plain C++ functions are already host functions.
__host__ void setup() {
// runs on the CPU
}Default Is Host
Leave off all qualifiers and your function is host-only by default. That is why normal C++ still compiles inside a .cu file.
Both at Once
Combine the two and a function compiles for both sides. nvcc builds one version for the CPU and one for the GPU.
__host__ __device__ int dbl(int x) {
return x + x;
}Why Dual-Compile?
Marking a helper __host__ __device__ lets the same math run in CPU reference code and inside kernels, with zero duplication. ✨
Calling Rules
Host code may not call a __device__ function, and device code may not call a host-only one. The compiler enforces the boundary.
No __global__ from Device
A __device__ function is not launchable. Only __global__ kernels accept the triple-angle-bracket launch from the host.
Inlining for Speed
The compiler often inlines small __device__ functions, so wrapping logic in helpers usually costs nothing at runtime.
Pick the Right Tag
Choose by where it runs: __device__ for GPU helpers, __host__ for CPU code, and both when the logic is shared.
Quick Check
Time to test the device and host qualifiers.
Recap
You learned __device__ runs on the GPU, __host__ runs on the CPU, the default is host, and combining both shares one function across worlds. 🎯
Preguntas frecuentes
¿La lección «Funciones __device__ y __host__» es gratis?
Sí — el texto completo de «Funciones __device__ y __host__» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de CUDA Academy, actualiza a CoddyKit PRO. El curso de CUDA Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Funciones __device__ y __host__»?
Descubra dónde puede ejecutarse cada tipo de función. Practicas CUDA Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar CUDA Academy?
No se requiere experiencia previa. CUDA Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Funciones __device__ y __host__»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de CUDA Academy?
Sí. Cada lección de CUDA Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- El calificador de función __global__
- Funciones __device__ y __host__
- Espacios de direcciones separados
- El ciclo de vida de un programa CUDA