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

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

Εισαγωγή στον Υπολογισμό Επιταχυνόμενο από GPU

  • Ετερογενής υπολογισμός και αρχιτεκτονική CPU-GPU.
  • Χώροι εκτέλεσης και μνήμης του CUDA.
  • Μεταγλώττιση κώδικα CUDA C++ με nvcc και CMake.
  • Επαλήθευση του περιβάλλοντος ανάπτυξης GPU.

Παράλληλοι Αλγόριθμοι με Thrust και CUB

  • Ταξινόμηση, αναγωγή (reduce) και μετασχηματισμός επιταχυνόμενοι από GPU.
  • Αναδιαμόρφωση αλγόριθμων STL για εκτέλεση σε GPU.
  • Device vectors του Thrust και πολιτικές εκτέλεσης.
  • Πρωτόγονα στοιχεία (primitives) καθολικής εμβέλειας συσκευής CUB για εξατομικευμένα pipelines.

Αρχιτεκτονική Μνήμης GPU και Διαχείριση

  • Τύποι μνήμης global, constant και texture.
  • Εκχωρητική κατανομή μεταφοράς μνήμης συσκευής.
  • Unified Memory για απλοποιημένη πρόσβαση στα δεδομένα.
  • Συμπλοκή μνήμης (memory coalescing) και βελτιστορία προτύπων πρόσβασης.

Ασύγχρονη Εκτέλεση με CUDA Streams

  • Δημιουργία και διαχείριση CUDA streams.
  • Επικάλυψη εκτέλεσης kernels με μεταφορές δεδομένων.
  • CUDA events για διαχείριση εξαρτήσεων.
  • Priorities streams και ρύθμιση συνέλευσης (concurrency).

Συγγραφή Εξατομικευμένων CUDA Kernels

  • Το μοντέλο προγραμματισμού SIMT και η εκτέλεση warp.
  • Ρύθμιση εκκίνησης kernel και βρόχοι grid-stride.
  • Δείκτης νήματος και πολυδιάστατα grids.
  • Χειρισμός σφαλμάτων και έλεγχοι API runtime CUDA.

Ιεραρχία Νημάτων και Μοντέλο Εκτέλεσης

  • Grids, blocks και νήματα στον κώδικα συσκευής.
  • Πρωτόγονα στοιχεία επιπέδου warp και λειτουργίες ballot.
  • Συγχρονισμός και φράγματα (barriers) σε επίπεδο block.
  • Ανάλυση occupancy και χρήσης πόρων.

Cooperative Groups για Ευέλικτη Παραλληλία

  • Το API cooperative_groups και οι τύποι ομάδων.
  • Κάτοικοι νημάτων (thread-block tiles) και tiled_partition.
  • Εκκινήσεις συντονισμού σε επίπεδο grid.
  • Προτύπα συγχρονισμού πολλαπλών grids.

Τεχνικές Βελτιστοποίησης Shared Memory

  • Τράπεζες shared memory και αποφυγή συγκρούσεων τραπεζών.
  • Στρατηγικές tiling για πράξεις πινάκων.
  • Shared memory ως cache διαχειριζόμενο από τον χρήστη.
  • cuda::shared_memory_mdspan για πολυδιάστατες όψεις.

Fusion Kernels και Προηγμένα Παράλληλα Πρότυπα

  • Ενοποίηση πολλαπλών kernels για τη μείωση του overhead εκκίνησης.
  • Scan, reduce-by-key και αλγόριθμοι τμηματοποιημένοι (segmented).
  • Λειτουργίες atomic και δομές δεδομένων χωρίς κλειδιά (lock-free).
  • Warp-aggregated atomics για throughput.

Profile και Βελτιστοποίηση με Nsight Systems

  • Ανάλυση χρονικού γραμμής δραστηριότητας CPU και GPU.
  • Εντοπισμός περιορισμών μεταφοράς μνήμης.
  • Profile απόδοσης kernels και occupancy.
  • Επαναληπτική βελτιστοποίηση με το Nsight Compute.

Σύγχρονα Χαρακτηριστικά C++ στον Κώδικα Συσκευής CUDA

  • Lambdas, constexpr και auto στα kernels.
  • Παράλληλοι αλγόριθμοι C++17 και πολιτικές εκτέλεσης.
  • Concepts και ranges C++20 στη συσκευή.
  • Υποστήριξη C++23 στο nvcc και CCCL 3.x.

CUDA Graphs και Προηγμένη Ασύγχρονη Λειτουργία

  • Ορισμός και εκκίνηση CUDA graphs.
  • Ανάλυση graph από την εκτέλεση stream.
  • Ενημέρωση graph και κόμβους συνθηματικής εκτέλεσης.
  • Μείωση καθυστέρησης εκκίνησης για επαναληπτικά φορτία εργασίας.

Πρότυπα Ενσωμάτωσης για Υφιστάμενες Εφαρμογές

  • Συσκευασία κώδικα GPU πίσω από διεπαφές C++.
  • Διαχείριση πολλαπλών GPUs και συστημάτων NUMA.
  • Ενσωμάτωση συστήματος κατασκευής με CMake και CUDA.
  • Αποσφαλμάτωση κώδικα συσκευής με cuda-gdb.

Σύνοψη και Βέλτιστες Πρακτικές

  • Επιλογή μεταξύ Thrust, CUB και εξατομικευμένων kernels.
  • Φορητότητα απόδοσης σε αρχιτεκτονικές GPU.
  • Οργάνωση κώδικα και RAII για πόρους CUDA.
  • Επόμενα βήματα και προχωρημένες διαδρομές μάθησης CUDA.

Απαιτήσεις

  • Βασική αρμοδιότητα C++ συμπεριλαμβανομένων των lambda expressions, templates και STL.
  • Γνωριμία με τυπικούς αλγόριθμους, containers και iterators.
  • Άνεση με βρόχους (loops), συνθήκες (conditionals) και συναρτήσεις.
  • Δεν απαιτείται προηγούμενη γνώση CUDA ή GPU προγραμματισμού.

Κοινό Στόχος

  • Προγραμματιστές C++ που επιθυμούν να επιταχύνουν εφαρμογές έντονου υπολογιστικού φόρτου με χρήση GPU.
  • Μηχανικοί λογισμικού που μεταβαίνουν από προγραμματισμό αποκλειστικά σε CPU προς ετερογενή παράλληλο προγραμματισμό.
  • Μηχανικοί απόδοσης και υπολογιστικοί αναλυτές (quantitative developers) που εργάζονται με μεγάλα σύνολα δεδομένων.
 8 Ώρες

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


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

Σχόλια (3)

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

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