Ευχαριστούμε που στάλθηκε η αποσαφήνισή σας! Ένα μέλος της ομάδου μας θα επικοινωνήσει μαζί σας σύντομα.
Ευχαριστούμε για την εκδήλωση κράτησης! Ένας από τους συνεργάτες μας θα επικοινωνήσει μαζί σας σύντομα.
Εξέλιξη Κομματιού
Εισαγωγή
- Τι είναι το CUDA;
- CUDA vs OpenCL vs SYCL
- Επισκόπηση των χαρακτηριστικών και της αρχιτεκτονικής του CUDA
- Δημιουργία Αναπτυξιακού Περιβάλλοντος
Ξεκινώντας
- Δημιουργία νέου έργου CUDA με χρήση Visual Studio κώδικα
- Εξερεύνηση της δομής και των αρχείων του έργου
- Μεταγλώττιση και εκτέλεση του προγράμματος
- Εμφάνιση της εξόδου με χρήση printf και fprintf
CUDA API
- Κατανόηση του ρόλου του CUDA API στο πρόγραμμα υποδοχής
- Χρήση CUDA API για αναζήτηση πληροφοριών και δυνατοτήτων συσκευής
- Χρήση CUDA API για εκχώρηση και κατανομή μνήμης συσκευής
- Χρήση CUDA API για αντιγραφή δεδομένων μεταξύ κεντρικού υπολογιστή και συσκευής
- Χρήση CUDA API για εκκίνηση πυρήνων και συγχρονισμό νημάτων
- Χρήση CUDA API για τη διαχείριση σφαλμάτων και εξαιρέσεων
CUDA C/C++
- Κατανόηση του ρόλου του CUDA C/C++ στο πρόγραμμα της συσκευής
- Χρησιμοποιώντας το CUDA C/C++ για να γράψετε πυρήνες που εκτελούνται στο GPU και να χειριστούν δεδομένα
- Χρησιμοποιώντας τύπους δεδομένων CUDA C/C++, προσδιοριστές, τελεστές και εκφράσεις
- Χρήση ενσωματωμένων συναρτήσεων CUDA C/C++, όπως μαθηματικά, ατομική, παραμόρφωση κ.λπ.
- Χρησιμοποιώντας ενσωματωμένες μεταβλητές CUDA C/C++, όπως threadIdx, blockIdx, blockDim κ.λπ.
- Χρήση βιβλιοθηκών CUDA C/C++, όπως cuBLAS, CUFFT, CURAND κ.λπ.
Μοντέλο μνήμης CUDA
- Κατανόηση της διαφοράς μεταξύ μοντέλων μνήμης κεντρικού υπολογιστή και συσκευής
- Χρήση χώρων μνήμης CUDA, όπως καθολικοί, κοινόχρηστοι, σταθεροί και τοπικοί
- Χρήση αντικειμένων μνήμης CUDA, όπως δείκτες, πίνακες, υφές και επιφάνειες
- Χρήση λειτουργιών πρόσβασης στη μνήμη CUDA, όπως μόνο για ανάγνωση, μόνο εγγραφή, ανάγνωση-εγγραφή κ.λπ.
- Χρήση μοντέλου συνέπειας μνήμης CUDA και μηχανισμών συγχρονισμού
Μοντέλο εκτέλεσης CUDA
- Κατανόηση της διαφοράς μεταξύ μοντέλων εκτέλεσης κεντρικού υπολογιστή και συσκευής
- Χρησιμοποιώντας νήματα, μπλοκ και πλέγματα CUDA για να ορίσετε τον παραλληλισμό
- Χρήση συναρτήσεων νήματος CUDA, όπως threadIdx, blockIdx, blockDim κ.λπ.
- Χρήση συναρτήσεων μπλοκ CUDA, όπως __syncthreads, __threadfence_block, κ.λπ.
- Χρήση λειτουργιών πλέγματος CUDA, όπως gridDim, gridSync, συνεργατικές ομάδες κ.λπ.
Εντοπισμός σφαλμάτων
- Κατανόηση των κοινών σφαλμάτων και σφαλμάτων στα προγράμματα CUDA
- Χρήση του προγράμματος εντοπισμού σφαλμάτων κώδικα Visual Studio για επιθεώρηση μεταβλητών, σημείων διακοπής, στοίβας κλήσεων κ.λπ.
- Χρήση CUDA-GDB για εντοπισμό σφαλμάτων προγραμμάτων CUDA στο Linux
- Χρησιμοποιώντας το CUDA-MEMCHECK για τον εντοπισμό σφαλμάτων και διαρροών μνήμης
- Χρήση NVIDIA Nsight για εντοπισμό σφαλμάτων και ανάλυση προγραμμάτων CUDA στα Windows
Βελτιστοποίηση
- Κατανόηση των παραγόντων που επηρεάζουν την απόδοση των προγραμμάτων CUDA
- Χρήση τεχνικών CUDA coalescing για τη βελτίωση της απόδοσης μνήμης
- Χρήση τεχνικών CUDA caching και prefetching για μείωση του λανθάνοντος χρόνου της μνήμης
- Χρησιμοποιώντας CUDA κοινόχρηστη μνήμη και τεχνικές τοπικής μνήμης για τη βελτιστοποίηση των προσβάσεων στη μνήμη και του εύρους ζώνης
- Χρήση εργαλείων δημιουργίας προφίλ και προφίλ CUDA για τη μέτρηση και τη βελτίωση του χρόνου εκτέλεσης και της χρήσης πόρων
Περίληψη και Επόμενα Βήματα
Απαιτήσεις
- Κατανόηση της γλώσσας C/C++ και των εννοιών του παράλληλου προγραμματισμού
- Βασικές γνώσεις αρχιτεκτονικής υπολογιστών και ιεραρχίας μνήμης
- Εμπειρία με εργαλεία γραμμής εντολών και επεξεργαστές κώδικα
Ακροατήριο
- Προγραμματιστές που επιθυμούν να μάθουν πώς να χρησιμοποιούν το CUDA για να προγραμματίζουν NVIDIA GPU και να εκμεταλλεύονται τον παραλληλισμό τους
- Προγραμματιστές που επιθυμούν να γράψουν κώδικα υψηλής απόδοσης και κλιμάκωσης που μπορεί να εκτελεστεί σε διαφορετικές συσκευές CUDA
- Προγραμματιστές που επιθυμούν να εξερευνήσουν τις πτυχές χαμηλού επιπέδου του GPU προγραμματισμού και να βελτιστοποιήσουν την απόδοση του κώδικα τους
28 Ώρες