Επικοινωνήστε μαζί μας
 Διάρκεια 28 Ώρες (4 μέρες)

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

Εισαγωγή

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

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


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

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

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