Vecteurs et transformations Thrust
Parallélisme de style STL sur le GPU
Vecteurs et transformations Thrust 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.
La STL de votre GPU
Thrust est une bibliothèque de haut niveau qui ressemble à la STL de C++, mais s'exécute sur le GPU. Vous n'écrivez presque aucun code de noyau vous-même. 🎉
Deux types de vecteurs
Thrust fournit host_vector pour la mémoire du CPU et device_vector pour celle du GPU. Ils ont la même apparence, mais vivent dans des environnements différents.
thrust::host_vector<int> h(100);
thrust::device_vector<int> d(100);Copier d'un environnement à l'autre
L'affectation d'un host_vector à un device_vector déclenche automatiquement un transfert de mémoire. Vous n'avez pas à écrire vous-même le code répétitif de cudaMemcpy.
thrust::device_vector<int> d = h; // host to deviceL'allocation est automatique
Un device_vector alloue et libère la mémoire du GPU pour vous grâce à RAII. Lorsqu'il sort de sa portée, la mémoire est proprement libérée.
Remplissage et séquence
Des outils comme thrust::fill et thrust::sequence initialisent tout un device_vector en un seul appel parallèle, plutôt qu'avec une boucle écrite manuellement.
thrust::sequence(d.begin(), d.end()); // 0,1,2,...Transform associe chaque élément
thrust::transform applique une fonction à chaque élément en parallèle et écrit le résultat dans une plage de sortie. C'est le modèle classique de mappage.
thrust::transform(d.begin(), d.end(),
out.begin(), op);Les foncteurs constituent l'opération
L'opération que vous transmettez est un foncteur : une structure dont l'opérateur () est marqué __host__ __device__ afin de pouvoir s'exécuter sur le GPU.
struct Square { __host__ __device__
float operator()(float x){ return x*x; } };Opérateurs intégrés
Pour les opérations mathématiques courantes, Thrust fournit des foncteurs comme thrust::plus et thrust::multiplies, ce qui vous évite d'en écrire un pour les tâches simples.
thrust::transform(a.begin(), a.end(),
b.begin(), c.begin(), thrust::plus<float>());Deux entrées, une sortie
La forme binaire de transform prend deux plages d'entrée et les combine élément par élément, ce qui convient parfaitement à l'addition élément par élément de vecteurs.
Récupérer le pointeur brut
Besoin de passer à un noyau écrit manuellement ? thrust::raw_pointer_cast vous fournit le pointeur sous-jacent vers la mémoire du GPU à transmettre.
float* p = thrust::raw_pointer_cast(d.data());Moins de code, moins d'erreurs
Thrust masque les allocations, les copies et les configurations de lancement. Vous échangez un peu de contrôle contre du code GPU lisible et sûr qui fonctionne immédiatement.
Vérification rapide
Rappelez-vous comment Thrust applique une opération à tout un vecteur.
Récapitulatif
Vous avez utilisé device_vector pour gérer automatiquement la mémoire, transféré les données par affectation et exécuté transform avec des foncteurs. La puissance du GPU dans le style de la STL. 💪
Questions Fréquemment Posées
La leçon « Vecteurs et transformations Thrust » est-elle gratuite ?
Oui — le texte complet de « Vecteurs et transformations Thrust » 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 « Vecteurs et transformations Thrust » ?
Parallélisme de style STL sur le GPU 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 « Vecteurs et transformations Thrust » ?
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
- cuBLAS GEMM comme il se doit
- Vecteurs et transformations Thrust
- Réduction, balayage et tri avec Thrust
- cuDNN pour l’apprentissage profond