Course Outline

Εισαγωγή

  • Τι είναι το 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 για τη μέτρηση και τη βελτίωση του χρόνου εκτέλεσης και της χρήσης πόρων

Περίληψη και Επόμενα Βήματα

Requirements

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

Ακροατήριο

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

Number of participants



Price per participant

Testimonials (1)

Related Courses

Hardware-Accelerated Video Analytics

14 Hours

GPU Programming with OpenCL

28 Hours

GPU Programming - OpenCL vs CUDA vs ROCm

28 Hours

AMD GPU Programming

28 Hours

ROCm for Windows

21 Hours

Introduction to GPU Programming

21 Hours

GPU Programming with OpenACC

28 Hours

Raster and Vector Graphics (Adobe Photoshop, CorelDraw)

28 Hours

Related Categories