Ευχαριστούμε που στάλθηκε η αποσαφήνισή σας! Ένα μέλος της ομάδου μας θα επικοινωνήσει μαζί σας σύντομα.
Ευχαριστούμε για την εκδήλωση κράτησης! Ένας από τους συνεργάτες μας θα επικοινωνήσει μαζί σας σύντομα.
Διάρκεια 28 Ώρες
Εξέλιξη Κομματιού
Εισαγωγή
- Τι είναι το OpenCL;
- OpenCL έναντι CUDA έναντι SYCL
- Επισκόπηση των δυνατοτήτων και της αρχιτεκτονικής του OpenCL
- Διαμόρφωση του Περιβάλλοντος Ανάπτυξης
Ξεκινώντας
- Δημιουργία νέου έργου OpenCL χρησιμοποιώντας Visual Studio Code
- Εξερεύνηση της δομής του έργου και των αρχείων
- Μετάφραση και εκτέλεση του προγράμματος
- Εμφάνιση της εξόδου χρησιμοποιώντας printf και fprintf
API του OpenCL
- Κατανόηση του ρόλου του API του OpenCL στο πρόγραμμα της κεντρικής μηχανής
- Χρήση του API του OpenCL για την ερώτηση πληροφοριών συσκευής και δυνατοτήτων
- Χρήση του API του OpenCL για τη δημιουργία συνεδριών, ουρών εντολών, buffers, kernels και γεγονότων
- Χρήση του API του OpenCL για την εντοπίσει εντολών, όπως ανάγνωση, εγγραφή, αντιγραφή, χαρτογράφηση, απεξαρτώμενη χαρτογράφηση, εκτέλεση και αναμονή
- Χρήση του API του OpenCL για τη διαχείριση σφαλμάτων και εξαιρέσεων
OpenCL C
- Κατανόηση του ρόλου της OpenCL C στο πρόγραμμα της συσκευής
- Χρήση της OpenCL C για τη δημιουργία kernels που εκτελούνται στη συσκευή και χειρίζονται δεδομένα
- Χρήση τύπων δεδομένων, προσδιοριστικών, τελεστών και εκφράσεων της OpenCL C
- Χρήση εσωτερικών συναρτήσεων OpenCL C, όπως μαθηματικές, γεωμετρικές, σχετικές, κ.λπ.
- Χρήση επεκτάσεων και βιβλιοθηκών OpenCL C, όπως ατομικές, εικόνες, cl_khr_fp16, κ.λπ.
Μοντέλο Μνήμης του OpenCL
- Κατανόηση της διαφοράς μεταξύ των μοντέλων μνήμης της κεντρικής μηχανής και της συσκευής
- Χρήση χώρων μνήμης OpenCL, όπως παγκόσμια, τοπική, σταθερή και ιδιωτική
- Χρήση αντικειμένων μνήμης OpenCL, όπως buffers, εικόνες και σωλήνες
- Χρήση τρόπων πρόσβασης μνήμης OpenCL, όπως μόνο-ανάγνωση, μόνο-εγγραφή, ανάγνωση-εγγραφή, κ.λπ.
- Χρήση μοντέλου συνέπειας μνήμης OpenCL και μηχανισμών συγχρονισμού
Μοντέλο Εκτέλεσης του OpenCL
- Κατανόηση της διαφοράς μεταξύ των μοντέλων εκτέλεσης της κεντρικής μηχανής και της συσκευής
- Χρήση στοιχείων εργασίας, ομάδων εργασίας και ND-ranges του OpenCL για τον ορισμό της παράλληλης επεξεργασίας
- Χρήση συναρτήσεων στοιχείων εργασίας OpenCL, όπως get_global_id, get_local_id, get_group_id, κ.λπ.
- Χρήση συναρτήσεων ομάδων εργασίας OpenCL, όπως barrier, work_group_reduce, work_group_scan, κ.λπ.
- Χρήση συναρτήσεων συσκευής OpenCL, όπως get_num_groups, get_global_size, get_local_size, κ.λπ.
Επιδιόρθωση Σφαλμάτων
- Κατανόηση των συνηθισμένων σφαλμάτων και bugs στα προγράμματα OpenCL
- Χρήση του επιδιορθωτή σφαλμάτων του Visual Studio Code για ελέγχο μεταβλητών, σημείων διάλειψης, στοίβα κλήσεων, κ.λπ.
- Χρήση του CodeXL για επιδιόρθωση σφαλμάτων και ανάλυση προγραμμάτων OpenCL σε συσκευές AMD
- Χρήση του Intel VTune για επιδιόρθωση σφαλμάτων και ανάλυση προγραμμάτων OpenCL σε συσκευές Intel
- Χρήση του NVIDIA Nsight για επιδιόρθωση σφαλμάτων και ανάλυση προγραμμάτων OpenCL σε συσκευές NVIDIA
Βελτιστοποίηση
- Κατανόηση των παραγόντων που επηρεάζουν την απόδοση των προγραμμάτων OpenCL
- Χρήση τύπων διανυσμάτων δεδομένων OpenCL και τεχνικών διανυσματικοποίησης για βελτίωση της αρίθμητης απόδοσης
- Χρήση τεχνικών ανάπτυξης βρόχων και tileing βρόχων OpenCL για μείωση του ελέγχου του κόστους και αύξηση της τοπικότητας
- Χρήση τοπικής μνήμης και συναρτήσεων τοπικής μνήμης OpenCL για βελτιστοποίηση των προσβάσεων μνήμης και της ζώνης
- Χρήση προφίλ και εργαλείων προφίλ OpenCL για μέτρηση και βελτίωση του χρόνου εκτέλεσης και της εκμετάλλευσης πόρων
Απαιτήσεις
- Κατανόηση της γλώσσας C/C++ και των εννοιών παράλληλου προγραμματισμού
- Βασικές γνώσεις για την αρχιτεκτονική υπολογιστών και την ιεραρχία μνήμης
- Εμπειρία με εργαλεία γραμμής εντολών και επεξεργαστές κώδικα
Συμμετέχοντες
- Προγραμματιστές που επιθυμούν να μάθουν πώς να χρησιμοποιούν το OpenCL για τον προγραμματισμό ετερογενών συσκευών και την εκμετάλλευση του παράλληλου χαρακτήρα τους
- Προγραμματιστές που επιθυμούν να γράψουν μεταφερτέους και κλιμακώσιμους κώδικες, που μπορούν να εκτελεστούν σε διαφορετικές πλατφόρμες και συσκευές
- Προγραμματιστές που επιθυμούν να εξερευνήσουν τις χαμηλού επιπέδου πτυχές του ετερογενούς προγραμματισμού και να βελτιστοποιήσουν την απόδοση του κώδικά τους