Course Outline

Εισαγωγή

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

Ξεκινώντας

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

Οδηγίες και ρήτρες OpenACC

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

OpenACC API

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

OpenACC Βιβλιοθήκες και Διαλειτουργικότητα

  • Κατανόηση του ρόλου των βιβλιοθηκών OpenACC και των χαρακτηριστικών διαλειτουργικότητας στο πρόγραμμα συσκευών
  • Χρήση βιβλιοθηκών OpenACC, όπως μαθηματικά, τυχαία και σύνθετα, για την εκτέλεση κοινών εργασιών και λειτουργιών
  • Χρήση λειτουργιών διαλειτουργικότητας OpenACC, όπως deviceptr, use_device και acc_memcpy, για την ενοποίηση του OpenACC με άλλα μοντέλα προγραμματισμού, όπως CUDA, OpenMP και MPI
  • Χρήση λειτουργιών διαλειτουργικότητας OpenACC, όπως host_data και declare, για την ενοποίηση του OpenACC με GPU βιβλιοθήκες, όπως cuBLAS και cuFFT

OpenACC Tools

  • Κατανόηση του ρόλου των εργαλείων OpenACC στη διαδικασία ανάπτυξης
  • Χρήση εργαλείων OpenACC για το προφίλ και τον εντοπισμό σφαλμάτων προγραμμάτων OpenACC και τον εντοπισμό σημείων συμφόρησης και ευκαιριών απόδοσης
  • Χρησιμοποιώντας εργαλεία OpenACC, όπως το PGI Compiler, το NVIDIA Nsight Systems και το Allinea Forge, για τη μέτρηση και τη βελτίωση του χρόνου εκτέλεσης και της χρήσης πόρων

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

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

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

Requirements

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

Ακροατήριο

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

Number of participants



Price per participant

Testimonials (1)

Related Courses

Hardware-Accelerated Video Analytics

14 Hours

GPU Programming with OpenCL

28 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

Raster and Vector Graphics (Adobe Photoshop, CorelDraw)

28 Hours

Related Categories