Ευχαριστούμε που στάλθηκε η αποσαφήνισή σας! Ένα μέλος της ομάδου μας θα επικοινωνήσει μαζί σας σύντομα.
Ευχαριστούμε για την εκδήλωση κράτησης! Ένας από τους συνεργάτες μας θα επικοινωνήσει μαζί σας σύντομα.
Εξέλιξη Κομματιού
Εισαγωγή
- Τι είναι το ROCm;
- Τι είναι το HIP;
- ROCm εναντίον CUDA εναντίον OpenCL
- Επισκόπηση των χαρακτηριστικών και της αρχιτεκτονικής των ROCm και HIP
- Ρύθμιση του Περιβάλλοντος Ανάπτυξης
Ξεκινώντας
- Δημιουργία ενός νέου έργου ROCm χρησιμοποιώντας το Visual Studio Code
- Εξερεύνηση της δομής του έργου και των αρχείων
- Μεταγλώττιση και εκτέλεση του προγράμματος
- Προβολή της εξόδου χρησιμοποιώντας printf και fprintf
ROCm API
- Κατανόηση του ρόλου του ROCm API στο πρόγραμμα του κεντρικού υπολογιστή
- Χρήση του ROCm API για την αναζήτηση πληροφοριών συσκευής και δυνατοτήτων
- Χρήση του ROCm API για την εκχώρηση και αποδέσμευση μνήμης συσκευής
- Χρήση του ROCm API για την αντιγραφή δεδομένων μεταξύ κεντρικού υπολογιστή και συσκευής
- Χρήση του ROCm API για την εκκίνηση πυρήνων και τον συγχρονισμό νημάτων
- Χρήση του ROCm API για τον χειρισμό σφαλμάτων και εξαιρέσεων
Γλώσσα HIP
- Κατανόηση του ρόλου της γλώσσας HIP στο πρόγραμμα της συσκευής
- Χρήση της γλώσσας HIP για τη συγγραφή πυρήνων που εκτελούνται στην GPU και χειρίζονται δεδομένα
- Χρήση των τύπων δεδομένων, προσδιοριστικών, τελεστών και εκφράσεων της HIP
- Χρήση των ενσωματωμένων συναρτήσεων, μεταβλητών και βιβλιοθηκών της HIP για την εκτέλεση κοινών εργασιών και λειτουργιών
Μοντέλο Μνήμης ROCm και HIP
- Κατανόηση της διαφοράς μεταξύ μοντέλων μνήμης κεντρικού υπολογιστή και συσκευής
- Χρήση των χώρων μνήμης των ROCm και HIP, όπως global, shared, constant, local
- Χρήση των αντικειμένων μνήμης των ROCm και HIP, όπως δείκτες, πίνακες, υφές (textures), επιφάνειες (surfaces)
- Χρήση των τρόπων πρόσβασης μνήμης των ROCm και HIP, όπως read-only, write-only, read-write, κ.λπ.
- Χρήση του μοντέλου συνέπειας μνήμης και των μηχανισμών συγχρονισμού των ROCm και HIP
Μοντέλο Εκτέλεσης ROCm και HIP
- Κατανόηση της διαφοράς μεταξύ μοντέλων εκτέλεσης κεντρικού υπολογιστή και συσκευής
- Χρήση των νημάτων, μπλοκ και πλεγμάτων των ROCm και HIP για τον ορισμό της παραλληλίας
- Χρήση των συναρτήσεων νημάτων ROCm και HIP, όπως hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, κ.λπ.
- Χρήση των συναρτήσεων μπλοκ ROCm και HIP, όπως __syncthreads, __threadfence_block, κ.λπ.
- Χρήση των συναρτήσεων πλέγματος ROCm και HIP, όπως hipGridDim_x, hipGridSync, cooperative groups, κ.λπ.
Αποσφαλμάτωση
- Κατανόηση των κοινών σφαλμάτων και bugs σε προγράμματα ROCm και HIP
- Χρήση του debugger του Visual Studio Code για επιθεώρηση μεταβλητών, σημείων διακοπής, στοίβας κλήσεων, κ.λπ.
- Χρήση του ROCm Debugger για την αποσφαλμάτωση προγραμμάτων ROCm και HIP σε συσκευές AMD
- Χρήση του ROCm Profiler για την ανάλυση προγραμμάτων ROCm και HIP σε συσκευές AMD
Βελτιστοποίηση
- Κατανόηση των παραγόντων που επηρεάζουν την απόδοση των προγραμμάτων ROCm και HIP
- Χρήση τεχνικών coalescing των ROCm και HIP για βελτίωση της απόδοσης μνήμης
- Χρήση τεχνικών caching και prefetching των ROCm και HIP για μείωση της καθυστέρησης μνήμης
- Χρήση τεχνικών shared memory και local memory των ROCm και HIP για βελτιστοποίηση των προσβάσεων μνήμης και του εύρους ζώνης
- Χρήση του profiling και των profiling εργαλείων των ROCm και HIP για μέτρηση και βελτίωση του χρόνου εκτέλεσης και της χρησιμοποίησης πόρων
Σύνοψη και Επόμενα Βήματα
Απαιτήσεις
- Κατανόηση της γλώσσας C/C++ και των εννοιών παράλληλου προγραμματισμού
- Βασικές γνώσεις αρχιτεκτονικής υπολογιστών και ιεραρχίας μνήμης
- Εμπειρία με εργαλεία γραμμής εντολών και προγραμμάτων επεξεργασίας κώδικα
Ακροατήριο
- Προγραμματιστές που επιθυμούν να μάθουν πώς να χρησιμοποιούν τα ROCm και HIP για τον προγραμματισμό GPU της AMD και να εκμεταλλευτούν την παραλληλία τους
- Προγραμματιστές που επιθυμούν να γράφουν κώδικα υψηλής απόδοσης και κλιμακώσιμο που μπορεί να εκτελείται σε διαφορετικές συσκευές AMD
- Προγραμματιστές που επιθυμούν να εξερευνήσουν τις πτυχές χαμηλού επιπέδου του προγραμματισμού GPU και να βελτιστοποιήσουν την απόδοση του κώδικα τους
28 Ώρες