Jump to content
  • Latest Reviews

    All Reviews
  • Linus Torvalds: "Ελπίζω οι επεκτάσεις AVX512 να πεθάνουν με οδυνηρό τρόπο"

    O δημιουργός του Linux (και του git), Linus Torvalds, επιτέθηκε ευθέως στις επεκτάσεις AVX512 (Advanced Vector Extensions 512) που βρίσκονται σε επιλεγμένους επεξεργαστές της Intel. 

     

    Σε ένα mailing list με θέμα τις εντολές μεταγλώττισης που ενεργοποιεί η Intel στους Alder Lake και Sapphire Rapids επεξεργαστές, ο Linus ξεσπάθωσε. Οι εντολές για τους Alder Lake, που ενεργοποιούνται στον GCC αυτή τη στιγμή, δεν αναφέρουν τις επεκτάσεις AVX-512 παρά μόνο τις AVX2, πιθανόν λόγω της προσπάθειας της Intel το υποσύνολο αυτό να υποστηρίζεται τόσο από τους μικρούς όσο και τους μεγάλους πυρήνες των Alder Lake (θα έχουν αρχιτεκτονική big.LITTLE). Η έλλειψη αυτή οδήγησε τον Torvalds στα ακόλουθα σχόλια:

     

    "Ελπίζω το AVX512 να πεθάνει με έναν οδυνηρό θάνατο και η Intel να ξεκινήσει να διορθώνει πραγματικά προβλήματα αντί να προσπαθεί να δημιουργήσει μαγικές οδηγίες και μετά να δημιουργεί μετροπρογράμματα στα οποία να φαίνονται καλοί οι επεξεργαστές της.

     

    Ελπίζω η Intel να επιστρέψει στα βασικά: να κάνει τις διαδικασίες της λειτουργικές ξανά και να επικεντρώνεται περισσότερο σε κανονικό κώδικα που δεν είναι HPC ή σε κάποια άλλη άσκοπη ειδική περίπτωση.

     

    Το έχω ξαναπεί και θα το ξαναπώ: στην ακμή του x86, όταν η Intel γελούσε σε όλη τη διαδρομή μέχρι την τράπεζα, σκοτώνοντας όλον τον ανταγωνισμό τους, όλοι οι άλλοι ανεξαιρέτως είχαν καλύτερες επιδόσεις από την Intel σε φορτία κινητής υποδιαστολής (FP). Η απόδοση FP της Intel ήταν χάλια (σχετικά μιλώντας), αλλά δεν είχε καμία σημασία.

     

    Διότι απολύτως κανείς δεν νοιάζεται εκτός των μετροπρογραμμάτων.

     

    Το ίδιο ισχύει σε μεγάλο βαθμό για το AVX512 τώρα - και στο μέλλον. Ναι, μπορείτε να βρείτε πράγματα που έχουν σημασία. Όχι, αυτά τα πράγματα δεν πωλούν μηχανήματα σε ευρύτερο πλαίσιο.

     

    Και το AVX512 έχει πραγματικά μειονεκτήματα. Θα προτιμούσα να δω αυτά τα τρανζίστορ να αξιοποιούνται σε άλλα πράγματα που είναι πολύ πιο σχετικά. Ακόμα κι αν πρόκειται για μαθηματικές πράξεις FP (στην GPU, αντί για AVX512). Ή απλώς δώστε μου περισσότερους πυρήνες (με καλή απόδοση ενός νήματος (single-thread), αλλά χωρίς τα σκουπίδια όπως το AVX512), όπως έκανε η AMD.

     

    Θέλω να επιτευχθούν τα όρια ισχύος μου με κανονικό κώδικα ακεραίων, όχι με κάποιον ιό τροφοδοσίας AVX512 που αφαιρεί τη μέγιστη συχνότητα (επειδή οι χρήστες κατέληξαν να το χρησιμοποιούν για memcpy!) Και αφαιρούν πυρήνες (επειδή αυτές οι άχρηστες μονάδες-σκουπίδια καταλαμβάνουν χώρο).

     

    Ναι, ναι, είμαι προκατειλημμένος. Απεχθάνομαι απολύτως τα μετροπρογράμματα FP και συνειδητοποιώ ότι οι άλλοι άνθρωποι νοιάζονται βαθιά. Νομίζω ότι το AVX512 είναι ακριβώς ο λάθος δρόμος. Είναι ένα πρωταρχικό παράδειγμα για κάτι που η Intel έκανε λάθος, εν μέρει απλώς αυξάνοντας τον κατακερματισμό της αγοράς.

     

    Σταματήστε με τα σκουπίδια ειδικού σκοπού και κάντε όλα τα βασικά κοινά πράγματα που όλοι ενδιαφέρονται, ώστε να τρέχουν οι επεξεργαστές όσο καλά γίνεται. Στη συνέχεια φτιάξτε μια FPU που είναι αρκετά καλή στο πλάι και οι άνθρωποι θα είναι ευχαριστημένοι. Το AVX2 είναι πολύ περισσότερο από αρκετό.

     

    Ναι, είμαι γκρινιάρης.

    Linus"

     

    Όλα αυτά έρχονται από τον Linus, λίγες εβδομάδες μετά τη μετάβασή του στην πλατφόρμα AMD Ryzen Threadripper.


    • Like 6
    • Haha 2

    User Feedback

    Recommended Comments

    Γενικά ο Torvalds χρησιμοποιεί πολλές ατάκες που χρησιμοποιώ κι εγώ: να πεθάνουν με οδηνηρο θάνατο.

    Όμως πιστεύω ότι έχει άδικο.

    Αν κατάλαβα καλά αυτό το AVX-512 είναι κάποιου είδους πράξεις διανυσμάτων. Όπως είχε κάνει την αρχή το MMX κτλ.

    Όταν γράφεις κώδικα C ή C++ όλα αυτά δε σε ενδιαφέρουν καθολου. Τα αναλαμβάνει ο compiler και στην προκειμένη ο gcc.

    Άρα πρέπει να παράγεις binary για τη συγκεκριμένη σειρά επεξεργαστών και μόνο με παράμετρο π.χ. -march=architecture_name

    Αυτό έχει 2 προβλήματα:

    - το binary πιθανότατα δε θα τρέχει σε άλλες αρχιτεκτονικές x86.

    - Ο gcc δεν έχει πολύ καλό ή καθόλου χειρισμό της συγκεκριμένης αρχιτεκτονικής άρα το AVX-512 απλά δεν χρησιμοποιείται ποτέ.

     

    Είναι όμως χρήσιμο;

    Ναι είναι.

    Όταν λύνεις προβλήματα πεπερασμένων στοιχείων έχεις πολλαπλασιασμούς πίνακα με διάνυσμα διαστάσεων 500 με 1.000.000.000 ανάλογα το πρόβλημα. Άρα έχει μεγάλο νόημα η πράξη διανυσμάτων (ή οι παράλληλες πράξεις βαθμωτων - το ίδιο είναι).

    • Like 3

    Share this comment


    Link to comment
    Share on other sites
    15 minutes ago, chameleon said:

    Είναι όμως χρήσιμο;

    Ναι είναι.

    TY για το σχόλιο. Καλό για εμάς να παρουσιάζεται κι αντίλογος.

    Όμως, αν ερμηνεύω ορθώς το κείμενο του Τόρβαλντς, η καθοριστική του ένσταση δεν είναι «αν είναι χρήσιμο σε κάποιες συγκεκριμένες περιπτώσεις». Το δέχεται φαντάζομαι αυτό. Θεωρεί όμως ότι αυτές οι περιπτώσεις δεν αφορούν παρά ειδικές καταστάσεις και δεν θα έπρεπε να επιβάλλεται σε όλους τους χρήστες, είτε τις χρειάζονται είτε όχι αλλά θα έπρεπε να προσφέρονται ξεχωριστά.
    Με όφελος -κατά τον Τόρβαλντς- ότι έτσι θα απελευθερώνονταν πόροι προς χρήση σε πιο κοινές περιπτώσεις. Όχι «άχρηστο γα τους πάντες», «άχρηστο για την συντριπτική πλειοψηφία» το κατηγορεί.

    • Like 6

    Share this comment


    Link to comment
    Share on other sites

    Επίσης το θέμα που θίγει είναι ότι αυτές οι επεκτάσεις όταν αξιοποιούνται θέτουν τους πυρήνες σε χρονισμούς ακόμα και πιο χαμηλά από base clocks δημιουργώντας σοβαρά προβλήματα, ενώ παράλληλα έχουν τρελές απαιτήσεις σε κατανάλωση (γι' αυτό τις αναφέρει σαν "ιό τροφοδοσίας"

     

    Στην τελική όλοι αυτοί οι βαριοί υπολογισμοί που υποτίθεται ότι επιταχύνουν οι επεκτάσεις AVX512 γίνονται από GPU στις μέρες μας, οπότε, χωρίς να είμαι ειδικός, μάλλον έχει δίκιο όταν αναφέρει ότι αξιοποιούνται κυρίως από μετροπρογράμματα για να δείχνουν καλή την Intel.

    Edited by gdp77
    • Like 4

    Share this comment


    Link to comment
    Share on other sites
    πριν 9 ώρες, το μέλος chameleon έγραψε:

    να πεθάνουν με οδηνηρο θάνατο

    Εγω παλι λεω, με ενα πονο

    Share this comment


    Link to comment
    Share on other sites

    Ένα από τα προβλήματα με το AVX-512 είναι ότι κανένας επεξεργαστής της Intel δεν υποστηρίζει όλες τις εντολές. Για να πουλάει διαφορετικούς επεξεργαστές η Intel; Γιατί δεν είναι χρήσιμα παντού; Τέλος πάντων αυτό προκαλεί ακόμα μεγαλύτερο μπέρδεμα και μάλλον και προβλήματα στον προγραμματισμό;

     

     

    avx.PNG

    Share this comment


    Link to comment
    Share on other sites

     

    On 21/7/2020 at 2:30 ΜΜ, το μέλος gdp77 έγραψε:

    Στην τελική όλοι αυτοί οι βαριοί υπολογισμοί που υποτίθεται ότι επιταχύνουν οι επεκτάσεις AVX512 γίνονται από GPU στις μέρες μας, οπότε, χωρίς να είμαι ειδικός, μάλλον έχει δίκιο όταν αναφέρει ότι αξιοποιούνται κυρίως από μετροπρογράμματα για να δείχνουν καλή την Intel.

    Πληροφοριακό:

    Οι GPU είναι -ας πούμε- 16384 μυρμήγκια, τη στιγμή που οι CPU είναι -ας πούμε- 8 σκορπιοί.

    Το ποιος νικάει είναι δύσκολο να ειπωθεί. Ωστόσο το μεγαλύτερο πρόβλημα, νομίζω είναι το bottleneck μεταφοράς από τη RAM της μητρικής στη RAM της GPU.

    Είχα τεστάρει κάποτε κάτι βασικές πράξεις σε CPU (με C++) και σε GPU (με OpenCL).

    Είχα διαπιστώσει ότι το μεγαλύτερο φρένο είναι η ταχύτητα ...της RAM. Έτσι όταν τα memory access είναι αρκετά πολλά σε σχέση με την επεξεργασία, το αποτέλεσμα είναι πενιχρό. Με 2 πυρήνες πετύχαινα βελτίωση ταχύτητας 10-20% αντί για 100% καθώς ήταν πλήρως παραλληλισμένη διαδικασία.

    Φυσικά λόγω της ανάγκης μεταφοράς των δεδομένων στην GPU, η απόδοσή της ήταν ΧΑΛΙΑ. 3 φορές πιο αργή.

    Edited by chameleon
    • Like 1

    Share this comment


    Link to comment
    Share on other sites

    Δεν ξέρω εάν πρέπει να πεθανει, και μάλιστα οδυνηρά, αλλά προσωπικά θα προτιμούσα να μην υπάρχει. Βοηθάει στην απόφαση ότι προσωπικά δεν μου είναι χρήσιμο.

    Ξεκίνησα να αναλύω τα μειονεκτήματα, αλλά ο Linus το έχει περιγράψει καλά, έστω και λίγο πιο γλαφυρά απ' ότι θα επέλεγα :).

     

    Κάτι που δεν σχολιάζει ο Linus, μια και δεν είναι δικό του πρόβλημα, είναι ότι ταυτόχρονα όλοι οι x86 δέχονται ασφυκτική πίεση από πιο "ελαφρές" σε εντολές αρχιτεκτονικές, όπως ARM. Είναι άραγε η λύση η ακόμη μεγαλύτερη εξειδίκευση σε επεκτάσεις; Νομίζω πως όχι, αλλά το πρόβλημα δεν είναι προφανές.

    • Like 3

    Share this comment


    Link to comment
    Share on other sites

    Μια χαρά έχει κάτι παρόμοιο και η ARM.

    Quote

    ... to present the latest update to Armv8-A architecture, known as the Scalable Vector Extension or SVE.

     

    Arm is significantly extending the vector processing capabilities associated with AArch64 (64-bit) execution in the Arm architecture, now and into the future, enabling implementation choices for vector lengths that scale from 128 to 2048 bits.

     

    Share this comment


    Link to comment
    Share on other sites


    Join the conversation

    You can post now and register later. If you have an account, sign in now to post with your account.

    Guest
    Add a comment...

    ×   Pasted as rich text.   Paste as plain text instead

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.