Επικοινωνήστε μαζί μας
 Διάρκεια 28 Ώρες

Εξέλιξη Κομματιού

Εισαγωγή

  • Τι είναι το CUDA;
  • CUDA vs OpenCL vs SYCL
  • Επισκόπηση των δυνατοτήτων και της αρχιτεκτονικής του CUDA
  • Ρύθμιση του Περιβάλλοντος Ανάπτυξης

Έναρξη

  • Δημιουργία ενός νέου έργου CUDA χρησιμοποιώντας το Visual Studio Code
  • Εξερεύνηση της δομής του έργου και των αρχείων
  • Μετατροπή και εκτέλεση του προγράμματος
  • Προβολή της εξόδου χρησιμοποιώντας printf και fprintf

CUDA API

  • Κατανόηση του ρόλου της CUDA API στο πρόγραμμα host
  • Χρήση της CUDA API για να ερωτηθούν πληροφορίες και δυνατότητες συσκευής
  • Χρήση της CUDA API για να αποδώσουν και ακυρώσουν μνήμη συσκευής
  • Χρήση της CUDA API για να αντιγράψουν δεδομένα μεταξύ host και συσκευής
  • Χρήση της CUDA API για να εκτελέσουν kernels και να συγχρονίσουν νήματα
  • Χρήση της CUDA API για να διαχειρίζονται σφάλματα και εξαιρέσεις

CUDA C/C++

  • Κατανόηση του ρόλου του CUDA C/C++ στο πρόγραμμα συσκευής
  • Χρήση του CUDA C/C++ για να γράψουν kernels που εκτελούνται στην GPU και να χειρίζονται δεδομένα
  • Χρήση τύπων δεδομένων, προσδιοριστικών, τελεστών και εκφράσεων του CUDA C/C++
  • Χρήση ενσωματωμένων συναρτήσεων CUDA C/C++, όπως μαθηματικές, ατομικές, warp, κ.λπ.
  • Χρήση ενσωματωμένων μεταβλητών CUDA C/C++, όπως threadIdx, blockIdx, blockDim, κ.λπ.
  • Χρήση βιβλιοθηκών CUDA C/C++, όπως cuBLAS, cuFFT, cuRAND, κ.λπ.

Μοντέλο Μνήμης CUDA

  • Κατανόηση της διαφοράς μεταξύ των μοντέλων μνήμης host και συσκευής
  • Χρήση των χώρων μνήμης CUDA, όπως ολικών, κοινών, σταθερών και τοπικών
  • Χρήση αντικειμένων μνήμης CUDA, όπως δείκτες, πίνακες, υφάσματα (textures) και επιφάνειες (surfaces)
  • Χρήση λειτουργικών τρόπων πρόσβασης μνήμης CUDA, όπως read-only, write-only, read-write, κ.λπ.
  • Χρήση μοντέλου συνέπειας μνήμης CUDA και μηχανισμών συγχρονισμού

Μοντέλο Εκτέλεσης CUDA

  • Κατανόηση της διαφοράς μεταξύ των μοντέλων εκτέλεσης host και συσκευής
  • Χρήση νημάτων, μπλοκ και πλεγμάτων 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 για βελτιστοποίηση προσβάσεων και bandwidth μνήμης
  • Χρήση προφίλ (profiling) και εργαλείων προφίλ CUDA για μέτρηση και βελτίωση χρόνου εκτέλεσης και εκμετάλλευσης πόρων

Απαιτήσεις

  • Κατανόηση της γλώσσας C/C++ και των εννοιών παράλληλης προγραμμάτωσης.
  • Βασικές γνώσεις αρχιτεκτονικής υπολογιστών και ιεραρχίας μνήμης.
  • Εμπειρία με εργαλεία γραμμής ενταλμάτων και επεξεργαστές κώδικα.

Στόχος Κοινό

  • Προγραμματιστές που επιθυμούν να μάθουν πώς να χρησιμοποιούν το CUDA για να προγραμματίσουν GPU της NVIDIA και να εκμεταλλευτούν την παράλληλη ικανότητά τους.
  • Προγραμματιστές που επιθυμούν να γράψουν κώδικα υψηλής απόδοσης και κλιμάκωσης που μπορεί να εκτελείται σε διάφορες συσκευές CUDA.
  • Προγραμματιστές που επιθυμούν να εξερευνήσουν τις χαμηλού επιπέδου πτυχές της προγραμμάτωσης GPU και να βελτιστοποιήσουν την απόδοση του κώδικά τους.

Αριθμός συμμετέχοντων


Τιμή ανά συμμετέχοντα

Εφεξής Μαθήματα

Σχετικές Κατηγορίες