Fonctions __device__ et __host__
Découvrez où chaque type de fonction peut s’exécuter.
Fonctions __device__ et __host__ est une leçon CUDA Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage CUDA Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours CUDA Academy comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
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. 🎯
Questions Fréquemment Posées
La leçon « Fonctions __device__ et __host__ » est-elle gratuite ?
Oui — le texte complet de « Fonctions __device__ et __host__ » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours CUDA Academy, passe à CoddyKit PRO. Le cours CUDA Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Fonctions __device__ et __host__ » ?
Découvrez où chaque type de fonction peut s’exécuter. Tu pratiques CUDA Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer CUDA Academy ?
Aucune expérience préalable n'est requise. CUDA Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Fonctions __device__ et __host__ » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon CUDA Academy ?
Oui. Chaque leçon CUDA Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Le qualificatif de fonction __global__
- Fonctions __device__ et __host__
- Espaces d’adresses séparés
- La vie d’un programme CUDA