Επικοινωνήστε μαζί μας
 Διάρκεια 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 για τον προγραμματισμό ετερογενών συσκευών και την εκμετάλλευση του παράλληλου χαρακτήρα τους
  • Προγραμματιστές που επιθυμούν να γράψουν μεταφερτέους και κλιμακώσιμους κώδικες, που μπορούν να εκτελεστούν σε διαφορετικές πλατφόρμες και συσκευές
  • Προγραμματιστές που επιθυμούν να εξερευνήσουν τις χαμηλού επιπέδου πτυχές του ετερογενούς προγραμματισμού και να βελτιστοποιήσουν την απόδοση του κώδικά τους

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


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

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

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