AVX-512
Το AVX-512 είναι μια οικογένεια διανυσματικών επεκτάσεων x86 με καταχωρητές opmask και υποστήριξη για πράξεις 512 bit. Η βάση του (foundation) και τα επιμέρους υποσύνολα πρέπει να ελέγχονται ξεχωριστά· μια απλή ετικέτα AVX-512 δεν αποτελεί πλήρη προδιαγραφή συμβατότητας.
Τι πρέπει να γνωρίζετε
Το AVX-512 είναι μια οικογένεια διανυσματικών επεκτάσεων x86 με καταχωρητές opmask και υποστήριξη για πράξεις 512 bit. Η βάση του (foundation) και τα επιμέρους υποσύνολα πρέπει να ελέγχονται ξεχωριστά· μια απλή ετικέτα AVX-512 δεν αποτελεί πλήρη προδιαγραφή συμβατότητας.
Πώς λειτουργεί
Η αρχιτεκτονική προσθέτει την κατάσταση διανύσματος ZMM και τους καταχωρητές opmask k. Οι λειτουργίες με μάσκα μπορούν να επιλέγουν μεμονωμένες λωρίδες (lanes), με συμπεριφορά συγχώνευσης (merging) ή μηδενισμού (zeroing) ειδική για κάθε εντολή. Το AVX512F αποτελεί το θεμέλιο. Τα AVX512BW, DQ, CD και VL καλύπτουν διαφορετικές πρόσθετες δυνατότητες. Το AVX512VL επιτρέπει σχετικές λειτουργίες σε στενότερα διανύσματα, επομένως ο κώδικας AVX-512 δεν επεξεργάζεται απαραίτητα 512 bits σε κάθε εντολή.
Πού είναι χρήσιμο
Ένας αριθμητικός βρόχος με μάσκα μπορεί να διαχειριστεί το τελικό μερικό διάνυσμά του χωρίς ξεχωριστό κλιμακωτό υπόλοιπο (scalar tail), όταν οι επιλεγμένες εντολές υποστηρίζουν την απαιτούμενη σημασιολογία κάλυψης. Μια εφαρμογή που χρησιμοποιεί λειτουργίες byte, ανίχνευση συγκρούσεων ή μια συγκεκριμένη αριθμητική μορφή πρέπει να ζητά ρητά αυτά τα ακριβή υποσύνολα. Τα AVX-512 VNNI και AVX-VNNI χρησιμοποιούν διαφορετικές κωδικοποιήσεις και απαρίθμηση.
Πώς να ελέγξετε την υποστήριξη και την ενεργοποίηση
Μετά τους ελέγχους AVX, επαληθεύστε τα συγκεκριμένα bits δυνατοτήτων του CPUID leaf 7 που χρειάζεται το πρόγραμμα. Για την κατάσταση AVX-512, το XCR0 πρέπει να ενεργοποιεί τις καταστάσεις XMM, YMM, opmask, ανώτερου ZMM και υψηλού ZMM: bits 1, 2, 5, 6 και 7. Η συνήθως χρησιμοποιούμενη μάσκα είναι η E6H. Ελέγξτε το OSXSAVE πριν από το XGETBV και χρησιμοποιήστε έναν διανομέα (dispatcher) που ελέγχει κάθε απαιτούμενο υποσύνολο.
Το πρόγραμμα πρέπει τόσο να περιέχει μια κατάλληλη υλοποίηση όσο και να την επιλέγει κατά τον χρόνο εκτέλεσης. Η απαρίθμηση υλικού, η ενεργοποιημένη από το λειτουργικό σύστημα κατάσταση καταχωρητών και η μεταγλωττισμένη βασική γραμμή (baseline) του εκτελέσιμου αρχείου αποτελούν ξεχωριστούς ελέγχους. Μια εικονική μηχανή μπορεί σκόπιμα να εκθέτει λιγότερες δυνατότητες από τον κεντρικό υπολογιστή της (host), και ένα container δεν προσθέτει εντολές στην CPU του κεντρικού υπολογιστή.
Τι δεν καθορίζει η δυνατότητα
Μην συνάγετε κάθε υποσύνολο του AVX-512 από το AVX512F, το όνομα μιας γενιάς CPU ή το x86-64-v4. Η συχνότητα, η ισχύς και η απόδοση εκτέλεσης ποικίλλουν ανάλογα με την υλοποίηση και τον φόρτο εργασίας. Μια ετικέτα βάσης δεδομένων από μόνη της δεν μπορεί να επιβεβαιώσει εάν το υλικολογισμικό, η πολιτική υβριδικών πυρήνων ή ένας hypervisor εκθέτουν μια χρησιμοποιήσιμη δυνατότητα στην τρέχουσα διεργασία.
Συμβατότητα και απόδοση στην πράξη
Μετρήστε τον πλήρη φόρτο εργασίας με αντιπροσωπευτικά δεδομένα. Τα ευρύτερα διανύσματα μπορούν να μειώσουν τον αριθμό των εντολών αφήνοντας αμετάβλητη την κίνηση μνήμης, τον συγχρονισμό ή το κόστος μετατροπής. Η καθυστέρηση εντολών (latency), η διακίνηση (throughput) και η συμπεριφορά κατανάλωσης ισχύος εξαρτώνται από την ακριβή μικροαρχιτεκτονική και τις συνθήκες λειτουργίας.
Μια πρακτική λίστα ελέγχου επαλήθευσης
- Καταγράψτε το ακριβές μοντέλο επεξεργαστή ή πλατφόρμας και τις εμπλεκόμενες εκδόσεις εφαρμογής, λειτουργικού συστήματος και περιβάλλοντος εκτέλεσης (runtime). Διατηρήστε τη διατύπωση του πραγματικού σφάλματος ή της απαίτησης.
- Ελέγξτε τις αναφορές του κατασκευαστή για το συγκεκριμένο μοντέλο και, στη συνέχεια, εξετάστε την πραγματική δυνατότητα και την ενεργοποιημένη κατάσταση στο περιβάλλον όπου εκτελείται το πρόγραμμα.
- Συγκρίνετε κάθε απαίτηση του επιλεγμένου εκτελέσιμου αρχείου (binary) ή του backend. Μια δυνατότητα με παρόμοιο όνομα, ένα ψευδώνυμο ή μια ευρεία ετικέτα τεχνολογίας δεν επαρκεί.
- Επιβεβαιώστε ότι η εφαρμογή επέλεξε την προβλεπόμενη υλοποίηση. Χρησιμοποιήστε τα τεκμηριωμένα διαγνωστικά της και μια υποστηριζόμενη εναλλακτική λύση (fallback) όταν δεν πληρούνται οι απαιτήσεις.
- Κάντε μία υποστηριζόμενη αλλαγή τη φορά και επαναλάβετε τον ίδιο φόρτο εργασίας. Διατηρήστε διαθέσιμη την αρχική διαμόρφωση και τη διαδρομή επαναφοράς.
Εάν η δυνατότητα αναφέρεται αλλά το λογισμικό δεν μπορεί να τη χρησιμοποιήσει
Ξεκινήστε με το ακριβές στοιχείο που αποτυγχάνει. Μια βάση δεδομένων υλικού περιγράφει την καταγεγραμμένη δυνατότητα· το λειτουργικό σύστημα ή ο hypervisor μπορεί να εκθέσει ένα διαφορετικό πραγματικό περιβάλλον. Ένα σφάλμα μη έγκυρης εντολής (illegal-instruction error) απαιτεί επίσης διερεύνηση της πραγματικής εντολής που προκάλεσε το σφάλμα και της έκδοσης του εκτελέσιμου (binary build), καθώς η αλλοίωση δεδομένων ή μια άσχετη μη υποστηριζόμενη εντολή μπορεί να προκαλέσει παρόμοιο σύμπτωμα.
Εγκαταστήστε την έκδοση της εφαρμογής, του προγράμματος οδήγησης ή του περιβάλλοντος εκτέλεσης που υποστηρίζεται για την ακριβή πλατφόρμα και χρησιμοποιήστε τη βασική γραμμή (baseline) ή την εναλλακτική έκδοση (fallback build) που τεκμηριώνει ο κατασκευαστής, εάν χρειάζεται. Μια ενημέρωση λογισμικού δεν μπορεί να δημιουργήσει μια εντολή που λείπει από τον επεξεργαστή. Οι αλλαγές στο υλικολογισμικό (firmware) και στην πολιτική ασφαλείας θα πρέπει να ακολουθούν τη διαδικασία του κατασκευαστή του συστήματος και ένα σχέδιο επαναφοράς και όχι μια γενική συνταγή βελτιστοποίησης.
Πηγές και πεδίο εφαρμογής αυτής της επεξήγησης
Intel 64 and IA-32 Architectures Software Developer's Manual · Πυρήνας Linux: χρήση δυνατοτήτων XSTATE στον χώρο χρήστη · x86-64 psABI: επίπεδα αρχιτεκτονικής και μικροαρχιτεκτονικής επεξεργαστή
Αυτές οι αναφορές καθορίζουν την αρχιτεκτονική συμπεριφορά και τις απαιτήσεις λογισμικού. Δεν επαληθεύουν ανεξάρτητα κάθε τιμή δυνατότητας σε μια συνδεδεμένη σελίδα μοντέλου υλικού. Για την υποστήριξη του μοντέλου, χρησιμοποιήστε τα στοιχεία τεκμηρίωσης του κατασκευαστή αυτής της σελίδας και ελέγξτε την πραγματική διαμόρφωση του συστήματος. Αυτό το άρθρο δεν παρέχει ημερομηνία δοκιμής επιδόσεων (benchmark), πιστοποίησης ή ανεξάρτητης αξιολόγησης.
Πηγές και επαλήθευση
Συντακτική ιδιοκτησία: Feex. Δεν έχει καταγραφεί ημερομηνία ανεξάρτητης αναθεώρησης. Πώς ερευνούμε.
- Intel 64 and IA-32 Architectures Software Developer's Manual · Οι τόμοι 1 και 2 περιγράφουν τις κατονομαζόμενες οικογένειες εντολών και το CPUID· ο τόμος 3 περιγράφει την κατάσταση, τη σελιδοποίηση, το VMX και τους ελέγχους προστασίας. Η τεκμηρίωση αρχιτεκτονικής δεν καθορίζει την υποστήριξη για ένα συγκεκριμένο μοντέλο.
- Πυρήνας Linux: χρήση δυνατοτήτων XSTATE στον χώρο χρήστη · Κατάσταση διανύσματος ενεργοποιημένη από το λειτουργικό σύστημα, δυναμικά ενεργοποιημένη κατάσταση πλακιδίων, απαιτήσεις στοίβας σημάτων και ροή δικαιωμάτων AMX. Η συμπεριφορά που αφορά ειδικά το Linux δεν αποτελεί υπόσχεση για άλλο λειτουργικό σύστημα.
- x86-64 psABI: επίπεδα αρχιτεκτονικής και μικροαρχιτεκτονικής επεξεργαστή · Διεπαφή μηχανής, Αρχιτεκτονική επεξεργαστή: πίνακας βασικών και σωρευτικών δυνατοτήτων v2/v3/v4, έλεγχοι κατάστασης λειτουργικού συστήματος και συστάσεις ανάπτυξης.
Ήταν χρήσιμο αυτό το άρθρο;
Ένα ναι ή όχι είναι αρκετό. Επιλέξτε έναν λόγο εάν θέλετε ή προσθέστε μια σύντομη σημείωση.
Ευχαριστούμε. Αυτό μας βοηθά να βελτιώσουμε αυτή τη σελίδα.