Câbler la partie hôte
Allouez, copiez, lancez, recopiez, libérez.
Câbler la partie hôte 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.
L’hôte a aussi un rôle
Le noyau effectue les calculs, mais le CPU de l’hôte prépare tout. Son rôle est d’allouer, de copier les données vers le GPU, de lancer le noyau, de recopier les résultats et de libérer les ressources. 🧩
Deux ensembles de pointeurs
Vous conservez des pointeurs d’hôte pour les tableaux du CPU et des pointeurs de périphérique distincts pour les tampons du GPU. Une convention courante consiste à les nommer h_A et d_A.
float *h_A, *h_B, *h_C;
float *d_A, *d_B, *d_C;Remplissez l’entrée sur le CPU
Préparez d’abord vos données dans la mémoire normale de l’hôte. Ici, vous initialisez simplement h_A et h_B avec les valeurs que le GPU additionnera ensuite.
for (int i = 0; i < n; i++) {
h_A[i] = i; h_B[i] = 2 * i;
}Allouez sur le périphérique
Le GPU a besoin de ses propres tampons : appelez donc cudaMalloc pour chaque tableau. Notez que la taille est exprimée en octets, calculée comme le nombre d’éléments multiplié par sizeof(float).
size_t bytes = n * sizeof(float);
cudaMalloc(&d_A, bytes);Copiez les entrées vers le GPU
Déplacez vos tableaux d’entrée vers le GPU avec cudaMemcpy et la direction HostToDevice. Le noyau ne peut voir que les données qui résident sur le périphérique.
cudaMemcpy(d_A, h_A, bytes, cudaMemcpyHostToDevice);
cudaMemcpy(d_B, h_B, bytes, cudaMemcpyHostToDevice);Choisissez la configuration du lancement
Choisissez le nombre de threads par bloc, puis calculez le nombre de blocs couvrant tous les éléments. L’arrondi supérieur garantit que chaque élément dispose d’un thread.
int threads = 256;
int blocks = (n + threads - 1) / threads;Lancez le noyau
Lancez maintenant le noyau avec la syntaxe à triple chevron, en transmettant vos pointeurs de périphérique. Cet appel revient immédiatement pendant que le GPU travaille.
vecAdd<<<blocks, threads>>>(d_A, d_B, d_C, n);Recopiez le résultat
Lorsque le noyau a terminé, rapatriez C avec cudaMemcpyDeviceToHost. Cette copie attend également la fin du lancement avant de s’effectuer.
cudaMemcpy(h_C, d_C, bytes, cudaMemcpyDeviceToHost);Libérez la mémoire du périphérique
La mémoire GPU n’est pas récupérée automatiquement : libérez donc chaque tampon avec cudaFree. Omettre cette étape provoque une fuite de mémoire qui persiste jusqu’à la fin du processus.
cudaFree(d_A); cudaFree(d_B); cudaFree(d_C);L’ordre est sacré
Suivez toujours la même séquence : allouer, copier vers le GPU, lancer, recopier, libérer. Si vous intervertissez les étapes, le noyau lit des données obsolètes ou invalides.
Le code de l’hôte est du C++ ordinaire
Remarquez que la partie hôte est du C++ ordinaire, complété par quelques appels cuda. Il n’y a pas de magie particulière du compilateur en dehors du lancement du noyau.
Vérification rapide
Que devez-vous faire avant de pouvoir lancer le noyau vecAdd ?
Récapitulatif
Vous avez câblé toute la partie hôte de bout en bout : deux ensembles de pointeurs, cudaMalloc, la copie vers le périphérique, le lancement, la copie en retour et cudaFree. Le code standard qui fait fonctionner chaque noyau. ✅
Apprends C++ avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 30
- Leçons
- 120
Questions Fréquemment Posées
La leçon « Câbler la partie hôte » est-elle gratuite ?
Oui — le texte complet de « Câbler la partie hôte » 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 « Câbler la partie hôte » ?
Allouez, copiez, lancez, recopiez, libérez. 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 « Câbler la partie hôte » ?
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 noyau d’addition de vecteurs
- Câbler la partie hôte
- Vérifier le résultat sur le CPU
- Mesurer votre premier gain de vitesse