Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

MASM, C++, ΜΜΧ, SSE2 και Processor Pack

Îåêßíçóå áðü ôï ìÝëïò Παναγιώτης Καναβός. Τελευταία δημοσίευση από το μέλος kostbill στις 22-05-2006, 21:26. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  15-06-2005, 10:44 2810

    MASM, C++, ΜΜΧ, SSE2 και Processor Pack

    Επειδή ρωτήθηκε ...

    Το ξέρετε ότι μπορεί να γράψει κανείς assembly μέσα σε ένα αρχείο C++? Σίγουρα το ξέρετε οι παλιοί, αλλά οι καινούριοι μπορεί να μην ξέρουν και τί είναι assembly. Γλώσσα μηχανής για τους καθαρευουσιάνους.

    Η Visual C++ επιτρέπει "εξ από ανέκαθεν" να γράψει κανείς assembly κώδικα μέσα σε ένα αρχείο C++, είτε με τη μορφή function είτε σαν χύμα statements. Χρησιμοποιώντας assembly μπορεί να γράψει κανείς ΠΟΛΥ γρήγορο κώδικα αλλά κυρίως, μπορεί να χρησιμοποιήσει απευθείας εντολές MMX, SSE, SSE2 για να φτιάξει ένα ΠΟΛΥ γρήγορο αλγόριθμο, αλλά και νέες εντολές για νέους επεξεργαστές, για τους οποίους δεν υπάρχει ακόμα υποστήριξη από τον compiler.
        Από την άλλη, ο προγραμματισμός σε assembly είνα τρελό μανίκι. Άσε που θα πρέπει να ξανακοιτάξεις αυτό τον ωραίο κώδικα με SSE9 όταν θα βγει ο AMD XX999 που δεν θα το υποστηρίζει ακόμα Wink.

    Ευτυχώς για μας τους κάπως κοινούς θνητούς οι compiler της C++ από την 7 και μετά έχουν keywords για να χρησιμοποιήσει κανείς τις εντολές MMX, SSE, SSE2 και AMD 3DNow. Για τη Visual C++6 θα πρέπει να κατεβάσουμε το Visual C++ 6 Processor Pack. Αυτές οι εντολές είναι ουσιαστικά οι εντολές σε assembly σε μορφή functions, για να μην χρειάζεται κανείς να γράφει assembly για να τις καλέσει. Δυστυχώς, πάλι χρειάζεται πολύ δουλειά και προσεγμένος κώδικας για να πετύχει κανείς την απόδοση που θέλει. Άσε που θα πρέπει να μάθει νέα κόλπα όπως ενεργοποίηση-απενεργοποίηση του cache του επεξεργαστή, αλλιώς ο κώδικας του θα τρέχει ... πιό αργά απ' ότι πριν Embarrassed! Και να μην μιλήσουμε για τις επιπτώσεις του hyperthreading ή των multi-core επεξεργαστών.Tongue Tied
        Πληροφορίες θα βρείτε, για τις .NET εκδόσεις στο http://msdn.microsoft.com/library/en-us/vclang/html/_core_Assembler_.28.Inline.29_.Topics.asp και για την Visual C++6 στο http://msdn.microsoft.com/library/en-us/vccore98/html/_core_assembler_.28.inline.29_.topics.asp.

    Τελικά η καλύτερη λύση είναι να κατεβάσει κανείς τις έτοιμες βιβλιοθήκες της Intel ή της AMD που έχουν έτοιμους υλοποιημένους αλγόριθμους για πάρα πολλές περιπτώσεις, τόσο για desktop όσο και για mobile επεξεργαστές. Για όποιον μάλιστα θέλει να πετύχει την καλύτερη απόδοση, θα πρότεινα να αγοράσει τους compilers της κάθε εταιρείας. Για παράδειγμα, η Intel έχει βιβλιοθήκες με έτοιμους codecs για ήχο και video, αλγόριθμους συμπίεσης και επεξεργασίας σήματος αλλά και άλγεβρα, στατιστική και ανάλυση Fourier.  Για να μην πω και ότι την καλύτερη επίδοση θα την πετύχει κανείς μόνο χρησιμοποιώντας τα εργαλεία τις κάθε εταιρείας.
       Τα εργαλεία και τις βιβλιοθήκες της Intel θα τα βρείτε στο http://www.intel.com/software/products/ (κοιτάξτε τα Performance Libraries). Τα αντίστοιχα εργαλεία της AMD στο http://developer.amd.com/devtools.aspx .


    Και ένα ωραίο. Αυτό τον καιρό είναι σε beta η έκδοση 5 των Integrated Performance Primitives της Intel με νέους αλγόριθμους για επεξεργασία σημάτων, λόγου, κρυπτογράφησης και βίντεο, τόσο για Pentium όσο και για XScale επεξεργαστές.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  22-05-2006, 11:28 13087 σε απάντηση της 2810

    Απ: MASM, C++, ΜΜΧ, SSE2 και Processor Pack

    Κάποτε, ένας συνάδελφος (και πολύ πιο έμπειρος προγραμματιστής απο μένα)

    μου είπε οτι η intel έχει έναν compiler που χρησιμοποιεί μόνο η ίδια και μπορέι

    να παράγει κώδικα κατά 30% γρηγορότερο και 30% ταχύτερο απο έναν compiler

    της microsoft. Επίσης οτι τον κρατάνε με νύχια και με δόντια για να μη βγεί απο

    την εταιρια.

    Καλή φαση!

    Άσχετο, απλά το είπα επειδή μου 'ρθε :).
  •  22-05-2006, 12:59 13092 σε απάντηση της 13087

    Απ: MASM, C++, ΜΜΧ, SSE2 και Processor Pack

    Ναι, και δεν τον βγάζει στην αγορά από φόβο μην αυξηθεί η ζήτηση για επεξεργαστές intel και έχει πρόβλημα στην παραγωγή της... ;-)
    Χρήστος Γεωργακόπουλος
  •  22-05-2006, 13:01 13093 σε απάντηση της 13092

    Απ: MASM, C++, ΜΜΧ, SSE2 και Processor Pack

    Επίσης, αν είναι 30% γρηγορότερος και 30% ταχύτερος, τότε ο κώδικας που βγάζουν οι compilers της microsoft θα είναι 60% πιο αργός. Συγκλονιστικό ! :-)
    Χρήστος Γεωργακόπουλος
  •  22-05-2006, 14:35 13100 σε απάντηση της 13093

    Απ: MASM, C++, ΜΜΧ, SSE2 και Processor Pack

    Σε προηγουμενη ζωή ήμουν C/C++ freak. Είχα μια mania με τους C/C++ compilers και δοκίμαζα ότι έπεφτε στα χερια μου.

    Τον Intel C++ τον είχα δοκιμάσει και όντως με ένα απλό recompile έβλεπες διαφορα. Ένας compiler που με είχε ενθουσιάσει με τις επιδόσεις tou ήταν ο VectorC. Παραθέτω link για περαιτέρω μελέτη...

    http://www.codeplay.com/
    Palladinos Nick
    Software Engineer
    -----------------------
    The limits of my language mean the limits of my world. (Ludwig Wittgenstein)
  •  22-05-2006, 18:26 13111 σε απάντηση της 13087

    Απ: MASM, C++, ΜΜΧ, SSE2 και Processor Pack

    Έχω πολύ καιρό να δω ένα καλό compiler benchmark, τόσο για συμβατότητα όσο και για ταχύτητα (του compiler και του παραγόμενου κώδικα). Το τελευταίο που είχα δει ήταν στο C/C++ Users Journal (νομίζω) όταν είχε πρωτοβγεί το VS 2003 και έβγαζε την Visual C++ 7.1 ως τον πιο compliant compiler με ποσοστό επιτυχίας 96%-99%. Από τότε δεν έχω ξαναβρεί ένα καλό συγκριτικό


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  22-05-2006, 21:26 13119 σε απάντηση της 2810

    Απ: MASM, C++, ΜΜΧ, SSE2 και Processor Pack

    Ωχ...

    Εννοούσα γρηγορότερο και μικρότερο σε κώδικα. Δε γνωρίζω γιατί η intel δε τον βγάζει στην αγορά, δε γνωρίζω ακόμα αν ισχύει σίγουρα, μπορεί και ο φίλος μου να παραπληροφορήθηκε.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems