Το NSight Systems είναι ένα ισχυρό εργαλείο που έχει σχεδιαστεί για να απεικονίζει και να αναλύει τις αλληλεπιδράσεις CPU-GPU σε εφαρμογές, παρέχοντας πληροφορίες σχετικά με τα σημεία συμφόρησης απόδοσης και τις ευκαιρίες βελτιστοποίησης. Δείτε πώς απεικονίζει αυτές τις αλληλεπιδράσεις:
Ανάλυση απόδοσης σε επίπεδο συστήματος
Τα συστήματα NSight καταγράφουν δεδομένα δραστηριότητας σε όλο το σύστημα, συμπεριλαμβανομένων και των συμβάντων CPU και GPU, και τα εμφανίζουν σε ένα ενοποιημένο χρονοδιάγραμμα. Αυτό το χρονοδιάγραμμα επιτρέπει στους προγραμματιστές να βλέπουν πώς αλληλεπιδρούν διαφορετικά συστατικά του συστήματος μεταξύ τους με την πάροδο του χρόνου, διευκολύνοντας τον εντοπισμό των συσχετισμών, των εξαρτήσεων και των σημείων συμφόρησης στη ροή εργασίας της εφαρμογής [3] [4].
Οπτικοποίηση δραστηριότητας CPU
Τα συστήματα NSight απεικονίζουν τη δραστηριότητα της CPU, παρουσιάζοντας καταστάσεις νήματος, αξιοποίηση και εκτέλεση αλγορίθμου. Αυτό βοηθά τους προγραμματιστές να κατανοήσουν τον τρόπο με τον οποίο χρησιμοποιούνται οι πόροι της CPU και όπου μπορεί να υπάρχουν πιθανές συμφόρηση. Το εργαλείο υποστηρίζει την ανάλυση δέντρων πολλαπλών διαδικασιών, επιτρέποντας στους χρήστες να παρακολουθούν ταυτόχρονα τη δραστηριότητα πολλαπλών διαδικασιών και σπειρώσεων [1] [3].
Οπτικοποίηση δραστηριότητας GPU
Για τη δραστηριότητα της GPU, η NSight Systems παρέχει λεπτομερείς γνώσεις σχετικά με τους φόρτους εργασίας της GPU, συμπεριλαμβανομένης της βελτιστοποίησης streaming-multiprocessor (SM), των μεταφορών μνήμης και της εκτέλεσης του πυρήνα. Υποστηρίζει την ανίχνευση διαφόρων API GPU, όπως οι CUDA, Vulkan και OpenGL, επιτρέποντας στους προγραμματιστές να αναλύουν σε βάθος τις εργασίες υπολογισμού και γραφικών GPU [3] [4]. Το εργαλείο προσφέρει επίσης δειγματοληψία μετρήσεων GPU, η οποία περιλαμβάνει μετρήσεις όπως η χρήση SM, η δραστηριότητα του πυρήνα Tensor και η απόδοση οδηγιών. Αυτές οι μετρήσεις βοηθούν τους προγραμματιστές να βελτιστοποιήσουν την απόδοση της GPU, προσδιορίζοντας την υποεκπροσώπηση ή την αναποτελεσματικότητα στη χρήση πόρων GPU [1] [3].
Συσχετισμό συμβάντων CPU και GPU
Ένα από τα βασικά χαρακτηριστικά των συστημάτων NSight είναι η ικανότητά του να συσχετίζει τα συμβάντα CPU και GPU. Με την απεικόνιση τόσο των δραστηριοτήτων CPU όσο και της GPU στο ίδιο χρονοδιάγραμμα, οι προγραμματιστές μπορούν να δουν πώς οι λειτουργίες της CPU επηρεάζουν την απόδοση GPU και αντίστροφα. Αυτή η συσχέτιση είναι ζωτικής σημασίας για τον εντοπισμό σημείων συμφόρησης που συμβαίνουν λόγω αλληλεπιδράσεων μεταξύ της CPU και της GPU, όπως οι καθυστερήσεις μεταφοράς δεδομένων ή τα ζητήματα συγχρονισμού [3] [4].
Χαμηλή εναέρια και επεκτασιμότητα
Το NSight Systems έχει σχεδιαστεί για να λειτουργεί με χαμηλά έξοδα, εξασφαλίζοντας ότι η διαδικασία προφίλ δεν επηρεάζει σημαντικά την απόδοση της εφαρμογής. Αυτό το καθιστά κατάλληλο για ανάλυση σύνθετων εφαρμογών μεγάλης κλίμακας που εκτελούνται σε διάφορες πλατφόρμες NVIDIA, από σταθμούς εργασίας έως κέντρα δεδομένων και περιβάλλοντα σύννεφων [3] [6].
Διεπαφή χρήστη και πλοήγηση
Το εργαλείο παρέχει ένα φιλικό προς το χρήστη GUI που επιτρέπει στους προγραμματιστές να περιηγούνται στην προβολή χρονοδιαγράμματος χρησιμοποιώντας ράβδους κύλισης, τροχούς ποντικιού και συντομεύσεις πληκτρολογίου. Αυτή η διεπαφή επιτρέπει στους χρήστες να μεγεθύνουν σε συγκεκριμένες χρονικές περιοχές ή συμβάντα, διευκολύνοντας λεπτομερή ανάλυση των προβλημάτων απόδοσης [5] [9].
Συνολικά, η NSight Systems προσφέρει μια ολοκληρωμένη άποψη των αλληλεπιδράσεων CPU-GPU, επιτρέποντας στους προγραμματιστές να βελτιστοποιήσουν τις εφαρμογές τους για καλύτερες επιδόσεις και αποτελεσματικότητα σε ένα ευρύ φάσμα πλατφορμών.
Αναφορές:
[1] https://extremecomputingtraining.anl.gov/wp-content/uploads/sites/96/2022/11/atpesc-2022-track-6-talk-2-keert-nvidia.pdf
[2] https://bede-documentation.readthedocs.io/en/latest/software/tools/nsight-systems.html
[3] https://developer.nvidia.com/nsight-systems
[4] https://indico.cern.ch/event/962112/contribution/4047370/attachments/2159916/3643963/nsight%20Systems%20-%20x86%20Introduction%20-%20Cern.pdf
[5] https://www.youtube.com/watch?v=tgchxcfm-yo
[6] https://docs.nersc.gov/tools/performance/nvidiaproftools/
[7] https://www.youtube.com/watch?v=kkanp0kl_hk
[8] https://docs.nvidia.com/nsight-systems/userguide/index.html
[9] https://www.youtube.com/watch?v=dudgo66iadu
[10] https://dev-discuss.pytorch.org/t/using-nsight-systems-to-profile-gpu-workload/59