Ευχαριστούμε που στάλθηκε η αποσαφήνισή σας! Ένα μέλος της ομάδου μας θα επικοινωνήσει μαζί σας σύντομα.
Ευχαριστούμε για την εκδήλωση κράτησης! Ένας από τους συνεργάτες μας θα επικοινωνήσει μαζί σας σύντομα.
Εξέλιξη Κομματιού
Εισαγωγή
- Τι είναι ο προγραμματισμός GPU;
- Γιατί να χρησιμοποιήσετε τον προγραμματισμό GPU;
- Ποιες είναι οι προκλήσεις και τα αντισταθμίσματα του προγραμματισμού GPU;
- Ποια είναι τα πλαίσια (frameworks) για προγραμματισμό GPU;
- Επιλέγοντας το κατάλληλο framework για την εφαρμογή σας
OpenCL
- Τι είναι το OpenCL;
- Ποια είναι τα πλεονεκτήματα και μειονεκτήματα του OpenCL;
- Ρύθμιση του περιβάλλοντος ανάπτυξης για OpenCL
- Δημιουργία ενός βασικού προγράμματος OpenCL που εκτελεί πρόσθεση διανυσμάτων
- Χρήση του OpenCL API για ερωτήματα πληροφοριών συσκευής, δέσμευση και αποδέσμευση μνήμης συσκευής, αντιγραφή δεδομένων μεταξύ host και device, εκκίνηση kernels και συγχρονισμό νημάτων
- Χρήση της γλώσσας OpenCL C για τη συγγραφή kernels που εκτελούνται στη συσκευή και χειρίζονται δεδομένα
- Χρήση των ενσωματωμένων συναρτήσεων, μεταβλητών και βιβλιοθηκών του OpenCL για την εκτέλεση συνήθων εργασιών και λειτουργιών
- Χρήση των χώρων μνήμης του OpenCL, όπως καθολική (global), τοπική (local), σταθερή (constant) και ιδιωτική (private), για βελτιστοποίηση μεταφορών δεδομένων και προσβάσεων μνήμης
- Χρήση του μοντέλου εκτέλεσης του OpenCL για τον έλεγχο των work-items, work-groups και ND-ranges που ορίζουν τον παραλληλισμό
- Αποσφαλμάτωση και δοκιμή προγραμμάτων OpenCL χρησιμοποιώντας εργαλεία όπως το CodeXL
- Βελτιστοποίηση προγραμμάτων OpenCL χρησιμοποιώντας τεχνικές όπως coalescing, caching, prefetching και profiling
CUDA
- Τι είναι το CUDA;
- Ποια είναι τα πλεονεκτήματα και μειονεκτήματα του CUDA;
- Ρύθμιση του περιβάλλοντος ανάπτυξης για CUDA
- Δημιουργία ενός βασικού προγράμματος CUDA που εκτελεί πρόσθεση διανυσμάτων
- Χρήση του CUDA API για ερωτήματα πληροφοριών συσκευής, δέσμευση και αποδέσμευση μνήμης συσκευής, αντιγραφή δεδομένων μεταξύ host και device, εκκίνηση kernels και συγχρονισμό νημάτων
- Χρήση της γλώσσας CUDA C/C++ για τη συγγραφή kernels που εκτελούνται στη συσκευή και χειρίζονται δεδομένα
- Χρήση των ενσωματωμένων συναρτήσεων, μεταβλητών και βιβλιοθηκών του CUDA για την εκτέλεση συνήθων εργασιών και λειτουργιών
- Χρήση των χώρων μνήμης του CUDA, όπως καθολική (global), κοινόχρηστη (shared), σταθερή (constant) και τοπική (local), για βελτιστοποίηση μεταφορών δεδομένων και προσβάσεων μνήμης
- Χρήση του μοντέλου εκτέλεσης του CUDA για τον έλεγχο των νημάτων (threads), των μπλοκ (blocks) και των πλεγμάτων (grids) που ορίζουν τον παραλληλισμό
- Αποσφαλμάτωση και δοκιμή προγραμμάτων CUDA χρησιμοποιώντας εργαλεία όπως CUDA-GDB, CUDA-MEMCHECK και NVIDIA Nsight
- Βελτιστοποίηση προγραμμάτων CUDA χρησιμοποιώντας τεχνικές όπως coalescing, caching, prefetching και profiling
ROCm
- Τι είναι το ROCm;
- Ποια είναι τα πλεονεκτήματα και μειονεκτήματα του ROCm;
- Ρύθμιση του περιβάλλοντος ανάπτυξης για ROCm
- Δημιουργία ενός βασικού προγράμματος ROCm που εκτελεί πρόσθεση διανυσμάτων
- Χρήση του ROCm API για ερωτήματα πληροφοριών συσκευής, δέσμευση και αποδέσμευση μνήμης συσκευής, αντιγραφή δεδομένων μεταξύ host και device, εκκίνηση kernels και συγχρονισμό νημάτων
- Χρήση της γλώσσας ROCm C/C++ για τη συγγραφή kernels που εκτελούνται στη συσκευή και χειρίζονται δεδομένα
- Χρήση των ενσωματωμένων συναρτήσεων, μεταβλητών και βιβλιοθηκών του ROCm για την εκτέλεση συνήθων εργασιών και λειτουργιών
- Χρήση των χώρων μνήμης του ROCm, όπως καθολική (global), τοπική (local), σταθερή (constant) και ιδιωτική (private), για βελτιστοποίηση μεταφορών δεδομένων και προσβάσεων μνήμης
- Χρήση του μοντέλου εκτέλεσης του ROCm για τον έλεγχο των νημάτων (threads), των μπλοκ (blocks) και των πλεγμάτων (grids) που ορίζουν τον παραλληλισμό
- Αποσφαλμάτωση και δοκιμή προγραμμάτων ROCm χρησιμοποιώντας εργαλεία όπως το ROCm Debugger και το ROCm Profiler
- Βελτιστοποίηση προγραμμάτων ROCm χρησιμοποιώντας τεχνικές όπως coalescing, caching, prefetching και profiling
Σύγκριση
- Σύγκριση των χαρακτηριστικών, των επιδόσεων και της συμβατότητας των OpenCL, CUDA και ROCm
- Αξιολόγηση προγραμμάτων GPU χρησιμοποιώντας benchmarks και μετρικές
- Εκμάθηση των βέλτιστων πρακτικών και συμβουλών για προγραμματισμό GPU
- Εξερεύνηση των τρεχουσών και μελλοντικών τάσεων και προκλήσεων του προγραμματισμού GPU
Σύνοψη και Επόμενα Βήματα
Απαιτήσεις
- Κατανόηση της γλώσσας C/C++ και εννοιών παράλληλου προγραμματισμού
- Βασικές γνώσεις αρχιτεκτονικής υπολογιστών και ιεραρχίας μνήμης
- Εμπειρία με εργαλεία γραμμής εντολών και επεξεργαστές κώδικα
Κοινό-στόχος
- Προγραμματιστές που επιθυμούν να μάθουν πώς να χρησιμοποιούν διαφορετικά πλαίσια (frameworks) για προγραμματισμό GPU και να συγκρίνουν τα χαρακτηριστικά, τις επιδόσεις και τη συμβατότητά τους
- Προγραμματιστές που επιθυμούν να γράφουν φορητό και κλιμακούμενο κώδικα που μπορεί να εκτελείται σε διαφορετικές πλατφόρμες και συσκευές
- Προγραμματιστές που επιθυμούν να εξερευνήσουν τα αντισταθμίσματα (trade-offs) και τις προκλήσεις του προγραμματισμού GPU και της βελτιστοποίησης
28 Ώρες