Επικοινωνήστε μαζί μας

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

Εισαγωγή

  • Τι είναι το 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 Ώρες

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


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

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

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