Ξεκινήστε με τον Intel Trace Analyzer and Collector
Ξεκινήστε με το Intel® Trace Analyzer and Collector
Χρησιμοποιήστε αυτό το έγγραφο Ξεκινώντας και ένα προ-συλλεγμένο ίχνος file για να περάσετε σε μια βασική ανάλυση απόδοσης MPI με τον Intel® Trace Analyzer and Collector.
Το Intel Trace Analyzer and Collector βοηθά στην εξερεύνηση της αποτελεσματικότητας χρήσης της διεπαφής μετάδοσης μηνυμάτων (MPI) και στον εντοπισμό σημείων πρόσβασης επικοινωνίας, των σημείων συμφόρησης συγχρονισμού και της εξισορρόπησης φορτίου. Για περισσότερες πληροφορίες σχετικά με το προϊόν, ανατρέξτε στη σελίδα προϊόντος Intel Trace Analyzer and Collector.
Κατεβάστε το Intel Trace Analyzer and Collector
- ως μέρος του Intel® OneAPI HPC Toolkit
- ως αυτόνομο εργαλείο
Προαπαιτούμενα
- Πριν εκτελέσετε το Intel Trace Analyzer and Collector, βεβαιωθείτε ότι έχετε εγκαταστήσει την πιο πρόσφατη βιβλιοθήκη Intel® MPI και τον μεταγλωττιστή Intel® oneAPI DPC++/C++ ή τον μεταγλωττιστή Intel® Fortran.
- Αυτό ορίζει τις απαιτούμενες μεταβλητές περιβάλλοντος για μεταγλωττιστές, τη βιβλιοθήκη Intel MPI και το Intel Trace Analyzer and Collector και είστε έτοιμοι να ανιχνεύσετε τις εφαρμογές σας.
- Για περισσότερες πληροφορίες, δείτε: Απαιτήσεις συστήματος Intel® oneAPI HPC Toolkit.
Κατανοήστε τη ροή εργασίας
- Ανιχνεύστε την εφαρμογή σας
- Αναλύστε τις πιο ενεργές λειτουργίες MPI
- Προσδιορίστε προβληματικές αλληλεπιδράσεις
- Βελτιώστε την απόδοση της εφαρμογής σας αντικαθιστώντας τη λειτουργία που προκαλεί πρόβλημα
Ανιχνεύστε την εφαρμογή MPI σας
Δημιουργήστε ένα ίχνος file για τη συλλογή αρχείων καταγραφής συμβάντων για την ακόλουθη ανάλυση συμπεριφοράς εφαρμογής.
- Ρυθμίστε το περιβάλλον για την εκκίνηση του Intel® Trace Analyzer and Collector εκτελώντας το σενάριο setvars από τον διευθυντή εγκατάστασης του oneAPI
ΣΗΜΕΙΩΜΑ
Από προεπιλογή, το Intel Trace Analyzer and Collector είναι εγκατεστημένο στο /opt/intel/oneapi/itac για Linux* OS και στο πρόγραμμα Files (x86)\Intel\oneAPI\itac\νεότερο για Windows* OS.
Σε Linux:
$ πηγή /opt/intel/oneapi/setvars.sh
Στα Windows:
«Γ:\Πρόγραμμα Files (x86)\Intel\oneAPI\setvars.bat" - Εκτελέστε την εφαρμογή MPI και δημιουργήστε ένα ίχνος με την επιλογή -trace.
Σε Linux:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
Στα Windows:
Μεταγλωττίστε την εφαρμογή και συλλέξτε το ίχνος.
Για τον μεταγλωττιστή Intel oneAPI DPC++/C++, εκτελέστε:
> mpiicc -trace poisson_sendrecv.single.c
Για τον μεταγλωττιστή Intel Fortran, εκτελέστε:
> mpiifort -trace poisson_sendrecv.single.f
Αυτό το πρώηνampΤο le δημιουργεί ένα ίχνος (stf*) για το asample poisson_sendrcv.single MPI εφαρμογή - Ανοίξτε το .stf που δημιουργήθηκε file με Intel Trace Analyzer με Intel Trace Analyzer και Collector.
Σε Linux:
$ traceanalyzer ./ poisson_sendrecv.single.stf
Στα Windows:
traceanalyzer poisson_sendrecv.single.stf
ΣΗΜΕΙΩΜΑ
Για σκοπούς δοκιμής, μπορείτε να κάνετε λήψη ενός προσυλλεγμένου ίχνους file poisson_sendrecv.single.stf για το poisson που χρησιμοποιείται σε αυτό το έγγραφο και ανοίξτε το με Intel Trace Analyzer and Collector.
Το .stf file ανοίγει στη σελίδα σύνοψης view, το οποίο αντιπροσωπεύει γενικές πληροφορίες σχετικά με την απόδοση της εφαρμογής σας:ΣΗΜΕΙΩΜΑ Για περισσότερες πληροφορίες σχετικά με τη λειτουργία Intel Trace Analyzer και Collector, ανατρέξτε στην ενότητα Μάθετε περισσότερα.
Αναλύστε τις πιο ενεργές λειτουργίες MPI
Αναλύστε μια συμπεριφορά εφαρμογής MPI, βρείτε σημεία συμφόρησης και εντοπίστε τη σειριοποίηση για να βρείτε τρόπους βελτίωσης της απόδοσης της εφαρμογής.
- Από τη Σελίδα Σύνοψης ανοίξτε το Χρονοδιάγραμμα συμβάντων view κάνοντας κλικ στο Συνέχεια > Γραφήματα > Χρονολόγιο συμβάντων για βαθιά ανάλυση των κορυφαίων λειτουργιών MPI.
Το γράφημα εμφανίζει μεμονωμένες δραστηριότητες διαδικασίας με την πάροδο του χρόνου.
Οι εργασίες εφαρμογής είναι επαναληπτικές, όπου κάθε επανάληψη αποτελείται από ένα υπολογιστικό μέρος και επικοινωνίες MPI. - Προσδιορίστε μια μεμονωμένη επανάληψη στην οποία θα εστιάσετε και κάντε μεγέθυνση σύροντας το ποντίκι σας στο απαιτούμενο χρονικό διάστημα:
Το ίχνος view εμφανίζει την ενότητα εντός του ίχνους που επιλέξατε. Το γράφημα Χρονολόγιο συμβάντος εμφανίζει τα συμβάντα που ήταν ενεργά κατά την επιλεγμένη επανάληψη.
- Οι οριζόντιες ράβδοι αντιπροσωπεύουν τις διεργασίες με τις συναρτήσεις που καλούνται σε αυτές τις διεργασίες.
- Οι μαύρες γραμμές υποδεικνύουν μηνύματα που αποστέλλονται μεταξύ των διεργασιών. Αυτές οι γραμμές συνδέουν διαδικασίες αποστολής και λήψης.
- Οι μπλε γραμμές αντιπροσωπεύουν συλλογικές λειτουργίες, όπως λειτουργίες μετάδοσης ή μείωσης.
- Μεταβείτε στο Flat Profile καρτέλα (A) για να έχετε μια πιο προσεκτική ματιά στις λειτουργίες που εκτελούνται στο χρονικό σημείο που έχετε επιλέξει στη Γραμμή χρόνου συμβάντων.
- Καταργήστε την ομαδοποίηση των συναρτήσεων MPI για να αναλύσετε τη δραστηριότητα διεργασίας MPI στην εφαρμογή σας.
Για να το κάνετε αυτό, κάντε δεξί κλικ στο All Processes > Group MPI ( B) στο Flat Profile και επιλέξτε UngroupMPI. Αυτή η λειτουργία εκθέτει τις μεμονωμένες κλήσεις MPI. - Αναλύστε τις διεργασίες που επικοινωνούν με τους άμεσους γείτονές τους χρησιμοποιώντας το MPI_Sendrecv στην αρχή της επανάληψης. Για π.χample:
- ένα. Στο sample, η ανταλλαγή δεδομένων MPI_Sendrecv έχει ένα σημείο συμφόρησης: η διαδικασία δεν ανταλλάσσει δεδομένα με τον επόμενο γείτονά της μέχρι να ολοκληρωθεί η ανταλλαγή με τον προηγούμενο. Τα Χρονολόγια Εκδηλώσεων view εμφανίζει αυτό το σημείο συμφόρησης ως σκάλα.
- σι. Το MPI_Allreduce στο τέλος της επανάληψης συγχρονίζει εκ νέου όλες τις διεργασίες. γι' αυτό αυτό το μπλοκ έχει την αντίστροφη όψη σκάλας.
- Προσδιορίστε τη σειριοποίηση, χρησιμοποιώντας το Function Profile και Message Profile views.
- ένα. Ανοίξτε τα διαγράμματα ταυτόχρονα:
Στο Function Profile γράφημα, ανοίξτε την καρτέλα Load Balance. - Μεταβείτε στο μενού Charts για να ανοίξετε ένα Message Profile.
- σι. Στην καρτέλα Load Balance, αναπτύξτε το MPI_Sendrecv και το MPI_Allreduce. Το Load Balancing υποδεικνύει ότι ο χρόνος που δαπανάται στο MPI_Sendrecv αυξάνεται με τον αριθμό της διαδικασίας, ενώ ο χρόνος για το MPI_Allreduce μειώνεται.
- ντο. Εξετάστε το Message Profile Γράφημα προς τα κάτω στην κάτω δεξιά γωνία.
Η χρωματική κωδικοποίηση των μπλοκ υποδεικνύει ότι τα μηνύματα που ταξιδεύουν από υψηλότερη σε χαμηλότερη κατάταξη χρειάζονται αναλογικά περισσότερο χρόνο, ενώ τα μηνύματα που ταξιδεύουν από χαμηλότερη σε υψηλότερη κατάταξη αποκαλύπτουν ένα αδύναμο άρτιο-περιττό είδος μοτίβου:
- ένα. Ανοίξτε τα διαγράμματα ταυτόχρονα:
Τα αποτελέσματα της συγκριτικής ανάλυσης δείχνουν ότι δεν υπάρχουν πολύπλοκα πρότυπα ανταλλαγής στην εφαρμογή, η ανταλλαγή πραγματοποιείται μόνο με γειτονικές διαδικασίες. Οι πληροφορίες θα είναι απαραίτητες για το βήμα Βελτιώστε την απόδοση της εφαρμογής σας με την αλλαγή των επικοινωνιών για τη βελτιστοποίηση του μοντέλου επικοινωνίας της εφαρμογής.
Προσδιορίστε τις μη ισορροπημένες επικοινωνίες
Παρακολουθήστε την αίτησή σας υπό τις ιδανικές συνθήκες και συγκρίνετε το αρχικό ίχνος file με την εξιδανικευμένη να απομονώνει προβληματικές αλληλεπιδράσεις.
- Δημιουργήστε ένα εξιδανικευμένο file:
- ένα. Επιλέξτε Για προχωρημένους > Εξιδανίκευση ή κάντε κλικ στο
Κουμπί γραμμής εργαλείων (εξιδανίκευση).
- σι. Ελέγξτε τις παραμέτρους εξιδανίκευσης στο πλαίσιο διαλόγου Εξιδανίκευση (ιδανικό ίχνος file όνομα και χρονικό εύρος για τη μετατροπή).
- ντο. Κάντε κλικ στο Start για να εξιδανικεύσετε το ίχνος σας.
- ένα. Επιλέξτε Για προχωρημένους > Εξιδανίκευση ή κάντε κλικ στο
- Συγκρίνετε το αρχικό ίχνος με το εξιδανικευμένο ίχνος:
- ένα. Επιλέξτε Advanced > Imbalance Diagram ή κάντε κλικ στο
Κουμπί γραμμής εργαλείων (Διάγραμμα ανισορροπίας).
- σι. Στο παράθυρο διαλόγου Διαγράμματος ανισορροπίας, κάντε κλικ στο Άνοιγμα άλλου File κουμπί, πλοηγηθείτε στο εξιδανικευμένο ίχνος και επιλέξτε το.
- ντο. Στο παράθυρο Imbalance Diagram, κάντε κλικ στο κουμπί Total Mode και επιλέξτε Breakdown Mode.
- ένα. Επιλέξτε Advanced > Imbalance Diagram ή κάντε κλικ στο
Μπορείτε να δείτε ότι το MPI_Sendrecv είναι η πιο χρονοβόρα συνάρτηση. Το βάρος ανισορροπίας εμφανίζεται στο
ανοιχτόχρωμο και αποτελεί περίπου το 10% για τη συνάρτηση MPI_Sendrecv. Αυτός είναι ο χρόνος που περνούν οι διαδικασίες περιμένοντας η μία την άλλη.
Βελτιώστε την απόδοση της εφαρμογής σας αλλάζοντας τις επικοινωνίες
- Βελτιώστε την απόδοση της εφαρμογής MPI αλλάζοντας τις επικοινωνίες αποκλεισμού σε μη αποκλειστικές επικοινωνίες.
Στον κώδικά σας αντικαταστήστε τη σειριακή MPI_Sendrcv με επικοινωνία χωρίς αποκλεισμό: MPI_Isend και MPI_Irecv. Για π.χample: Αρχικό απόσπασμα κώδικα:
// ανταλλαγή συνόρων
ανταλλαγή κενού(παρά* p, grid* gr){
int i,j;
MPI_Status status_100, status_200, status_300, status_400;
// αποστολή κάτω από την πρώτη σειρά
MPI_Send(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD); MPI_Recv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->πάνω, 100, MPI_COMM_WORLD,
&status_100);
// αποστολή τελευταίας σειράς
MPI_Send(gr->x_new[gr->lrow], gr->lcol+2, MPI_DOUBLE, gr->up, 200, MPI_COMM_WORLD);
MPI_Recv(gr->x_new[0], gr->lcol+2, MPI_DOUBLE, gr->down, 200, MPI_COMM_WORLD, &status_200);
Χρησιμοποιήστε το Intel Trace Analyzer Comparison view να συγκρίνετε τη σειριακή εφαρμογή με την αναθεωρημένη
// αντιγράψτε την αριστερή στήλη σε πίνακες tmp
if(gr->αριστερά != MPI_PROC_NULL){
gr->x_new[i][gr->lcol+1] = right_col[i]; right_col[i] = gr->x_new[i][gr->lcol];
// αποστολή δεξιά
MPI_Send(right_col, gr->lrow+2, MPI_DOUBLE, gr->right, 400, MPI_COMM_WORLD); }
if(gr->αριστερά != MPI_PROC_NULL)
{
MPI_Recv(left_col, gr->lrow+2, MPI_DOUBLE, gr->left, 400, MPI_COMM_WORLD,&status_400); for(i=0; i< gr->lrow+2; i++
{
gr->x_new[i][0] = left_col[i];
}
}
Ενημερώθηκε το απόσπασμα κώδικα
MPI_Αίτημα αιτήματος[7];
// αποστολή κάτω από την πρώτη σειρά
MPI_Isend(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD, &req[0]);
MPI_Irecv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->up, 100, MPI_COMM_WORLD, &req[1]);
…..
MPI_Waitall(7, απαίτηση, MPI_STATUSES_IGNORE);
Μόλις διορθωθεί, η μεμονωμένη επανάληψη της αναθεωρημένης εφαρμογής θα μοιάζει με την ακόλουθη π.χample: - Χρησιμοποιήστε το Intel Trace Analyzer Comparison view να συγκρίνει τη σειριακή εφαρμογή με την αναθεωρημένη. Συγκρίνετε δύο ίχνη με τη βοήθεια της Σύγκρισης View, πρόκειται να View > Συγκρίνετε. Η Σύγκριση View μοιάζει με:
Στη Σύγκριση View, μπορείτε να δείτε ότι η χρήση επικοινωνίας χωρίς αποκλεισμό βοηθά στην κατάργηση της σειριοποίησης και στη μείωση του χρόνου επικοινωνίας των διαδικασιών.
ΣΗΜΕΙΩΜΑ Για περισσότερες πληροφορίες σχετικά με την απόδοση σε επίπεδο κόμβου της εφαρμογής σας, ανατρέξτε στην τεκμηρίωση για τα αντίστοιχα εργαλεία: Intel® VTune™ Profiler Ανάλυση κώδικα MPI και ανάλυση εφαρμογών Intel® MPI με χρήση του Intel® Advisor.
Μάθετε περισσότερα
Εξερευνήστε τους παρακάτω πόρους για περισσότερες πληροφορίες σχετικά με το Intel Trace Analyzer and Collector.
Ειδοποιήσεις και αποποιήσεις ευθυνών
- Οι τεχνολογίες Intel ενδέχεται να απαιτούν ενεργοποίηση υλικού, λογισμικού ή υπηρεσίας.
- Κανένα προϊόν ή συστατικό δεν μπορεί να είναι απολύτως ασφαλές.
- Το κόστος και τα αποτελέσματά σας ενδέχεται να διαφέρουν.
- © Intel Corporation. Η επωνυμία Intel, το λογότυπο Intel και άλλα σήματα Intel είναι εμπορικά σήματα της Intel Corporation ή των θυγατρικών της. Άλλα ονόματα και επωνυμίες μπορούν να διεκδικηθούν ως ιδιοκτησία άλλων.
- Καμία άδεια (ρητή ή σιωπηρή, με estoppel ή με άλλο τρόπο) για δικαιώματα πνευματικής ιδιοκτησίας δεν χορηγείται από αυτό το έγγραφο.
- Τα προϊόντα που περιγράφονται ενδέχεται να περιέχουν σχεδιαστικά ελαττώματα ή σφάλματα γνωστά ως λάθη που μπορεί να προκαλέσουν απόκλιση του προϊόντος από τις δημοσιευμένες προδιαγραφές. Τα τρέχοντα χαρακτηρισμένα σφάλματα είναι διαθέσιμα κατόπιν αιτήματος.
- Η Intel αποποιείται κάθε ρητής και σιωπηρής εγγύησης, συμπεριλαμβανομένων χωρίς περιορισμό, των σιωπηρών εγγυήσεων εμπορευσιμότητας, καταλληλότητας για συγκεκριμένο σκοπό και μη παραβίασης, καθώς και οποιασδήποτε εγγύησης που προκύπτει από την πορεία απόδοσης, την πορεία συναλλαγής ή τη χρήση στο εμπόριο.
Έγγραφα / Πόροι
![]() |
intel Ξεκινήστε με τον Intel Trace Analyzer and Collector [pdf] Οδηγός χρήστη Ξεκινήστε με τον Intel Trace Analyzer and Collector, Ξεκινήστε με την Intel, Trace Analyzer and Collector, Collector |