Βιβλίο για το parallel programming στο Linux (και όχι μόνο) 6


Σε μια συζήτηση που είχα με ένα φίλο μου κάπου μεταξύ καφέ και μπύρας είχαμε παρατηρήσει ότι αν και η πλειοψηφία τον επεξεργαστών που μπορεί να βρει κανείς στην αγορά έχει τουλάχιστον δύο πυρήνες (ίσως και περισσότερους) ελάχιστα προγράμματα εκμεταλλεύονται την παρουσία δύο πυρήνων. Αν και είμαστε και οι δύο χρήστες Linux γνωρίζουμε ότι το φαινόμενο δεν περιορίζεται στο Linux αλλά στα περισσότερα λειτουργικά συστήματα.

Οι βασικοί λόγοι για τους οποίους συμβαίνει αυτό είναι ότι κατά βάση μέχρι πριν μερικά χρόνια τα συστήματα με πολλούς πυρήνες δεν ήταν προσβάσιμα στο μέσω χρήστη και πολλές φορές ούτε στο μέσο προγραμματιστή, έτσι οι εφαρμογές που αξιοποιούσαν τα πλεονεκτήματα αυτών των συστημάτων συχνά ήταν πειραματικές ή ερευνητικές εφαρμογές. Από την άλλη ο προγραμματισμός ειδικά για συστήματα παράλληλης επεξεργασίας χρειάζεται συγχρονισμό από την πλευρά του προγραμματιστή και πολλές άλλες τεχνικές που μέχρι πρόσφατα οι περισσότεροι προγραμματιστές δεν είχαν χρησιμοποιήσει.

Πριν από λίγες μέρες (στις 2 του Γενάρη συγκεκριμένα) ο Paul E. McKenney υπάλληλος της ΙΒΜ στο Linux Technology Center της εταιρεία στο Beaverton και ενεργός στην ανάπτυξη του πυρήνα του Linux άρχισε ένα νέο project που μου κίνησε το ενδιαφέρον, ένα βιβλίο (e-book σε pdf για την ακρίβεια) με τίτλο “Is Parallel Programming Hard, And, If So, What Can You DoAbout It?”. Το βιβλίο είναι “ανοιχτού κώδικα” αδειοδοτημένο σύμφωνα με την άδεια Creative Commons Attribution-Share Alike 3.0 US ενώ ο κώδικας που περιγράφει το βιβλίο σε διάφορα παραδείγματα είναι GPL (v2 ή v2 ή νεότερη εξαρτάται). Μάλιστα για να μπορέσει να οργανωθεί καλύτερα το project είναι διαθέσιμο σε git (στο git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/perfbook.git), η πλέον πρόσφατη έκδοση σε pdf του βιβλίου (την ώρα που γραφόταν το άρθρο) είναι εδώ. Περισσότερα στοιχεία θα βρείτε στο blog του κύριου McKenney και στην “Σπαρτιατική” οφείλω να ομολογήσω σελίδα του project.

Στόχος του βιβλίου είναι να δώσει στους προγραμματιστές μια βασική ιδέα για το πως μπορούν να ασχοληθούν με το parallel programming χωρίς να σπάσουν τα νεύρα τους και να ξεδιαλύνει μύθους και πραγματικότητες σχετικά με το πόσο δύσκολο είναι να προγραμματίσει κανείς παράλληλα. Κάποιοι που γνωρίζουν καλύτερα τις γνώσεις μου στο προγραμματισμό που είναι τουλάχιστον ανεπαρκείς (για να μην πω ανύπαρκτες καθώς υπάρχουν βασικές έννοιες που δεν έχω κατανοήσει) ή έχουν ανάλογες αν όχι λιγότερες γνώσεις επί του θέματος ίσως αναρωτηθούν για την σκοπιμότητα της ανάρτησης αυτής. Πιστεύω, ότι η χρήση όλο και περισσότερο παράλληλου προγραμματισμού σε μια εποχή που ακόμα και ένας μέσος (για να μην πω φθηνός) επεξεργαστής έχει τουλάχιστον δύο πυρήνες (και αυτή η τάση μέρα με την μέρα διευρύνεται) μπορεί να έχει σημαντικά οφέλη και στην απόδοση και στην ποιότητα του λογισμικού που χρησιμοποιούμε στους υπολογιστές μας.


About Eleftherios Kosmas

Technologist in the University of Athens, open source enthusiast, member of the local hackerspace, vice chairperson of the Libre Space Foundation,

Σχολιάστε

6 thoughts on “Βιβλίο για το parallel programming στο Linux (και όχι μόνο)

  • siropio

    Ωραιο eBook.
    Το καλυτερο ειναι οτι θα ειναι ΚΑΙ δυναμικο αφου θα προτιθενται κεφαλαια με τον καιρο. Οποτε εχουμε ενα παντρεμα δυο θετικων τομεων.
    Ενας ειναι η εδραιωμενη γνωση που βρισκουμε σε βιβλια με καλα στοιχειοθετημενη δομη και Δευτερος ειναι η state of the art γνωση που θα προστιθεται.
    Σιγουρα τα βιβλια πανε με μια καθυστερηση φασης απο την cutting edge γνωση αλλα τετοιου ειδους παντεματα μειωνουν κατα πολυ τη διαφορα.
    To εβγαλαν και σε mobi που με βολευει μιας και πηρα προσφατα εναν eBook reader. Ευτυχως ηταν το Kindle DX και με ενα rotate θα χωραει και τις διστηλες σελιδες , που απο οτι ειδα εχει πολλες.
    Η γλωσσα ειναι C απο ενα skimming που εκανα.

    • Eleftherios Kosmas Post author

      Ναι και τα mobi τα διαβάζουν οι περισσότερες εφαρμογές για κινητά τηλέφωνα, βλέπε Android, iPhone, Symbian etc. Όντως κατά βάση είναι C αν και νομίζω ότι μπορεί να έχει και σημεία με λίγη C++.

  • cortlinux

    Μία χαζή ερώτηση. Οι χρήστες τι έχουμε να κερδίσουμε από την διαδικασία αυτή; Γιατί από παλιά ακούω για τους διπύρηνους και τους 64μπιτους αλλά εγώ δεν έχω δει ουσιαστική διαφορά ως χρήστης. Ή δεν είναι τόσο αισθητή;

    • Eleftherios Kosmas Post author

      Το ότι δεν βλέπουμε ουσιαστική διαφορά, ειδικά όσο αφορά τους διπύρηνους και τους 64bit επεξεργαστές οφείλεται στο ότι το λογισμικό που χρησιμοποιούμε δεν είναι πάντα γραμμένο για να εκμεταλλεύεται αυτές τις δυνατότητες στο έπακρο. Όσο οι developers (κλειστού και ακόμα περισσότερο ανοιχτού κώδικα) γραφούν προγράμματα με τέτοιο τρόπο που να εκμεταλλεύονται περισσότερο τις δυνατότητες αυτές τόσο περισσότερο μπορούμε να βλέπουμε ουσιαστικές διαφορές στη ταχύτητα και τις δυνατότητες των μηχανημάτων μας.

  • cortlinux

    Δηλαδή να υποθέσω θα βλέπουμε ουσιαστική αύξηση στην ταχύτητα και λιγότερα κρασαρίσματα πάντα υποθετικά; Ξέρεις ρωτάω ως απλός χρήστης που ακούει συνεχώς για μπίτια και πολυπύρηνα μπιμπλίκια και πέρα από του ουάου δεν ξέρει σε τι ουσιαστικά βοηθά όλο αυτό.

    Καλή επιτυχία με το περιοδικό. 🙂

    • Eleftherios Kosmas Post author

      Όταν οι φανταστικοί μας developers αρχίσουν να εκμεταλλεύονται τις νέες δυνατότητες που μας δίνουν τα νέα πολυπύρηνα μπιμπλίκια ειδικά ναι θα δούμε σημαντική αύξηση στην ταχύτητα (για τα crashes μπορούμε να ελπίζουμε μόνο).