Ευχαριστούμε που στάλθηκε η αποσαφήνισή σας! Ένα μέλος της ομάδου μας θα επικοινωνήσει μαζί σας σύντομα.
Ευχαριστούμε για την εκδήλωση κράτησης! Ένας από τους συνεργάτες μας θα επικοινωνήσει μαζί σας σύντομα.
Εξέλιξη Κομματιού
Εισαγωγή
- Τι είναι το CUDA;
- CUDA έναντι OpenCL έναντι SYCL
- Επισκόπηση των χαρακτηριστικών και της αρχιτεκτονικής του CUDA
- Ρύθμιση του Περιβάλλοντος Ανάπτυξης
Ξεκινώντας
- Δημιουργία ενός νέου έργου CUDA χρησιμοποιώντας το Visual Studio Code
- Εξερεύνηση της δομής και των αρχείων του έργου
- Μεταγλώττιση και εκτέλεση του προγράμματος
- Εμφάνιση της εξόδου χρησιμοποιώντας 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++, όπως μαθηματικές, atomic, warp κ.λπ.
- Χρήση των ενσωματωμένων μεταβλητών της CUDA C/C++, όπως threadIdx, blockIdx, blockDim κ.λπ.
- Χρήση των βιβλιοθηκών CUDA C/C++, όπως cuBLAS, cuFFT, cuRAND κ.λπ.
Μοντέλο Μνήμης CUDA
- Κατανόηση της διαφοράς μεταξύ των μοντέλων μνήμης κεντρικού υπολογιστή και συσκευής
- Χρήση των χώρων μνήμης του CUDA, όπως global, shared, constant και local
- Χρήση των αντικειμένων μνήμης του CUDA, όπως δείκτες, πίνακες, textures και surfaces
- Χρήση των λειτουργιών πρόσβασης μνήμης του CUDA, όπως μόνο ανάγνωσης, μόνο εγγραφής, ανάγνωσης-εγγραφής κ.λπ.
- Χρήση του μοντέλου συνέπειας μνήμης του CUDA και των μηχανισμών συγχρονισμού
Μοντέλο Εκτέλεσης CUDA
- Κατανόηση της διαφοράς μεταξύ των μοντέλων εκτέλεσης κεντρικού υπολογιστή και συσκευής
- Χρήση των νημάτων, μπλοκ και πλεγμάτων του CUDA για τον ορισμό του παραλληλισμού
- Χρήση των συναρτήσεων νημάτων του CUDA, όπως threadIdx, blockIdx, blockDim κ.λπ.
- Χρήση των συναρτήσεων μπλοκ του CUDA, όπως __syncthreads, __threadfence_block κ.λπ.
- Χρήση των συναρτήσεων πλέγματος του CUDA, όπως gridDim, gridSync, cooperative groups κ.λπ.
Αποσφαλμάτωση
- Κατανόηση των συνηθισμένων σφαλμάτων και σφαλμάτων προγραμματισμού σε προγράμματα CUDA
- Χρήση του αποσφαλματωτή του Visual Studio Code για επιθεώρηση μεταβλητών, σημείων διακοπής, στοίβας κλήσεων κ.λπ.
- Χρήση του CUDA-GDB για αποσφαλμάτωση προγραμμάτων CUDA σε Linux
- Χρήση του CUDA-MEMCHECK για εντοπισμό σφαλμάτων μνήμης και διαρροών
- Χρήση του NVIDIA Nsight για αποσφαλμάτωση και ανάλυση προγραμμάτων CUDA σε Windows
Βελτιστοποίηση
- Κατανόηση των παραγόντων που επηρεάζουν την απόδοση των προγραμμάτων CUDA
- Χρήση τεχνικών coalescing του CUDA για βελτίωση της απόδοσης μνήμης
- Χρήση τεχνικών caching και prefetching του CUDA για μείωση της καθυστέρησης μνήμης
- Χρήση τεχνικών κοινής μνήμης και τοπικής μνήμης του CUDA για βελτιστοποίηση των προσβάσεων στη μνήμη και του εύρους ζώνης
- Χρήση του profiling του CUDA και των εργαλείων profiling για μέτρηση και βελτίωση του χρόνου εκτέλεσης και της χρήσης πόρων
Σύνοψη και Επόμενα Βήματα
Απαιτήσεις
- Κατανόηση της γλώσσας C/C++ και των εννοιών του παράλληλου προγραμματισμού
- Βασικές γνώσεις αρχιτεκτονικής υπολογιστών και ιεραρχίας μνήμης
- Εμπειρία με εργαλεία γραμμής εντολών και επεξεργαστές κώδικα
Κοινό
- Προγραμματιστές που επιθυμούν να μάθουν πώς να χρησιμοποιούν το CUDA για να προγραμματίζουν κάρτες γραφικών NVIDIA και να εκμεταλλεύονται τον παραλληλισμό τους
- Προγραμματιστές που επιθυμούν να γράφουν κώδικα υψηλής απόδοσης και κλιμακούμενο που μπορεί να εκτελείται σε διαφορετικές συσκευές CUDA
- Προγραμματιστές που επιθυμούν να εξερευνήσουν τις χαμηλού επιπέδου πτυχές του προγραμματισμού GPU και να βελτιστοποιήσουν την απόδοση του κώδικά τους
28 Ώρες