CUDA Academy · Leçon

Arrondir le nombre de blocs vers le haut

(n + threads - 1) / threads pour couvrir tous les éléments.

Leçon 3 sur 413 étapes

Arrondir le nombre de blocs vers le haut est une leçon CUDA Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.

Combien de blocs ?

Vous fixez le nombre de fils d’exécution par bloc, puis devez décider du nombre de blocs à lancer afin que chaque élément du tableau dispose d’un fil d’exécution.

La division entière perd des données

La division entière arrondit vers le bas. Avec 1000 éléments et 256 fils d’exécution, n / threads ne donne que 3 blocs, couvrant seulement 768 éléments et laissant tomber le reste.

Vous devez arrondir vers le haut

Lorsque le nombre ne se divise pas exactement, vous devez ajouter un bloc partiel. L’objectif est une division avec arrondi supérieur, et non une division avec arrondi inférieur.

L’astuce de l’arrondi supérieur

Ajoutez le nombre de fils d’exécution moins un avant de diviser. Cette correction fait passer tout reste au bloc entier suivant sans utiliser de nombres à virgule flottante.

int blocks = (n + threads - 1) / threads;

Pourquoi cela fonctionne

Si n est divisible exactement, le nombre supplémentaire de fils d’exécution moins un est trop petit pour augmenter le quotient. S’il existe un reste, il suffit à faire apparaître un bloc supplémentaire.

Exemple détaillé

Pour 1000 éléments et 256 fils d’exécution : 1000 plus 255 donne 1255, et 1255 divisé par 256 donne 4. Vous obtenez 4 blocs et une couverture complète.

int blocks = (1000 + 256 - 1) / 256; // 4 blocks

Le cas de la division exacte

Pour 512 éléments et 256 threads : 512 plus 255 donnent 767, divisés par 256, soit 2. Aucun bloc supplémentaire gaspillé lorsque la division tombe juste.

Vous en lancez légèrement trop

Le dernier bloc n'est généralement que partiellement rempli, donc quelques threads n'ont aucun élément. Ce n'est pas un problème, car votre vérification des limites les prend en charge.

L'intégrer au lancement

Calculez le nombre de blocs, puis transmettez les deux nombres entre les triples chevrons afin de répartir le travail sur toute la grille.

int threads = 256;
int blocks = (n + threads - 1) / threads;
add<<<blocks, threads>>>(a, b, out, n);

L'associer à la protection

L'arrondi supérieur et la vérification if (i < n) fonctionnent ensemble. L'une garantit la couverture, l'autre protège les threads en réserve.

Un petit utilitaire réutilisable

De nombreux projets placent cette logique dans une petite fonction afin que la logique d'arrondi supérieur soit centralisée et ne soit jamais mal saisie. ✨

inline int ceilDiv(int n, int d) { return (n + d - 1) / d; }

Vérification rapide

Comptez les blocs nécessaires.

Récapitulatif

Vous avez appris à dimensionner la grille avec (n + threads - 1) / threads. Cette astuce de division avec arrondi supérieur couvre chaque élément, même lorsque le nombre ne se divise pas exactement. 🎯

Gratuit pour commencer

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 « Arrondir le nombre de blocs vers le haut » est-elle gratuite ?

Oui — le texte complet de « Arrondir le nombre de blocs vers le haut » 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 « Arrondir le nombre de blocs vers le haut » ?

(n + threads - 1) / threads pour couvrir tous les éléments. 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 3 sur 4.

Combien de temps prend la leçon « Arrondir le nombre de blocs vers le haut » ?

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

  1. La formule d’index classique
  2. Se protéger contre les dépassements de plage
  3. Arrondir le nombre de blocs vers le haut
  4. Boucles avec pas de grille
← Retour à CUDA Academy