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

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

Εισαγωγή

  • Τι είναι η OpenCL;
  • OpenCL vs CUDA vs SYCL
  • Επισκόπηση των χαρακτηριστικών και της αρχιτεκτονικής της OpenCL
  • Ρύθμιση του Περιβάλλοντος Ανάπτυξης

Ξεκινώντας

  • Δημιουργία ενός νέου έργου OpenCL χρησιμοποιώντας το Visual Studio Code
  • Εξερεύνηση της δομής και των αρχείων του έργου
  • Μεταγλώττιση και εκτέλεση του προγράμματος
  • Εμφάνιση της εξόδου χρησιμοποιώντας printf και fprintf

OpenCL API

  • Κατανόηση του ρόλου του OpenCL API στο πρόγραμμα του host
  • Χρήση του OpenCL API για την ανάκτηση πληροφοριών και δυνατοτήτων της συσκευής
  • Χρήση του OpenCL API για τη δημιουργία contexts, command queues, buffers, kernels και events
  • Χρήση του OpenCL API για την εισαγωγή εντολών, όπως read, write, copy, map, unmap, execute και wait
  • Χρήση του OpenCL API για τον χειρισμό σφαλμάτων και εξαιρέσεων

OpenCL C

  • Κατανόηση του ρόλου της OpenCL C στο πρόγραμμα της συσκευής
  • Χρήση της OpenCL C για τη συγγραφή kernels που εκτελούνται στη συσκευή και χειρίζονται δεδομένα
  • Χρήση των τύπων δεδομένων, των qualifiers, των τελεστών και των εκφράσεων της OpenCL C
  • Χρήση των ενσωματωμένων συναρτήσεων της OpenCL C, όπως μαθηματικές, γεωμετρικές, σχεσιακές κ.λπ.
  • Χρήση των επεκτάσεων και βιβλιοθηκών της OpenCL C, όπως atomic, image, cl_khr_fp16 κ.λπ.

Μοντέλο Μνήμης OpenCL

  • Κατανόηση της διαφοράς μεταξύ του μοντέλου μνήμης του host και της συσκευής
  • Χρήση των χώρων μνήμης της OpenCL, όπως global, local, constant και private
  • Χρήση των αντικειμένων μνήμης της OpenCL, όπως buffers, images και pipes
  • Χρήση των τρόπων πρόσβασης μνήμης της OpenCL, όπως read-only, write-only, read-write κ.λπ.
  • Χρήση του μοντέλου συνέπειας μνήμης και των μηχανισμών συγχρονισμού της OpenCL

Μοντέλο Εκτέλεσης OpenCL

  • Κατανόηση της διαφοράς μεταξύ του μοντέλου εκτέλεσης του host και της συσκευής
  • Χρήση των work-items, work-groups και ND-ranges της OpenCL για τον ορισμό της παραλληλίας
  • Χρήση των συναρτήσεων work-item, όπως get_global_id, get_local_id, get_group_id κ.λπ.
  • Χρήση των συναρτήσεων work-group, όπως barrier, work_group_reduce, work_group_scan κ.λπ.
  • Χρήση των συναρτήσεων συσκευής, όπως get_num_groups, get_global_size, get_local_size κ.λπ.

Εντοπισμός Σφαλμάτων

  • Κατανόηση των συνηθισμένων σφαλμάτων και bugs σε προγράμματα OpenCL
  • Χρήση του debugger του Visual Studio Code για επιθεώρηση μεταβλητών, σημείων διακοπής, στοίβας κλήσεων κ.λπ.
  • Χρήση του CodeXL για τον εντοπισμό σφαλμάτων και την ανάλυση προγραμμάτων OpenCL σε συσκευές AMD
  • Χρήση του Intel VTune για τον εντοπισμό σφαλμάτων και την ανάλυση προγραμμάτων OpenCL σε συσκευές Intel
  • Χρήση του NVIDIA Nsight για τον εντοπισμό σφαλμάτων και την ανάλυση προγραμμάτων OpenCL σε συσκευές NVIDIA

Βελτιστοποίηση

  • Κατανόηση των παραγόντων που επηρεάζουν την απόδοση των προγραμμάτων OpenCL
  • Χρήση διανυσματικών τύπων δεδομένων και τεχνικών διανυσματοποίησης για τη βελτίωση της αριθμητικής απόδοσης
  • Χρήση τεχνικών ξεδιπλώματος βρόχων και χωρισμού βρόχων της OpenCL για τη μείωση του overhead ελέγχου και την αύξηση της τοπικότητας
  • Χρήση της τοπικής μνήμης και των συναρτήσεων τοπικής μνήμης της OpenCL για τη βελτιστοποίηση των προσβάσεων μνήμης και του εύρους ζώνης
  • Χρήση του profiling και των εργαλείων profiling της OpenCL για τη μέτρηση και τη βελτίωση του χρόνου εκτέλεσης και της χρησιμοποίησης πόρων

Σύνοψη και Επόμενα Βήματα

Απαιτήσεις

  • Κατανόηση της γλώσσας C/C++ και των εννοιών παράλληλου προγραμματισμού
  • Βασικές γνώσεις αρχιτεκτονικής υπολογιστών και ιεραρχίας μνήμης
  • Εμπειρία με εργαλεία γραμμής εντολών και επεξεργαστές κώδικα

Ακροατήριο

  • Προγραμματιστές που επιθυμούν να μάθουν πώς να χρησιμοποιούν την OpenCL για τον προγραμματισμό ετερογενών συσκευών και την εκμετάλλευση της παραλληλίας τους
  • Προγραμματιστές που επιθυμούν να γράφουν φορητό και κλιμακούμενο κώδικα που μπορεί να εκτελείται σε διαφορετικές πλατφόρμες και συσκευές
  • Προγραμματιστές που επιθυμούν να εξερευνήσουν τις χαμηλού επιπέδου πτυχές του ετερογενούς προγραμματισμού και να βελτιστοποιήσουν την απόδοση του κώδικά τους
 28 Ώρες

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


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

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

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