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