Course Outline

Εισαγωγή

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

Ξεκινώντας

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

OpenCL API

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

OpenCL Γ

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

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

  • Κατανόηση της διαφοράς μεταξύ μοντέλων μνήμης κεντρικού υπολογιστή και συσκευής
  • Χρήση χώρων μνήμης OpenCL, όπως καθολικός, τοπικός, σταθερός και ιδιωτικός
  • Χρήση αντικειμένων μνήμης OpenCL, όπως buffer, εικόνες και σωλήνες
  • Χρήση λειτουργιών πρόσβασης στη μνήμη OpenCL, όπως μόνο για ανάγνωση, μόνο εγγραφή, ανάγνωση-εγγραφή κ.λπ.
  • Χρήση OpenCL μοντέλου συνέπειας μνήμης και μηχανισμών συγχρονισμού

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

  • Κατανόηση της διαφοράς μεταξύ μοντέλων εκτέλεσης κεντρικού υπολογιστή και συσκευής
  • Χρήση OpenCL στοιχείων εργασίας, ομάδων εργασίας και εύρους ND για τον ορισμό του παραλληλισμού
  • Χρήση συναρτήσεων στοιχείου εργασίας 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, κ.λπ.

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

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

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

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

Περίληψη και Επόμενα Βήματα

Requirements

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

Ακροατήριο

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

Number of participants



Price per participant

Testimonials (1)

Related Courses

Hardware-Accelerated Video Analytics

14 Hours

GPU Programming with CUDA

28 Hours

GPU Programming - OpenCL vs CUDA vs ROCm

28 Hours

AMD GPU Programming

28 Hours

ROCm for Windows

21 Hours

Introduction to GPU Programming

21 Hours

GPU Programming with OpenACC

28 Hours

Raster and Vector Graphics (Adobe Photoshop, CorelDraw)

28 Hours

Related Categories