«Είναι ευκολότερο να απαντάς παρά να μένεις σιωπηλός» - μια υπέροχη συνέντευξη με τον πατέρα της συναλλακτικής μνήμης, Maurice Herlihy

Maurice Herlihy - ιδιοκτήτης δύο Βραβεία Dijkstra. Το πρώτο είναι για δουλειά "Συγχρονισμός χωρίς αναμονή" (Πανεπιστήμιο Brown) και το δεύτερο, πιο πρόσφατο, - "Μνήμη συναλλαγών: Αρχιτεκτονική υποστήριξη για δομές δεδομένων χωρίς κλείδωμα" (Τεχνολογικό Πανεπιστήμιο της Βιρτζίνια). Το βραβείο Dijkstra απονέμεται για εργασία της οποίας η σημασία και η επιρροή είναι ορατή για τουλάχιστον δέκα χρόνια και ο Maurice είναι προφανώς ένας από τους πιο διάσημους ειδικούς στον τομέα. Αυτή τη στιγμή εργάζεται ως καθηγητής στο Πανεπιστήμιο Μπράουν και έχει πολλά επιτεύγματα που εκτείνονται σε μια παράγραφο. Αυτή τη στιγμή ερευνά το blockchain στο πλαίσιο του κλασικού κατανεμημένου υπολογισμού.

Προηγουμένως, ο Maurice είχε ήδη έρθει στη Ρωσία για SPTCC (εγγραφή βίντεο) και πραγματοποίησε μια εξαιρετική συνάντηση της κοινότητας προγραμματιστών JUG.ru Java στην Αγία Πετρούπολη (εγγραφή βίντεο).

Αυτό το habrapost είναι μια υπέροχη συνέντευξη με τον Maurice Herlihy. Συζητά τα ακόλουθα θέματα:

  • Αλληλεπίδραση μεταξύ ακαδημαϊκού κόσμου και βιομηχανίας.
  • Ίδρυμα για την Έρευνα Blockchain;
  • Από πού προέρχονται οι πρωτοποριακές ιδέες; Η επιρροή της δημοτικότητας;
  • Διδακτορικό υπό την επίβλεψη της Barbara Liskov.
  • Ο κόσμος περιμένει πολλαπλούς πυρήνες.
  • Ένας νέος κόσμος φέρνει νέα προβλήματα. NVM, NUMA και hacking αρχιτεκτονικής.
  • Μεταγλωττιστές έναντι επεξεργαστών, RISC εναντίον CISC, κοινόχρηστη μνήμη έναντι διαβίβασης μηνυμάτων.
  • Η τέχνη της συγγραφής εύθραυστου κώδικα πολλαπλών νημάτων.
  • Πώς να διδάξετε τους μαθητές να γράφουν πολύπλοκο κώδικα πολλαπλών νημάτων.
  • Νέα έκδοση του βιβλίου "The Art of Multiprocessor Programming";
  • Πώς εφευρέθηκε η συναλλακτική μνήμη;   
  • Γιατί αξίζει να διεξαχθεί έρευνα στον τομέα των κατανεμημένων υπολογιστών;
  • Έχει σταματήσει η ανάπτυξη αλγορίθμων και πώς να προχωρήσουμε;
  • Εργασία στο Brown University;
  • Η διαφορά μεταξύ της έρευνας σε ένα πανεπιστήμιο και σε μια εταιρεία.
  • Ύδρα και SPTDC.

Η συνέντευξη γίνεται από:

Βιτάλι Ακσένοφ — επί του παρόντος, μεταδιδακτορικός στο IST Austria και υπάλληλος του Τμήματος Τεχνολογιών Υπολογιστών στο Πανεπιστήμιο ITMO. Διεξάγει έρευνα στον τομέα της θεωρίας και της πρακτικής ανταγωνιστικών δομών δεδομένων. Πριν εργαστεί στο IST, έλαβε το διδακτορικό του από το Πανεπιστήμιο Paris Diderot και το Πανεπιστήμιο ITMO υπό την επίβλεψη του καθηγητή Peter Kuznetsov.

Αλεξέι Φεντόροφ - Παραγωγός στην JUG Ru Group, μια ρωσική εταιρεία που διοργανώνει συνέδρια για προγραμματιστές. Ο Alexey συμμετείχε στην προετοιμασία περισσότερων από 50 συνεδρίων και το βιογραφικό του περιλαμβάνει τα πάντα, από τη θέση του μηχανικού ανάπτυξης στην Oracle (JCK, Java Platform Group) μέχρι τη θέση του προγραμματιστή στην Odnoklassniki.

Βλαντιμίρ Σίτνικοφ - Μηχανικός στο Netcracker. Δέκα χρόνια δουλειάς για την απόδοση και την επεκτασιμότητα του NetCracker OS, λογισμικού που χρησιμοποιείται από τηλεπικοινωνιακούς φορείς για την αυτοματοποίηση των διαδικασιών διαχείρισης εξοπλισμού δικτύου και δικτύου. Ενδιαφέρεστε για ζητήματα απόδοσης της Java και της Oracle Database. Συγγραφέας περισσότερων από δώδεκα βελτιώσεων απόδοσης στο επίσημο πρόγραμμα οδήγησης PostgreSQL JDBC.

Αλληλεπίδραση ακαδημαϊκού κόσμου και βιομηχανίας

Alexey: Maurice, έχετε εργαστεί σε ένα ακαδημαϊκό περιβάλλον για πολύ καιρό και το πρώτο ερώτημα είναι η αλληλεπίδραση μεταξύ της ακαδημαϊκής και της βιομηχανικής σφαίρας. Θα μπορούσατε να μιλήσετε για το πώς έχουν αλλάξει οι αλληλεπιδράσεις μεταξύ τους πρόσφατα; Τι συνέβη πριν από 20-30 χρόνια και τι συμβαίνει τώρα; 

Maurice: Πάντα προσπαθούσα να συνεργάζομαι στενά με εμπορικές εταιρείες γιατί έχουν ενδιαφέροντα προβλήματα. Κατά κανόνα, δεν ενδιαφέρονται πολύ ούτε για τη δημοσίευση των αποτελεσμάτων τους ούτε για λεπτομερείς εξηγήσεις των προβλημάτων τους στην παγκόσμια κοινότητα. Ενδιαφέρονται μόνο για την επίλυση αυτών των προβλημάτων. Δούλεψα σε τέτοιες εταιρείες για κάποιο διάστημα. Πέρασα πέντε χρόνια δουλεύοντας με πλήρη απασχόληση σε ένα ερευνητικό εργαστήριο στην Digital Equipment Corporation, η οποία ήταν μια μεγάλη εταιρεία υπολογιστών. Δούλευα μια μέρα την εβδομάδα στη Sun, στη Microsoft, στην Oracle και έκανα λίγη δουλειά στο Facebook. Τώρα θα πάω σε σαββατιάτικη άδεια (ένας καθηγητής σε αμερικανικό πανεπιστήμιο επιτρέπεται να παίρνει τέτοια άδεια για ένα χρόνο περίπου μία φορά κάθε έξι χρόνια) και να εργαστώ σε Αλγκόραντ, αυτή είναι μια εταιρεία κρυπτονομισμάτων στη Βοστώνη. Η στενή συνεργασία με εταιρείες ήταν πάντα ευχαρίστηση γιατί έτσι μαθαίνεις για νέα και ενδιαφέροντα πράγματα. Μπορεί ακόμη και να είστε το πρώτο ή το δεύτερο άτομο που δημοσιεύει ένα άρθρο για ένα επιλεγμένο θέμα, αντί να εργάζεται για τη σταδιακή βελτίωση λύσεων σε προβλήματα που όλοι οι άλλοι εργάζονται ήδη.

Alexey: Μπορείτε να μας πείτε με περισσότερες λεπτομέρειες πώς συμβαίνει αυτό;

Maurice: Φυσικά. Ξέρετε, όταν δούλευα στην Digital Equipment Corporation, εγώ και ο Elliot Moss, εφεύραμε τη μνήμη συναλλαγών. Ήταν μια πολύ γόνιμη περίοδος που όλοι άρχισαν να ενδιαφέρονται για την πληροφορική. Ο παραλληλισμός, συμπεριλαμβανομένων, αν και δεν υπήρχαν ακόμη συστήματα πολλαπλών πυρήνων. Κατά τη διάρκεια των ημερών του Sun και της Oracle, δούλεψα πολύ σε παράλληλες δομές δεδομένων. Στο Facebook δούλεψα το έργο τους για το blockchain, για το οποίο δεν μπορώ να μιλήσω, αλλά ελπίζω να δημοσιοποιηθεί σύντομα. Το επόμενο έτος, στο Algorand, θα εργαστώ σε μια ερευνητική ομάδα που θα μελετά τα έξυπνα συμβόλαια.

Alexey: Το Blockchain έχει γίνει ένα πολύ δημοφιλές θέμα τα τελευταία χρόνια. Αυτό θα βοηθήσει την έρευνά σας; Ίσως θα διευκολύνει τη λήψη επιχορηγήσεων ή την παροχή πρόσβασης σε πόρους από εταιρείες που δραστηριοποιούνται στον κλάδο;

Maurice: Έχω ήδη λάβει μια μικρή επιχορήγηση από το Ethereum Foundation. Η δημοτικότητα του blockchain είναι πολύ χρήσιμη για να εμπνεύσει τους μαθητές να εργαστούν σε αυτόν τον τομέα. Ενδιαφέρονται πολύ για αυτό και είναι ενθουσιασμένοι που θα εμπλακούν, αλλά μερικές φορές δεν συνειδητοποιούν ότι η έρευνα που ακούγεται συναρπαστική εξωτερικά αποδεικνύεται ότι περιλαμβάνει πραγματικά σκληρή δουλειά. Ωστόσο, είμαι πολύ ενθουσιασμένος που θα χρησιμοποιήσω όλο αυτό το μυστήριο γύρω από το blockchain για να προσελκύσω φοιτητές. 

Αλλά δεν είναι μόνο αυτό. Είμαι στο συμβουλευτικό συμβούλιο πολλών νεοφυών επιχειρήσεων blockchain. Κάποιοι από αυτούς μπορεί να τα καταφέρουν, άλλοι όχι, αλλά είναι πάντα πολύ ενδιαφέρον να βλέπεις τις ιδέες τους, να τις μελετάς και να συμβουλεύεις τους ανθρώπους. Το πιο συναρπαστικό είναι όταν προειδοποιείς τους ανθρώπους να μην κάνουν κάτι. Πολλά πράγματα φαίνονται σαν μια καλή ιδέα στην αρχή, αλλά είναι πραγματικά;

Ίδρυμα για την Έρευνα Blockchain

Vitaly: Μερικοί άνθρωποι πιστεύουν ότι το μέλλον βρίσκεται στο blockchain και στους αλγόριθμούς του. Και άλλοι λένε ότι είναι απλώς μια άλλη φούσκα. Μπορείτε να μοιραστείτε τη γνώμη σας για αυτό το θέμα;

Maurice: Πολλά από αυτά που συμβαίνουν στον κόσμο του blockchain είναι λάθος, μερικά είναι απλώς απάτη, πολλά είναι υπερεκτιμημένα. Ωστόσο, νομίζω ότι υπάρχει μια σταθερή επιστημονική βάση για αυτές τις μελέτες. Το γεγονός ότι ο κόσμος του blockchain είναι γεμάτος ιδεολογικές διαφορές δείχνει το επίπεδο ενθουσιασμού και αφοσίωσης. Από την άλλη, αυτό δεν είναι ιδιαίτερα ωφέλιμο για την επιστημονική έρευνα. Τώρα, αν δημοσιεύσετε ένα άρθρο που μιλά για τις αδυναμίες ενός συγκεκριμένου αλγορίθμου, η αντίδραση που προκύπτει δεν είναι πάντα πλήρως επιστημονική. Συχνά οι άνθρωποι εκτοξεύουν τα συναισθήματά τους. Νομίζω ότι αυτού του είδους ο ενθουσιασμός σε αυτόν τον τομέα μπορεί να φαίνεται ελκυστικός σε κάποιους, αλλά στο τέλος της ημέρας, υπάρχουν πραγματικά επιστημονικά και μηχανικά ζητήματα που πρέπει να αντιμετωπιστούν. Υπάρχει πολλή Επιστήμη Υπολογιστών εδώ.

Vitaly: Προσπαθείτε λοιπόν να βάλετε τα θεμέλια για την έρευνα blockchain, σωστά;

Maurice: Προσπαθώ να βάλω τα θεμέλια για μια σταθερή, επιστημονικά και μαθηματικά ορθή πειθαρχία. Και μέρος του προβλήματος είναι ότι μερικές φορές πρέπει να αντικρούσετε μερικές από τις υπερβολικά σκληρές θέσεις άλλων ανθρώπων και να τις αγνοήσετε. Μερικές φορές οι άνθρωποι ρωτούν γιατί εργάζομαι σε μια περιοχή όπου ενδιαφέρονται μόνο οι τρομοκράτες και οι διακινητές ναρκωτικών. Μια τέτοια αντίδραση είναι τόσο ανούσια όσο η συμπεριφορά των οπαδών που επαναλαμβάνουν τυφλά τα λόγια σας. Νομίζω ότι η αλήθεια είναι κάπου στη μέση. Το blockchain θα έχει βαθύ αντίκτυπο στην κοινωνία και την παγκόσμια οικονομία. Αλλά αυτό μάλλον δεν θα συμβεί χάρη στη σύγχρονη τεχνολογία. Οι σύγχρονες τεχνολογίες θα αναπτυχθούν και αυτό που θα ονομάζεται blockchain στο μέλλον θα γίνει πολύ σημαντικό. Μπορεί να μην μοιάζει καν με τα σύγχρονα blockchains, αυτό είναι ένα ανοιχτό ερώτημα.

Εάν οι άνθρωποι εφεύρουν νέες τεχνολογίες, θα συνεχίσουν να τις αποκαλούν blockchain. Θέλω να πω, ακριβώς όπως το σημερινό Fortran δεν έχει καμία σχέση με τη γλώσσα Fortran από τη δεκαετία του 1960, αλλά όλοι συνεχίζουν να την αποκαλούν Fortran. Το ίδιο και για το UNIX. Αυτό που ονομάζεται «blockchain» θα εξακολουθεί να κάνει την επανάστασή του. Αλλά αμφιβάλλω ότι αυτό το νέο blockchain θα μοιάζει με αυτό που απολαμβάνουν όλοι να χρησιμοποιούν σήμερα.

Από πού προέρχονται οι πρωτοποριακές ιδέες; Αντίκτυπος της δημοτικότητας

Alexey: Η δημοτικότητα του blockchain οδήγησε σε νέα αποτελέσματα από επιστημονική άποψη; Περισσότερη αλληλεπίδραση, περισσότεροι φοιτητές, περισσότερες εταιρείες στην περιοχή. Υπάρχουν ήδη αποτελέσματα από αυτή την αύξηση της δημοτικότητας;

Maurice: Με ενδιέφερε αυτό όταν κάποιος μου έδωσε ένα επίσημο φυλλάδιο για μια εταιρεία που μόλις είχε συγκεντρώσει αρκετά χρήματα. Έγραφε για καθήκον των βυζαντινών στρατηγών, με το οποίο είμαι κάτι παραπάνω από εξοικειωμένος. Αυτό που αναγραφόταν στο φυλλάδιο ήταν σαφώς τεχνικά λανθασμένο. Οι άνθρωποι που τα έγραψαν όλα αυτά δεν κατάλαβαν πραγματικά το μοντέλο πίσω από το πρόβλημα... και όμως αυτή η εταιρεία συγκέντρωσε πολλά χρήματα. Στη συνέχεια, η εταιρεία αντικατέστησε αθόρυβα αυτό το φυλλάδιο με μια πολύ πιο σωστή έκδοση - και δεν θα πω ποιο ήταν το όνομα αυτής της εταιρείας. Είναι ακόμα τριγύρω και τα πάνε πολύ καλά. Αυτό το περιστατικό με έπεισε ότι, πρώτον, το blockchain είναι απλώς μια μορφή κατανεμημένου υπολογισμού. Δεύτερον, το όριο εισόδου (τουλάχιστον τότε, πριν από τέσσερα χρόνια) ήταν αρκετά χαμηλό. Οι άνθρωποι που εργάζονταν σε αυτόν τον τομέα ήταν πολύ ενεργητικοί και έξυπνοι, αλλά δεν διάβαζαν επιστημονικές εργασίες. Προσπάθησαν να επανεφεύρουν γνωστά πράγματα και το έκαναν λάθος. Σήμερα το δράμα έχει μειωθεί.

Alexey: Αυτό είναι πολύ ενδιαφέρον, γιατί πριν από μερικά χρόνια είχαμε μια διαφορετική τάση. Μοιάζει λίγο με την ανάπτυξη front-end, όταν οι προγραμματιστές front-end που βασίζονται σε προγράμματα περιήγησης εφευρέθηκαν εκ νέου ολόκληρες τεχνολογίες που ήταν ήδη δημοφιλείς στο back-end: συστήματα κατασκευής, συνεχής ενοποίηση, τέτοια πράγματα. 

Maurice: Συμφωνώ. Αλλά αυτό δεν προκαλεί έκπληξη, γιατί οι πραγματικά πρωτοποριακές ιδέες προέρχονται πάντα από έξω από την καθιερωμένη κοινότητα. Οι καταξιωμένοι ερευνητές, ειδικά οι καταξιωμένοι ακαδημαϊκοί, είναι απίθανο να κάνουν κάτι πραγματικά πρωτοποριακό. Είναι εύκολο να γράψετε μια εργασία για το επόμενο συνέδριο σχετικά με το πώς βελτιώσατε ελαφρώς τα αποτελέσματα της προηγούμενης εργασίας σας. Πηγαίνετε σε ένα συνέδριο, μαζευτείτε με φίλους, μιλήστε για τα ίδια πράγματα. Και οι άνθρωποι που ξεσπούν με πρωτοποριακές ιδέες προέρχονται σχεδόν πάντα από το εξωτερικό. Δεν ξέρουν τους κανόνες, δεν ξέρουν τη γλώσσα, αλλά παρόλα αυτά... Εάν βρίσκεστε σε μια καθιερωμένη κοινότητα, σας συμβουλεύω να δώσετε προσοχή σε νέα πράγματα, σε κάτι που δεν ταιριάζει στη συνολική εικόνα. Κατά μία έννοια, μπορεί να γίνει μια προσπάθεια συνδυασμού εξωτερικών, πιο ρευστών εξελίξεων με μεθόδους που ήδη καταλαβαίνουμε. Ως πρώτο βήμα, προσπαθήστε να δημιουργήσετε μια επιστημονική βάση και στη συνέχεια να την αλλάξετε ώστε να μπορεί να εφαρμοστεί σε νέες πρωτοποριακές ιδέες. Νομίζω ότι το blockchain είναι εξαιρετικό για να είναι μια φρέσκια, ανατρεπτική ιδέα.

Alexey: Γιατί πιστεύεις ότι συμβαίνει αυτό; Επειδή οι άνθρωποι «έξω» δεν έχουν συγκεκριμένους φραγμούς εγγενείς στην κοινότητα;

Maurice: Υπάρχει ένα μοτίβο εδώ. Αν διαβάσετε την ιστορία των ιμπρεσιονιστών στη ζωγραφική και την τέχνη γενικά, τότε κάποτε διάσημοι καλλιτέχνες απέρριψαν τον ιμπρεσιονισμό. Είπαν ότι ήταν κάπως παιδικό. Μια γενιά αργότερα, αυτή η προηγουμένως απορριφθείσα μορφή τέχνης έγινε το πρότυπο. Αυτό που βλέπω στον τομέα μου: οι εφευρέτες του blockchain δεν ενδιαφέρθηκαν για την ισχύ, για την αύξηση των δημοσιεύσεων και του δείκτη αναφορών, ήθελαν απλώς να κάνουν κάτι καλό. Κι έτσι κάθισαν και άρχισαν να το κάνουν. Τους έλειπε ένα συγκεκριμένο τεχνικό βάθος, αλλά αυτό μπορεί να διορθωθεί. Είναι πολύ πιο δύσκολο να βρεις νέες δημιουργικές ιδέες παρά να διορθώσεις και να ενισχύσεις ανεπαρκώς ώριμες. Χάρη σε αυτούς τους εφευρέτες, έχω τώρα κάτι να κάνω!

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

Maurice: Μια καλή αναλογία είναι η κατανεμημένη υπολογιστική. Σκεφτείτε το blockchain σαν να ήταν μια startup και κατανεμημένη πληροφορική ως μια μεγάλη, καθιερωμένη εταιρεία. Η κατανεμημένη πληροφορική βρίσκεται στη διαδικασία απόκτησης και συγχώνευσης με το blockchain.

Διδάκτωρ υπό την επίβλεψη της Barbara Liskov

Vitaly: Έχουμε πολλές ερωτήσεις ακόμα! Εξετάζαμε το ιστορικό σας και συναντήσαμε ένα ενδιαφέρον γεγονός για το διδακτορικό σας. Ναι, αυτό ήταν πολύ καιρό πριν, αλλά φαίνεται να είναι ένα σημαντικό θέμα. Λάβατε το διδακτορικό σας υπό την καθοδήγηση του εαυτού σας Μπάρμπαρα Λισκώφ! Η Barbara είναι πολύ γνωστή στην κοινότητα των γλωσσών προγραμματισμού και γενικά πολύ γνωστό πρόσωπο. Είναι λογικό η έρευνά σας να ήταν στον τομέα των γλωσσών προγραμματισμού. Πώς μεταπηδήσατε στον παράλληλο υπολογισμό; Γιατί αποφασίσατε να αλλάξετε θέμα;

Maurice: Εκείνη την εποχή, η Barbara και η ομάδα της κοιτούσαν απλώς κατανεμημένους υπολογιστές, κάτι που ήταν μια πολύ νέα ιδέα. Υπήρχαν επίσης εκείνοι που είπαν ότι η κατανεμημένη πληροφορική ήταν ανοησία και ότι οι υπολογιστές που επικοινωνούσαν μεταξύ τους ήταν άσκοπη. Ένα από τα ζητήματα που αντιμετωπίζονται στον κατανεμημένο υπολογισμό που τον διακρίνει από τον κεντρικό υπολογιστή είναι η ανοχή σφαλμάτων. Μετά από πολλή έρευνα, αποφασίσαμε ότι μια κατανεμημένη γλώσσα προγραμματισμού υπολογιστών έπρεπε να έχει κάτι σαν ατομικές συναλλαγές, επειδή δεν μπορείτε ποτέ να είστε σίγουροι ότι μια απομακρυσμένη κλήση θα πετύχει. Από τη στιγμή που έχετε συναλλαγές, προκύπτει το πρόβλημα της διαχείρισης συγχρονισμού. Στη συνέχεια, έγινε πολλή δουλειά για την απόκτηση εξαιρετικά παράλληλων δομών δεδομένων συναλλαγών. Μετά, όταν αποφοίτησα, πήγα στο Carnegie Mellon και άρχισε να ψάχνει για ένα θέμα για να εργαστεί. Μου ήρθε στο μυαλό ότι η πληροφορική έχει μετακινηθεί από μεμονωμένους υπολογιστές σε δίκτυα υπολογιστών. Οι πολυεπεξεργαστές θα ήταν μια φυσική συνέχεια της προόδου - η λέξη "πολυπύρηνα" δεν υπήρχε ακόμη. Σκέφτηκα: ποιο είναι το ισοδύναμο των ατομικών συναλλαγών για ένα σύστημα πολλαπλών πυρήνων; Σίγουρα δεν είναι τακτικές συναλλαγές γιατί είναι πολύ μεγάλες και βαριές. Και κάπως έτσι μου ήρθε η ιδέα γραμμικοποίηση και έτσι κατέληξα σε όλο τον συγχρονισμό χωρίς αναμονή. Αυτή ήταν μια προσπάθεια απάντησης στο ερώτημα ποιο είναι το ανάλογο των ατομικών συναλλαγών για ένα σύστημα πολλαπλών επεξεργαστών με κοινή μνήμη. Εκ πρώτης όψεως, αυτό το έργο μπορεί να φαίνεται εντελώς διαφορετικό, αλλά στην πραγματικότητα είναι μια συνέχεια της ίδιας θεματικής.

Ο κόσμος περιμένει πολυπύρηνο

Vitaly: Αναφέρατε ότι εκείνη την εποχή υπήρχαν πολύ λίγοι πολυπύρηνες υπολογιστές, σωστά;

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

Alexey: Αυτό δεν σημαίνει ότι σε εκείνες τις αρχαίες εποχές ήταν περισσότερο μια θεωρητική μελέτη;

Maurice: Δεν ήταν μια θεωρητική μελέτη, αλλά μάλλον μια κερδοσκοπική μελέτη. Όλα αυτά δεν αφορούσαν την εργασία με πολλά θεωρήματα· μάλλον, υποθέσαμε υποθέσεις για μια αρχιτεκτονική που δεν υπήρχε εκείνη την εποχή. Για αυτό είναι η έρευνα! Καμία εταιρεία δεν θα είχε κάνει κάτι τέτοιο· όλα ήταν κάτι από το μακρινό μέλλον. Στην πραγματικότητα, αυτό ίσχυε μέχρι το 2004, όταν εμφανίστηκαν πραγματικοί πολυπύρηνες επεξεργαστές. Επειδή οι επεξεργαστές υπερθερμαίνονται, μπορείτε να κάνετε τον επεξεργαστή ακόμα μικρότερο, αλλά δεν μπορείτε να τον κάνετε πιο γρήγορο. Εξαιτίας αυτού, υπήρξε μια μετάβαση σε αρχιτεκτονικές πολλαπλών πυρήνων. Και τότε αυτό σήμαινε ότι ξαφνικά υπήρχε μια χρήση για όλες τις έννοιες που είχαμε αναπτύξει στο παρελθόν.

Alexey: Γιατί πιστεύεις ότι οι επεξεργαστές πολλαπλών πυρήνων εμφανίστηκαν μόλις τη δεκαετία του XNUMX; Γιατί λοιπόν είναι τόσο αργά;

Maurice: Αυτό οφείλεται σε περιορισμούς υλικού. Η Intel, η AMD και άλλες εταιρείες είναι πολύ καλές στην αύξηση της ταχύτητας του επεξεργαστή. Όταν κάποια στιγμή οι επεξεργαστές έγιναν αρκετά μικροί που δεν μπορούσαν πλέον να αυξήσουν την ταχύτητα του ρολογιού γιατί οι επεξεργαστές θα άρχιζαν να καίγονται. Μπορείτε να τα κάνετε μικρότερα, αλλά όχι πιο γρήγορα. Τι είναι στη δύναμή τους - αντί για έναν πολύ μικρό επεξεργαστή, μπορούν να χωρέσουν οκτώ, δεκαέξι ή τριάντα δύο επεξεργαστές στον ίδιο όγκο της θήκης, όπου προηγουμένως χωρούσε μόνο ένας. Τώρα έχετε πολυνηματική και γρήγορη επικοινωνία μεταξύ τους επειδή μοιράζονται κρυφές μνήμες. Αλλά δεν μπορείτε να τους αναγκάσετε να τρέξουν πιο γρήγορα - υπάρχει ένα πολύ συγκεκριμένο όριο ταχύτητας. Συνεχίζουν να βελτιώνονται σιγά σιγά, αλλά όχι τόσο πολύ πια. Οι νόμοι της φυσικής στάθηκαν εμπόδιο στις βελτιώσεις.

Ένας νέος κόσμος φέρνει νέα προβλήματα. Hacking NUMA, NVM και αρχιτεκτονικής

Alexey: Ακούγεται πολύ λογικό. Με νέους επεξεργαστές πολλαπλών πυρήνων ήρθαν νέα προβλήματα. Περιμένατε εσείς και οι συνάδελφοί σας αυτά τα προβλήματα; Ίσως τα μελετήσατε εκ των προτέρων; Στις θεωρητικές μελέτες συχνά δεν είναι πολύ εύκολο να προβλέψουμε τέτοια πράγματα. Όταν εμφανίστηκαν προβλήματα, πώς ανταποκρίθηκαν στις προσδοκίες σας και των συναδέλφων σας; Ή ήταν εντελώς νέα και εσείς και οι συνάδελφοί σας έπρεπε να αφιερώσετε πολύ χρόνο στην επίλυση προβλημάτων όπως εμφανίζονταν;

Vitaly: Θα προσθέσω στην ερώτηση του Alexey: προβλέψατε σωστά την αρχιτεκτονική του επεξεργαστή ενώ μελετούσατε τη θεωρία;

Maurice: Όχι 100%. Αλλά νομίζω ότι οι συνάδελφοί μου και εγώ έχουμε κάνει καλή δουλειά προβλέποντας πολλαπλούς πυρήνες με κοινή μνήμη. Νομίζω ότι προβλέψαμε σωστά τις δυσκολίες στην ανάπτυξη παράλληλων δομών δεδομένων που λειτουργούν χωρίς κλειδαριές. Τέτοιες δομές δεδομένων ήταν σημαντικές για πολλές εφαρμογές, αν και όχι για όλες, αλλά συχνά αυτό που πραγματικά χρειάζεστε είναι μια δομή δεδομένων που δεν κλειδώνει. Όταν τα εφεύραμε, πολλοί υποστήριξαν ότι αυτό ήταν ανοησία, ότι όλα λειτουργούσαν καλά με τις κλειδαριές. Προβλέψαμε πολύ καλά ότι θα υπήρχαν έτοιμες λύσεις για πολλά προβλήματα προγραμματισμού και προβλήματα δομής δεδομένων. Υπήρχαν και πιο σύνθετα προβλήματα, όπως π.χ NUMA – ανομοιόμορφη πρόσβαση στη μνήμη. Στην πραγματικότητα, δεν ελήφθησαν καν υπόψη μέχρι να εφευρεθούν οι πολυπύρηνες επεξεργαστές επειδή ήταν πολύ συγκεκριμένοι. Η ερευνητική κοινότητα εργαζόταν σε ερωτήματα που ήταν γενικά προβλέψιμα. Ορισμένα προβλήματα υλικού που σχετίζονται με συγκεκριμένες αρχιτεκτονικές έπρεπε να περιμένουν στα φτερά - στην πραγματικότητα, η εμφάνιση αυτών των αρχιτεκτονικών. Για παράδειγμα, κανείς δεν δούλεψε πραγματικά σε δομές δεδομένων για συγκεκριμένες GPU, επειδή τότε δεν υπήρχαν GPU. Αν και έχει γίνει πολλή δουλειά για SIMD, αυτοί οι αλγόριθμοι ήταν έτοιμοι για χρήση μόλις γινόταν διαθέσιμο το κατάλληλο υλικό. Ωστόσο, είναι αδύνατο να προβλέψουμε τα πάντα.

Alexey: Αν καταλαβαίνω καλά, το NUMA είναι ένα είδος συμβιβασμού μεταξύ κόστους, απόδοσης και κάποιων άλλων πραγμάτων. Καμιά ιδέα γιατί το NUMA βγήκε τόσο αργά;

Maurice: Νομίζω ότι το NUMA υπάρχει λόγω προβλημάτων με το υλικό που χρησιμοποιείται για την παραγωγή μνήμης: όσο πιο μακριά είναι τα στοιχεία, τόσο πιο αργή είναι η πρόσβαση σε αυτά. Από την άλλη πλευρά, η δεύτερη τιμή αυτής της αφαίρεσης είναι η ομοιομορφία της μνήμης. Έτσι, ένα από τα χαρακτηριστικά του παράλληλου υπολογισμού είναι ότι όλες οι αφαιρέσεις είναι ελαφρώς σπασμένες. Εάν η πρόσβαση ήταν απολύτως ομοιόμορφη, όλη η μνήμη θα ήταν ίση απόσταση, αλλά αυτό είναι οικονομικά, και ίσως και φυσικά, αδύνατο. Επομένως προκύπτει αυτή η σύγκρουση. Εάν γράψετε το πρόγραμμά σας σαν να ήταν ομοιόμορφη η μνήμη, τότε πιθανότατα θα είναι σωστό. Με την έννοια ότι δεν θα δώσει λάθος απαντήσεις. Αλλά η ερμηνεία της δεν θα τραβήξει ούτε τα αστέρια από τον ουρανό. Ομοίως, αν γράφεις spinlocks Χωρίς να κατανοήσετε την ιεραρχία της προσωρινής μνήμης, ο ίδιος ο αποκλεισμός θα είναι σωστός, αλλά μπορείτε να ξεχάσετε την απόδοση. Κατά μία έννοια, πρέπει να γράψετε προγράμματα που ζουν πάνω από μια πολύ απλή αφαίρεση, αλλά πρέπει να ξεπεράσετε τους ανθρώπους που σας έδωσαν αυτήν την αφαίρεση: πρέπει να ξέρετε ότι κάτω από την αφαίρεση υπάρχει κάποια ιεραρχία μνήμης, ότι υπάρχει ένα λεωφορείο ανάμεσα σε εσάς και αυτή τη μνήμη, και ούτω καθεξής. Έτσι, υπάρχει κάποια σύγκρουση μεταξύ μεμονωμένων χρήσιμων αφαιρέσεων, που μας οδηγεί σε πολύ συγκεκριμένα και πραγματιστικά προβλήματα.

Vitaly: Τι γίνεται με το μέλλον; Μπορείτε να προβλέψετε πώς θα αναπτυχθούν οι επεξεργαστές στη συνέχεια; Υπάρχει μια ιδέα ότι μία από τις απαντήσεις είναι η συναλλακτική μνήμη. Μάλλον έχετε κάτι άλλο σε απόθεμα.

Maurice: Υπάρχουν μερικές μεγάλες προκλήσεις μπροστά. Το ένα είναι ότι η συνεκτική μνήμη είναι μια υπέροχη αφαίρεση, αλλά αρχίζει να καταρρέει σε ειδικές περιπτώσεις. Έτσι, για παράδειγμα, το NUMA είναι ένα ζωντανό παράδειγμα κάτι όπου μπορείτε να συνεχίσετε να προσποιείτε ότι υπάρχει ομοιόμορφη μνήμη. Στην πραγματικότητα όχι, η παραγωγικότητα θα σας κάνει να κλάψετε. Κάποια στιγμή, οι αρχιτέκτονες θα πρέπει να εγκαταλείψουν την ιδέα μιας ενιαίας αρχιτεκτονικής μνήμης· δεν μπορείτε να προσποιηθείτε για πάντα. Θα χρειαστούν νέα μοντέλα προγραμματισμού που να είναι αρκετά εύκολα στη χρήση και αρκετά ισχυρά για να κάνουν το υποκείμενο υλικό αποδοτικό. Αυτός είναι ένας πολύ δύσκολος συμβιβασμός, γιατί αν δείξετε στους προγραμματιστές την αρχιτεκτονική που χρησιμοποιείται πραγματικά στο υλικό, θα τρελαθούν. Είναι πολύ περίπλοκο και δεν είναι φορητό. Εάν παρουσιάσετε μια διεπαφή που είναι πολύ απλή, η απόδοση θα είναι κακή. Έτσι, θα χρειαστεί να γίνουν πολλές πολύ δύσκολες αντισταθμίσεις για να παρασχεθούν χρήσιμα μοντέλα προγραμματισμού που να εφαρμόζονται σε πραγματικά μεγάλους επεξεργαστές πολλαπλών πυρήνων. Δεν είμαι σίγουρος ότι κάποιος άλλος εκτός από ειδικός είναι ικανός να προγραμματίσει σε υπολογιστή 2000 πυρήνων. Και εκτός αν κάνετε πολύ εξειδικευμένους ή επιστημονικούς υπολογιστές ή κρυπτογράφηση ή κάτι τέτοιο - δεν είναι ακόμα καθόλου σαφές πώς να το κάνετε σωστά. 

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

Alexey: Τι γίνεται με τη μη πτητική μνήμη (μη-πτητική μνήμη)?

Maurice: Ω, αυτό είναι ένα άλλο εξαιρετικό παράδειγμα! Το NVM θα αλλάξει σε μεγάλο βαθμό τον τρόπο που βλέπουμε πράγματα όπως οι δομές δεδομένων. Η μη ασταθής μνήμη, κατά μία έννοια, υπόσχεται να επιταχύνει πραγματικά τα πράγματα. Αλλά δεν θα κάνει τη ζωή πιο εύκολη επειδή οι περισσότεροι επεξεργαστές, κρυφές μνήμες και καταχωρητές εξακολουθούν να είναι ασταθείς. Όταν ξεκινάτε μετά από μια συντριβή, η κατάστασή σας και η κατάσταση της μνήμης σας δεν θα είναι ακριβώς η ίδια όπως πριν από τη συντριβή. Είμαι πολύ ευγνώμων στους ανθρώπους που εργάζονται στο NVM - θα υπάρχουν πολλά για τους ερευνητές να κάνουν για μεγάλο χρονικό διάστημα προσπαθώντας να καταλάβουν τις συνθήκες ορθότητας. Οι υπολογισμοί είναι σωστοί εάν μπορούν να επιβιώσουν από μια συντριβή κατά την οποία χάνονται τα περιεχόμενα της κρυφής μνήμης και των καταχωρητών, αλλά η κύρια μνήμη παραμένει ανέπαφη.

Μεταγλωττιστές έναντι επεξεργαστών, RISC εναντίον CISC, κοινόχρηστη μνήμη έναντι διαβίβασης μηνυμάτων

Vladimir: Τι πιστεύετε για το δίλημμα «μεταγλωττιστές εναντίον επεξεργαστών» από την άποψη του συνόλου εντολών; Επιτρέψτε μου να εξηγήσω για όσους δεν το γνωρίζουν: εάν πάμε σε λοξή μνήμη ή κάτι παρόμοιο, θα μπορούσαμε να χρησιμοποιήσουμε ένα πολύ απλό σύνολο εντολών και να ζητήσουμε από τον μεταγλωττιστή να δημιουργήσει σύνθετο κώδικα που μπορεί να επωφεληθεί από τα νέα πλεονεκτήματα. Ή μπορούμε να πάμε με τον άλλο τρόπο: να εφαρμόσουμε σύνθετες οδηγίες και να ζητήσουμε από τον επεξεργαστή να αναδιατάξει τις οδηγίες και να κάνει άλλους χειρισμούς με αυτές. Τι πιστεύετε γι 'αυτό;

Maurice: Δεν έχω πραγματικά απάντηση σε αυτή την ερώτηση. Αυτή η συζήτηση συνεχίζεται εδώ και τέσσερις δεκαετίες. Υπήρξε μια εποχή που μεταξύ συντομογραφία ένα σύνολο εντολών και δύσκολος οι εμφύλιοι πόλεμοι διεξήχθησαν από ένα σύνολο εντολών. Για ένα διάστημα, οι άνθρωποι του RISC κέρδισαν, αλλά στη συνέχεια η Intel κατασκεύασε ξανά τους κινητήρες τους έτσι ώστε ένα μειωμένο σύνολο οδηγιών χρησιμοποιήθηκε εσωτερικά και το πλήρες σετ εξήχθη εξωτερικά. Αυτό είναι μάλλον ένα θέμα στο οποίο κάθε νέα γενιά πρέπει να βρει τους δικούς της συμβιβασμούς και να πάρει τις δικές της αποφάσεις. Είναι πολύ δύσκολο να προβλέψουμε ποια από αυτά τα πράγματα θα είναι καλύτερα. Έτσι, οποιαδήποτε πρόβλεψη κάνω θα είναι αληθινή για ένα ορισμένο χρονικό διάστημα, και μετά πάλι ψευδής για λίγο, και μετά πάλι αληθινή.

Alexey: Πόσο συνηθισμένο είναι για τον κλάδο ορισμένες ιδέες να κερδίζουν για αρκετές δεκαετίες και να χάνουν τις επόμενες; Υπάρχουν άλλα παραδείγματα τέτοιων περιοδικών αλλαγών;

Maurice: Στο θέμα των κατανεμημένων υπολογιστών, υπάρχουν άνθρωποι που πιστεύουν σε κοινή μνήμη και άνθρωποι που πιστεύουν σε ανταλλαγή μηνυμάτων. Αρχικά, στους κατανεμημένους υπολογιστές, παράλληλος υπολογισμός σημαίνει μετάδοση μηνύματος. Τότε κάποιος ανακάλυψε ότι ήταν πολύ πιο εύκολο να προγραμματιστεί με κοινή μνήμη. Η αντίθετη πλευρά είπε ότι η κοινή μνήμη είναι πολύ περίπλοκη, επειδή απαιτεί κλειδαριές και παρόμοια, επομένως αξίζει να μετακινηθείτε σε γλώσσες όπου δεν υπάρχει τίποτα άλλο εκτός από τη μετάδοση μηνυμάτων. Κάποιος κοίταξε τι προέκυψε από αυτό και είπε: «Ουάου, αυτή η εφαρμογή ανταλλαγής μηνυμάτων μοιάζει πολύ με κοινόχρηστη μνήμη, επειδή δημιουργείτε πάρα πολλές από αυτές τις μικρές ενότητες, στέλνουν μηνύματα η μία στην άλλη και όλες αλληλοσυνδέομαι"Ας φτιάξουμε μια καλύτερη βάση δεδομένων κοινής μνήμης!" Όλα αυτά επαναλαμβάνονται ξανά και ξανά και είναι αδύνατο να πούμε ότι ένα από τα μέρη έχει σίγουρα δίκιο. Η μία από τις πλευρές θα κυριαρχεί πάντα γιατί μόλις η μία από αυτές σχεδόν νικήσει, οι άνθρωποι ξανά και ξανά εφευρίσκουν τρόπους για να βελτιώσουν την άλλη.

Η τέχνη της συγγραφής εύθραυστου κώδικα πολλαπλών νημάτων

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

Maurice: Είναι απολύτως αλήθεια ότι η κοινή μνήμη βασίζεται στη μετάδοση μηνυμάτων - λεωφορεία, κρυφές μνήμες και ούτω καθεξής. Αλλά είναι δύσκολο να γράψετε προγράμματα χρησιμοποιώντας τη μετάδοση μηνυμάτων, επομένως το υλικό λέει εσκεμμένα ψέματα, προσποιούμενος ότι έχετε κάποιο είδος ομοιόμορφης μνήμης. Αυτό θα σας διευκολύνει να γράφετε απλά, σωστά προγράμματα προτού αρχίσει να μειώνεται η απόδοση. Τότε θα πείτε: φαίνεται ότι ήρθε η ώρα να κάνετε φίλους με την κρυφή μνήμη. Και μετά αρχίζετε να ανησυχείτε για τη θέση της κρυφής μνήμης και από εκεί πηγαίνει. Κατά μία έννοια, χακάρετε την αφαίρεση: ξέρετε ότι δεν είναι απλώς επίπεδη, ομοιόμορφη μνήμη και πρόκειται να χρησιμοποιήσετε αυτή τη γνώση για να γράψετε προγράμματα φιλικά προς την προσωρινή μνήμη. Αυτό θα πρέπει να κάνετε σε πραγματικά προβλήματα. Αυτή η σύγκρουση μεταξύ της γλυκιάς, απλής, ωραίας αφαίρεσης που σας έχει δοθεί και της φρικτά πολύπλοκης εφαρμογής του υποκείμενου υλικού είναι όπου ο καθένας θα κάνει τον δικό του συμβιβασμό. Έχω ένα βιβλίο για τους πολυεπεξεργαστές και το συγχρονισμό, και κάποια στιγμή θα γράψω ένα κεφάλαιο για τις δομές δεδομένων στο java.util.concurrent. Αν τα δεις, πράγματα όπως λίστες με παραλείψεις Αυτά είναι εκπληκτικά έργα τέχνης. (Σημείωση του συντάκτη: Όσοι γνωρίζουν τη γλώσσα Java θα πρέπει τουλάχιστον να ρίξουν μια ματιά στην υλοποίηση ConcurrentSkipListMap, μπορείτε να δείτε τους συνδέσμους στο API и πηγαίος κώδικας). Αλλά από την άποψή μου, θα ήταν ανεύθυνο να τα δείξω στους μαθητές, γιατί μια τέτοια δομή δεδομένων μοιάζει με έναν τύπο σε τσίρκο που τρέχει σε τεντωμένο σκοινί πάνω από ένα λάκκο για αρκούδες. Αν αλλάξετε έστω και μια μικρή λεπτομέρεια, ολόκληρη η δομή θα καταρρεύσει. Αυτός ο κώδικας είναι πολύ γρήγορος και κομψός μόνο και μόνο επειδή είναι γραμμένος τέλεια, αλλά η παραμικρή αλλαγή θα οδηγήσει σε πλήρη αποτυχία. Αν δώσω αυτόν τον κωδικό ως παράδειγμα στους μαθητές, θα πουν αμέσως: Μπορώ να το κάνω κι αυτό! Και τότε κάποιο αεροπλάνο θα συντριβεί ή ένας πυρηνικός αντιδραστήρας θα εκραγεί και θα είμαι ένοχος που τους έδωσα πάρα πολλές πληροφορίες τη λάθος στιγμή.

Alexey: Όταν ήμουν λίγο νεότερος, πολλές φορές προσπάθησα να μελετήσω τον πηγαίο κώδικα του Doug Lee, για παράδειγμα, java.util.concurrent, επειδή είναι ανοιχτού κώδικα, είναι πολύ εύκολο να το βρεις και να προσπαθήσεις να καταλάβεις τι συμβαίνει εκεί. Δεν βγήκε πολύ καλά: συχνά, είναι εντελώς ασαφές γιατί ο Νταγκ αποφάσισε να κάνει κάτι με αυτόν τον τρόπο όταν όλοι οι άλλοι το κάνουν διαφορετικά. Πώς εξηγείτε αυτά τα πράγματα στους μαθητές σας; Υπάρχει κάποιος συγκεκριμένος σωστός τρόπος για να περιγράψουμε συγκεκριμένες λεπτομέρειες ενός σκληροπυρηνικού αλγορίθμου, για παράδειγμα; Πώς το κάνεις αυτό;

Maurice: Οι δάσκαλοι ζωγραφικής έχουν ένα κλισέ που θυμούνται πρώτα: αν θέλετε να σχεδιάσετε όπως ο Πικάσο, πρέπει πρώτα να μάθετε πώς να σχεδιάζετε απλές ρεαλιστικές εικόνες και μόνο όταν γνωρίζετε τους κανόνες μπορείτε να αρχίσετε να τους παραβιάζετε. Εάν ξεκινήσετε παραβιάζοντας τους κανόνες αμέσως, καταλήγετε σε ένα χάος. Αρχικά, διδάσκω στους μαθητές πώς να γράφουν απλό, σωστό κώδικα χωρίς να ανησυχούν για την απόδοση. Αυτό που λέω είναι ότι εδώ κρύβονται περίπλοκα ζητήματα χρονισμού, οπότε μην ανησυχείτε για τις κρυφές μνήμες, μην ανησυχείτε για τα μοντέλα μνήμης, απλώς βεβαιωθείτε ότι όλα λειτουργούν σωστά. Αυτό είναι ήδη αρκετά δύσκολο: ο σύγχρονος προγραμματισμός δεν είναι εύκολος από μόνος του, ειδικά για τους νέους φοιτητές. Και όταν έχουν μια διαίσθηση για το πώς να γράφουν τα σωστά προγράμματα, λέω: κοιτάξτε αυτές τις δύο εφαρμογές spinlock: η μία είναι πολύ αργή και η δεύτερη επίσης δεν είναι πολύ, αλλά καλύτερη. Ωστόσο, μαθηματικά οι δύο αλγόριθμοι είναι ίδιοι. Στην πραγματικότητα, ένα από αυτά χρησιμοποιεί την τοποθεσία της κρυφής μνήμης. Ένα από αυτά εκτελείται σε τοπικά αποθηκευμένα δεδομένα στην κρυφή μνήμη και το άλλο εκτελεί επανειλημμένα λειτουργίες σε όλο το δίαυλο. Δεν μπορείτε να γράψετε αποτελεσματικό κώδικα εάν δεν καταλαβαίνετε τι είναι και δεν ξέρετε πώς να σπάσετε την αφαίρεση και να δείτε την υποκείμενη δομή. Αλλά δεν θα μπορείτε να αρχίσετε να το κάνετε αυτό αμέσως. Υπάρχουν άνθρωποι που αρχίζουν να το κάνουν αμέσως και πιστεύουν στη δική τους ιδιοφυΐα, συνήθως τελειώνει άσχημα επειδή δεν καταλαβαίνουν τις αρχές. Κανείς δεν ζωγραφίζει όπως ο Πικάσο ή δεν γράφει προγράμματα όπως ο Doug Lee μόλις τελείωσε το κολέγιο την πρώτη του εβδομάδα. Χρειάζονται χρόνια για να φτάσει κανείς σε αυτό το επίπεδο γνώσης.

Alexey: Αποδεικνύεται ότι χωρίζετε το πρόβλημα σε δύο μέρη: το πρώτο είναι η ορθότητα, το δεύτερο είναι η απόδοση;

Maurice: Ακριβώς. Και, ακριβώς με αυτή τη σειρά. Μέρος του προβλήματος είναι ότι οι νέοι μαθητές δεν καταλαβαίνουν ότι η ορθότητα είναι δύσκολο να επιτευχθεί. Με την πρώτη ματιά λένε: αυτό είναι προφανώς σωστό, το μόνο που μένει είναι να το επιταχύνουμε. Έτσι μερικές φορές τους λέω για έναν αρχικά λανθασμένο αλγόριθμο σαν να ήταν σωστός.

Πώς να διδάξετε τους μαθητές να γράφουν πολύπλοκο κώδικα πολλαπλών νημάτων

Alexey: Απλώς για να δούμε αν μπορούν να αισθανθούν την αλιεία;

Maurice: Πάντα προειδοποιώ εκ των προτέρων ότι μερικές φορές θα προτείνω λανθασμένους αλγόριθμους. Δεν πρέπει να εξαπατάς τους ανθρώπους. Προτείνω να πάρουν τις πληροφορίες με λίγο αλάτι. Αν πω κάτι και πω: "κοίτα, αυτό είναι προφανώς σωστό" - αυτό είναι ένα σημάδι ότι κάπου προσπαθούν να σας εξαπατήσουν και θα πρέπει να αρχίσετε να κάνετε ερωτήσεις. Στη συνέχεια, προσπαθώ να ενθαρρύνω τους μαθητές να συνεχίσουν να κάνουν ερωτήσεις και μετά προτείνω: «Τι θα συμβεί αν αφήσουμε τα πράγματα ως έχουν;» Και βλέπουν αμέσως το λάθος. Αλλά το να πείσεις τους μαθητές ότι πρέπει να ανησυχούν για την ορθότητα είναι πολύ πιο δύσκολο από ό,τι φαίνεται με την πρώτη ματιά. Πολλοί από αυτούς τους μαθητές έρχονται με εμπειρία προγραμματισμού στο γυμνάσιο, κάποιοι έχουν βρει δουλειές και έχουν κάνει προγραμματισμό εκεί, και είναι όλοι γεμάτοι αυτοπεποίθηση. Αυτό είναι κάτι σαν τον στρατό: πρέπει πρώτα να τους αλλάξεις διάθεση για να τους πείσεις να προσεγγίσουν υπομονετικά την επίλυση προβλημάτων που προκύπτουν. Ή ίσως είναι σαν τους βουδιστές μοναχούς: πρώτα μαθαίνουν να συλλογίζονται για την ορθότητα και μόλις κατανοήσουν τους τρόπους συλλογισμού για την ορθότητα, τους επιτρέπεται να προχωρήσουν στο επόμενο επίπεδο και να αρχίσουν να ανησυχούν για την απόδοση.

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

Maurice: Οι μαθητές σχεδόν πάντα βρίσκουν το λάθος τελικά. Αν ψάξουν πολύ αργά, θέτω βασικές ερωτήσεις και εδώ είναι σημαντικό να καταλάβετε ότι αν δεν τους εξαπατήσετε ποτέ, θα αρχίσουν να αντιλαμβάνονται τα λόγια σας ως την απόλυτη αλήθεια. Μετά θα βαρεθούν και θα αρχίσουν να αποκοιμούνται διαβάζοντας Facebook στο laptop τους κατά τη διάρκεια του μαθήματος. Αλλά όταν τους λέτε εκ των προτέρων ότι θα ξεγελαστούν και θα φαίνονται ανόητοι αν δεν αισθανθούν ένα κόλπο, γίνονται πολύ πιο προσεκτικοί. Αυτό είναι καλό με διάφορους τρόπους. Θα ήθελα οι μαθητές όχι μόνο να αμφισβητούν την κατανόησή τους για το θέμα, αλλά και να αμφισβητούν την εξουσία του δασκάλου. Η ιδέα είναι ότι ένας μαθητής μπορεί να σηκώσει το χέρι του ανά πάσα στιγμή και να πει: Νομίζω ότι αυτό που μόλις είπες είναι λάθος. Είναι ένα σημαντικό εργαλείο μάθησης. Δεν θέλω κανένας από τους μαθητές να κάθεται και να σκέφτεται σιωπηλά: όλα αυτά φαίνονται εντελώς ανοησίες, αλλά το να σηκώνεις το χέρι σου είναι πολύ τρομακτικό, και ούτως ή άλλως, είναι καθηγητής, οπότε ό,τι λέει είναι αλήθεια. Επομένως, εάν προειδοποιηθούν εκ των προτέρων ότι δεν είναι απαραίτητα όλα όσα λέγονται, έχουν ένα κίνητρο να δώσουν μεγαλύτερη προσοχή στο υλικό. Ξεκαθαρίζω ότι είναι εντάξει να σηκώνεις το χέρι και να κάνεις ερωτήσεις. Η ερώτησή σας μπορεί να ακούγεται ανόητη ή αφελής, αλλά συχνά έτσι προκύπτουν οι καλύτερες ερωτήσεις.

Alexey: Πολύ ενδιαφέρον. Συνήθως οι άνθρωποι έχουν κάποιο είδος ψυχολογικού φραγμού που δεν τους επιτρέπει να κάνουν μια ερώτηση σε έναν καθηγητή. Ειδικά αν υπάρχουν πολλοί άνθρωποι στην αίθουσα και όλοι φοβούνται ότι η συζήτηση για την ηλίθια ερώτησή σας θα πάρει όλο το χρόνο αυτών των ανθρώπων. Υπάρχουν κόλπα για να το αντιμετωπίσετε;

Maurice: Σταματώ συχνά και κάνω κλασικές ερωτήσεις. Αν μια δήλωση θα ήταν σωστή ή πώς θα έλυνε το πρόβλημα που συζητείται. Αυτή είναι μια βασική ενέργεια, ειδικά στην αρχή ενός μαθήματος όταν οι άνθρωποι ντρέπονται να πουν ακόμη και το παραμικρό. Κάνετε μια ερώτηση στους μαθητές και δεν λέτε τίποτα περισσότερο. Επικρατεί σιωπή, όλοι πιέζονται λίγο, η ένταση μεγαλώνει, ξαφνικά κάποιος δεν αντέχει, σπάει και λέει την απάντηση. Έτσι ανατρέπετε την κατάσταση: το να συνεχίσεις να μένεις σιωπηλός γίνεται πιο δύσκολο και άβολο από το να απαντάς! Αυτό είναι ένα τυπικό παιδαγωγικό κόλπο. Κάθε δάσκαλος στον κόσμο πρέπει να ξέρει πώς να το κάνει αυτό.

Alexey: Τώρα έχουμε έναν εξαιρετικό τίτλο για αυτήν τη συνέντευξη: «είναι πιο εύκολο να απαντήσεις παρά να σιωπήσεις».

Vitaly: Να ρωτήσω ξανά. Εργάζεστε σε τοπολογικές αποδείξεις. Πώς μπλέκατε σε αυτό, γιατί ο κατανεμημένος υπολογισμός και η τοπολογία είναι τελείως διαφορετικά πράγματα!

Maurice: Υπάρχει μια κρυφή σύνδεση εκεί. Όταν ήμουν μαθητής και σπούδαζα μαθηματικά, σπούδαζα καθαρά μαθηματικά. Δεν είχα κανένα πραγματικό ενδιαφέρον για τους υπολογιστές μέχρι που τελείωσαν οι σπουδές μου και βρέθηκα αντιμέτωπος με την πιεστική ανάγκη να ψάξω για δουλειά. Ως φοιτητής σπούδασα αλγεβρική τοπολογία. Πολλά χρόνια αργότερα, ενώ εργάζονταν σε ένα πρόβλημα που ονομάζεται "Πρόβλημα συμφωνίας k-Set", χρησιμοποίησα γραφήματα για να μοντελοποιήσω το πρόβλημα και, όπως φαινόταν τότε, είχα βρει μια λύση. Έπρεπε απλώς να καθίσεις και να περιηγηθείς την καταμέτρηση. Προσπαθήστε να βρείτε μια κατάλληλη απάντηση σε αυτό το γράφημα. Αλλά ο αλγόριθμός μου δεν λειτούργησε: αποδείχθηκε ότι θα έτρεχε σε κύκλους για πάντα. Δυστυχώς, όλα αυτά δεν μπορούσαν να εξηγηθούν με την επίσημη γλώσσα της θεωρίας γραφημάτων - αυτή που όλοι οι επιστήμονες υπολογιστών γνωρίζουν. Και μετά θυμήθηκα ότι πριν από πολλά χρόνια, στα μαθήματα τοπολογίας, χρησιμοποιούσαμε την έννοια "απλό σύμπλεγμα", που είναι μια γενίκευση των γραφημάτων σε υψηλότερες διαστάσεις. Τότε αναρωτήθηκα: τι θα συνέβαινε αν επαναδιατυπώναμε το πρόβλημα με όρους απλών συμπλεγμάτων; Αυτή έγινε η στιγμή κλειδί. Χρησιμοποιώντας έναν πιο ισχυρό φορμαλισμό, το πρόβλημα γίνεται ξαφνικά πολύ πιο απλό. Οι άνθρωποι πολέμησαν εναντίον του για μεγάλο χρονικό διάστημα, χρησιμοποιώντας γραφήματα, αλλά δεν μπορούσαν να κάνουν τίποτα. Και ακόμη και τώρα δεν μπορούν - η σωστή απάντηση αποδείχθηκε ότι δεν ήταν αλγόριθμος, αλλά απόδειξη της αδυναμίας επίλυσης του προβλήματος. Δηλαδή, ένας τέτοιος αλγόριθμος απλά δεν υπάρχει. Αλλά κάθε απόδειξη αδυναμίας βασισμένο είτε σε απλοϊκά συμπλέγματα είτε σε πράγματα που οι άνθρωποι προσποιούνταν ότι δεν θεωρούσαν απλά συμπλέγματα. Ακριβώς επειδή αποκαλείς κάτι νέο όνομα, δεν χάνει την ουσία του.

Vitaly: Αποδείχθηκε ότι ήσουν απλώς τυχερός;

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

Νέα έκδοση του βιβλίου "The Art of Multiprocessor Programming"

Alexey: Είπες λίγα λόγια για το βιβλίο σου. Ίσως δεν είναι το χειρότερο μυστικό ότι γράψατε το πιο διάσημο βιβλίο στον κόσμο για το multithreading, "Η τέχνη του προγραμματισμού πολλαπλών επεξεργαστών". Είναι ήδη περίπου 11 ετών και από τότε μόλις κυκλοφόρησε  αναθεωρημένη ανατύπωση. Θα υπάρξει δεύτερη έκδοση;

Maurice: Είναι καλό που ρώτησες! Θα είναι πολύ σύντομα, σε τρεις μήνες περίπου. Υπάρχουν δύο ακόμη συγγραφείς, προσθέσαμε πολύ περισσότερο υλικό, βελτιώσαμε την ενότητα για τον παραλληλισμό διακλάδωσης/σύνδεσης, γράψαμε μια ενότητα στο MapReduce, προσθέσαμε πολλά νέα πράγματα και πετάξαμε τα περιττά πράγματα - κάτι που ήταν πολύ ενδιαφέρον τη στιγμή της συγγραφής η πρώτη έκδοση, αλλά δεν υπάρχει πλέον σήμερα. Το αποτέλεσμα ήταν ένα πολύ σοβαρά αναθεωρημένο βιβλίο.

Alexey: Όλα έχουν ήδη γίνει, το μόνο που μένει είναι να κυκλοφορήσει;

Maurice: Μερικά κεφάλαια χρειάζονται ακόμα λίγη δουλειά. Ο εκδότης μας (που νομίζω ότι ήδη μας μισεί) εξακολουθεί να προσπαθεί να περάσει το μήνυμα ότι πρέπει να εργαστούμε πιο γρήγορα. Είμαστε πολύ πίσω από το πρόγραμμα. Θεωρητικά, θα μπορούσαμε να είχαμε κάνει αυτό το βιβλίο μερικά χρόνια νωρίτερα.

Alexey: Υπάρχει περίπτωση να αποκτήσετε μια νέα έκδοση του βιβλίου πριν από τα Χριστούγεννα;

Maurice: Αυτός είναι ο στόχος μας! Αλλά έχω προβλέψει τη νίκη τόσες φορές που κανείς δεν με πιστεύει πια. Μάλλον δεν πρέπει να με εμπιστεύεστε και πολύ σε αυτό το θέμα.

Alexey: Σε κάθε περίπτωση, αυτά είναι φανταστικά νέα. Μου άρεσε πολύ η πρώτη έκδοση του βιβλίου. Θα μπορούσες να πεις ότι είμαι θαυμαστής.

Maurice: Ελπίζω η νέα έκδοση να είναι αντάξια του ένθερμου ενθουσιασμού σας, σας ευχαριστώ!

Πώς εφευρέθηκε η συναλλακτική μνήμη

Vitaly: Η επόμενη ερώτηση αφορά τη συναλλακτική μνήμη. Από όσο καταλαβαίνω είσαι πρωτοπόρος σε αυτόν τον τομέα, τον εφεύρεις σε μια εποχή που κανείς δεν σκεφτόταν τέτοια πράγματα. Γιατί αποφάσισες να ασχοληθείς με αυτόν τον τομέα; Γιατί σας φάνηκαν σημαντικές οι συναλλαγές; Νομίζατε ότι κάποια μέρα θα εφαρμοστούν σε hardware;

Maurice: Ήξερα για τις συναλλαγές από τις μέρες της μεταπτυχιακής μου έρευνας.

Vitaly: Ναι, αλλά αυτές είναι διαφορετικές συναλλαγές!

Maurice: Δούλεψα με τον Elliott Moss για τη μη μπλοκαρισμένη συλλογή σκουπιδιών. Το πρόβλημά μας ήταν ότι θέλαμε να αλλάξουμε ατομικά μερικές λέξεις στη μνήμη και τότε οι αλγόριθμοι θα γίνονταν πολύ απλοί και τουλάχιστον μερικοί από αυτούς θα γίνονταν πιο αποτελεσματικοί. Χρησιμοποιώντας σύγκριση-και-ανταλλαγή για load-link/store-conditionπου παρέχεται από την παράλληλη αρχιτεκτονική, είναι δυνατό να γίνει κάτι, αλλά είναι πολύ αναποτελεσματικό και άσχημο γιατί θα έπρεπε να αντιμετωπίσεις επίπεδα έμμεσης κατεύθυνσης. Θέλω να αλλάξω λέξεις μνήμης και πρέπει να αλλάξω γιατί μπορώ να αλλάξω μόνο έναν δείκτη, επομένως πρέπει να δείχνουν σε κάποιο είδος δομής που μοιάζει με κατάλογο. Μιλήσαμε για το πόσο ωραία θα ήταν αν μπορούσαμε να αλλάξουμε το υλικό ώστε να μπορεί να κάνει ταυτόχρονη εγγραφή. Ο Elliott φαίνεται να το έχει παρατηρήσει αυτό: αν κοιτάξετε τα πρωτόκολλα συνοχής της κρυφής μνήμης, παρέχουν ήδη το μεγαλύτερο μέρος της απαιτούμενης λειτουργικότητας. Σε μια αισιόδοξη συναλλαγή, το πρωτόκολλο συνοχής της κρυφής μνήμης θα παρατηρήσει ότι υπάρχει μια σύγκρουση χρονισμού και η κρυφή μνήμη θα γίνει Μη έγκυρο. Τι συμβαίνει εάν εκτελείτε κερδοσκοπικά μια συναλλαγή στην κρυφή μνήμη σας και χρησιμοποιείτε τους μηχανισμούς του πρωτοκόλλου συνοχής για τον εντοπισμό διενέξεων; Η κερδοσκοπική αρχιτεκτονική υλικού ήταν εύκολο να σχεδιαστεί. Γράψαμε λοιπόν αυτό την πρώτη κιόλας δημοσίευση σχετικά με τη μνήμη συναλλαγών. Ταυτόχρονα, η εταιρεία στην οποία εργαζόμουν, η Digital Equipment Corporation, δημιουργούσε έναν νέο επεξεργαστή 64 bit με το όνομα Alpha. Πήγα λοιπόν και έκανα μια παρουσίαση στην ομάδα ανάπτυξης Alpha σχετικά με την εκπληκτική μνήμη συναλλαγών μας και ρώτησαν: Πόσα πρόσθετα έσοδα θα είχε η εταιρεία μας αν τα προσθέταμε όλα αυτά απευθείας στον επεξεργαστή; Και δεν είχα καμία απολύτως απάντηση σε αυτό, γιατί είμαι τεχνολόγος, δεν είμαι ειδικός στο μάρκετινγκ. Πραγματικά δεν είχα τίποτα να απαντήσω. Δεν τους έκανε μεγάλη εντύπωση που δεν ήξερα τίποτα.

Vitaly: Δισεκατομμύρια! Απλά πες δισεκατομμύρια!

Maurice: Ναι, αυτό έπρεπε να πω. Τώρα, στην εποχή των startups και των πάντων, ξέρω πώς να γράφω ένα επιχειρηματικό σχέδιο. Ότι μπορείς να πεις λίγα ψέματα για το μέγεθος του πιθανού κέρδους σου. Αλλά εκείνες τις μέρες μου φαινόταν αφελές, οπότε είπα απλώς: «Δεν ξέρω». Αν κοιτάξετε την ιστορία της δημοσίευσης σχετικά με τη μνήμη συναλλαγών, θα παρατηρήσετε ότι μετά από ένα χρόνο υπήρχαν αρκετές αναφορές σε αυτήν και στη συνέχεια για περίπου δέκα χρόνια κανείς δεν ανέφερε καθόλου αυτό το έγγραφο. Τα εισαγωγικά εμφανίστηκαν γύρω στο 2004, όταν εμφανίστηκαν αληθινοί πολυπύρηνες. Όταν οι άνθρωποι ανακάλυψαν ότι η γραφή παράλληλου κώδικα μπορούσε να βγάλει χρήματα, ξεκίνησε νέα έρευνα. Ravi Rajwar έγραψε ένα άρθρο, που κατά κάποιο τρόπο εισήγαγε την έννοια της συναλλακτικής μνήμης στο mainstream. (Σημείωση του συντάκτη: Υπάρχει μια δεύτερη έκδοση αυτού του άρθρου, που κυκλοφόρησε το 2010 και διατίθεται δωρεάν ως PDF). Ξαφνικά οι άνθρωποι συνειδητοποίησαν πώς ακριβώς θα μπορούσαν να χρησιμοποιηθούν όλα αυτά, πώς θα μπορούσαν να επιταχυνθούν οι παραδοσιακοί αλγόριθμοι με κλειδαριές. Ένα καλό παράδειγμα για κάτι που στο παρελθόν φαινόταν απλώς ένα ενδιαφέρον ακαδημαϊκό πρόβλημα. Και ναι, αν με ρωτούσατε εκείνη τη στιγμή αν πίστευα ότι όλα αυτά θα ήταν σημαντικά στο μέλλον, θα έλεγα: φυσικά, αλλά το πότε ακριβώς δεν είναι ξεκάθαρο. Ίσως σε 50 χρόνια; Στην πράξη, αυτό αποδείχθηκε ότι ήταν μόλις μια δεκαετία. Είναι πολύ ωραίο όταν κάνεις κάτι και μετά από μόλις δέκα χρόνια το παρατηρεί ο κόσμος.

Γιατί αξίζει να διεξαχθεί έρευνα στον τομέα των κατανεμημένων υπολογιστών

Vitaly: Αν μιλάμε για νέα έρευνα, τι θα συμβουλεύατε τους αναγνώστες - κατανεμημένους υπολογιστές ή πολλαπλούς πυρήνες και γιατί; 

Maurice: Σήμερα είναι εύκολο να αποκτήσετε έναν επεξεργαστή πολλαπλών πυρήνων, αλλά είναι πιο δύσκολο να δημιουργήσετε ένα αληθινό κατανεμημένο σύστημα. Άρχισα να τα δουλεύω γιατί ήθελα να κάνω κάτι διαφορετικό από τη διδακτορική μου διατριβή. Αυτή είναι η συμβουλή που δίνω πάντα στους νέους φοιτητές: μην γράφετε τη συνέχεια της διατριβής σας – προσπαθήστε να ακολουθήσετε μια νέα κατεύθυνση. Και επίσης, το multithreading είναι εύκολο. Μπορώ να πειραματιστώ με το δικό μου πιρούνι που λειτουργεί στο φορητό υπολογιστή μου χωρίς να σηκωθώ από το κρεβάτι. Αλλά αν ήθελα ξαφνικά να δημιουργήσω ένα πραγματικό κατανεμημένο σύστημα, θα έπρεπε να κάνω πολλή δουλειά, να προσελκύσω μαθητές κ.λπ. Είμαι τεμπέλης και θα προτιμούσα να δουλέψω σε πολυπύρηνο. Ο πειραματισμός σε συστήματα πολλαπλών πυρήνων είναι επίσης ευκολότερος από το να κάνεις πειράματα σε κατανεμημένα συστήματα, επειδή ακόμη και σε ένα ανόητο κατανεμημένο σύστημα υπάρχουν πάρα πολλοί παράγοντες που πρέπει να ελέγχονται.

Vitaly: Τι κάνεις τώρα, ερευνώντας το blockchain; Ποια άρθρα πρέπει να προσέξετε πρώτα;

Maurice: Εμφανίστηκε πρόσφατα πολύ καλό άρθρο, το οποίο έγραψα μαζί με τον μαθητή μου, Vikram Saraf, ειδικά για μια συζήτηση στο Συνέδριο Tokenomcs στο Παρίσι πριν από τρεις εβδομάδες. Αυτό είναι ένα άρθρο σχετικά με πρακτικά κατανεμημένα συστήματα, στο οποίο προτείνουμε να γίνει το Ethereum πολλαπλών νημάτων. Επί του παρόντος, τα έξυπνα συμβόλαια (κώδικας που εκτελείται στο blockchain) εκτελούνται διαδοχικά. Γράψαμε ένα άρθρο νωρίτερα που μιλούσε για έναν τρόπο χρήσης κερδοσκοπικών συναλλαγών για την επιτάχυνση της διαδικασίας. Πήραμε πολλές ιδέες από τη μνήμη συναλλαγών λογισμικού και είπαμε ότι αν κάνετε αυτές τις ιδέες μέρος της εικονικής μηχανής Etherium, τότε όλα θα λειτουργήσουν πιο γρήγορα. Αλλά για αυτό είναι απαραίτητο να μην υπάρχουν συγκρούσεις δεδομένων στις συμβάσεις. Και τότε υποθέσαμε ότι στην πραγματική ζωή δεν υπάρχουν πραγματικά τέτοιες συγκρούσεις. Αλλά δεν είχαμε τρόπο να μάθουμε. Στη συνέχεια, σκεφτήκαμε ότι είχαμε σχεδόν μια δεκαετία πραγματικής ιστορίας συμβολαίων στα χέρια μας, οπότε απορρίψαμε το blockchain του Ethereum και αναρωτηθήκαμε: τι θα συνέβαινε αν αυτά τα ιστορικά αρχεία εκτελούνταν παράλληλα; Βρήκαμε σημαντική αύξηση στην ταχύτητα. Στις πρώτες μέρες του Ethereum, η ταχύτητα αυξήθηκε πολύ, αλλά σήμερα όλα είναι κάπως πιο περίπλοκα, επειδή υπάρχουν λιγότερα συμβόλαια και η πιθανότητα συγκρούσεων για δεδομένα που απαιτούν σειριοποίηση έχει γίνει μεγαλύτερη. Όλα αυτά όμως είναι πειραματική δουλειά με πραγματικά ιστορικά δεδομένα. Το ωραίο με το blockchain είναι ότι θυμάται τα πάντα για πάντα, έτσι μπορούμε να γυρίσουμε τον χρόνο πίσω και να μελετήσουμε τι θα είχε συμβεί αν χρησιμοποιούσαμε διαφορετικούς αλγόριθμους για την εκτέλεση του κώδικα. Πώς θα άρεσε στους ανθρώπους στο παρελθόν η νέα μας ιδέα; Μια τέτοια έρευνα είναι πολύ πιο εύκολη και πιο ευχάριστη να γίνει, γιατί υπάρχει κάτι που παρακολουθεί τα πάντα και καταγράφει τα πάντα. Αυτό είναι ήδη κάτι περισσότερο παρόμοιο με την κοινωνιολογία παρά με την ανάπτυξη αλγορίθμων.

Έχει σταματήσει η ανάπτυξη αλγορίθμων και πώς να προχωρήσουμε;

Vitaly: Ώρα για την τελευταία θεωρητική ερώτηση! Αισθάνεστε ότι η πρόοδος στις ανταγωνιστικές δομές δεδομένων μειώνεται κάθε χρόνο; Πιστεύετε ότι έχουμε φτάσει σε ένα οροπέδιο στην κατανόηση των δομών δεδομένων ή θα υπάρξουν κάποιες σημαντικές βελτιώσεις; Ίσως υπάρχουν κάποιες έξυπνες ιδέες που μπορούν να αλλάξουν εντελώς τα πάντα;

Maurice: Μπορεί να έχουμε φτάσει σε ένα οροπέδιο στις δομές δεδομένων για τις παραδοσιακές αρχιτεκτονικές. Αλλά οι δομές δεδομένων για νέες αρχιτεκτονικές εξακολουθούν να είναι ένας πολλά υποσχόμενος τομέας. Εάν θέλετε να δημιουργήσετε δομές δεδομένων για, ας πούμε, επιταχυντές υλικού, τότε οι δομές δεδομένων για μια GPU είναι πολύ διαφορετικές από τις δομές δεδομένων για μια CPU. Όταν αναπτύσσετε δομές δεδομένων για blockchains, πρέπει να κατακερματίσετε κομμάτια δεδομένων και στη συνέχεια να τα τοποθετήσετε σε κάτι παρόμοιο Merkle δέντρο, για την πρόληψη της παραχάραξης. Υπήρξε μια έξαρση δραστηριότητας σε αυτόν τον τομέα τον τελευταίο καιρό, με πολλούς να κάνουν πολύ καλή δουλειά. Αλλά νομίζω ότι αυτό που θα συμβεί είναι ότι νέες αρχιτεκτονικές και νέες εφαρμογές θα οδηγήσουν σε νέες δομές δεδομένων. Εφαρμογές παλαιού τύπου και παραδοσιακή αρχιτεκτονική - μπορεί να μην υπάρχει πλέον πολύς χώρος για εξερεύνηση. Αλλά αν ξεφύγετε από την πεπατημένη και κοιτάξετε πέρα ​​από τις άκρες, θα δείτε τρελά πράγματα που το mainstream δεν παίρνει στα σοβαρά - εκεί συμβαίνουν πραγματικά όλα τα συναρπαστικά πράγματα.

Vitaly: Επομένως, για να γίνω ένας πολύ διάσημος ερευνητής, έπρεπε να εφεύρω τη δική μου αρχιτεκτονική :)

Maurice: Μπορείτε να «κλέψετε» τη νέα αρχιτεκτονική κάποιου άλλου - φαίνεται πολύ πιο εύκολο!

Δουλεύει στο Brown University

Vitaly: Θα μπορούσατε να μας πείτε περισσότερα για Πανεπιστήμιο Μπράουνπου δουλεύεις? Δεν είναι γνωστά πολλά για αυτόν στο πλαίσιο της πληροφορικής. Λιγότερο από το MIT, για παράδειγμα.

Maurice: Το Brown University είναι ένα από τα παλαιότερα πανεπιστήμια στις Ηνωμένες Πολιτείες. Νομίζω ότι μόνο το Χάρβαρντ είναι λίγο μεγαλύτερο. Το καφέ είναι μέρος του λεγόμενου κισσοί πρωταθλήματα, που είναι μια συλλογή από οκτώ παλαιότερα πανεπιστήμια. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Είναι κάπως παλιό, μικρό και λίγο αριστοκρατικό πανεπιστήμιο. Η κύρια εστίαση είναι στην εκπαίδευση των ελεύθερων τεχνών. Δεν προσπαθεί να είναι σαν το MIT, το MIT είναι πολύ εξειδικευμένο και τεχνικό. Το Brown είναι ένα εξαιρετικό μέρος για να μελετήσετε τη Ρωσική Λογοτεχνία ή την Κλασική Ελληνική, και φυσικά, την Επιστήμη των Υπολογιστών. Επικεντρώνεται στην ολοκληρωμένη εκπαίδευση. Οι περισσότεροι από τους μαθητές μας πηγαίνουν στο Facebook, την Apple, τη Google - επομένως νομίζω ότι οι μαθητές μας δεν έχουν κανένα πρόβλημα να βρουν δουλειά στον κλάδο. Πήγα να δουλέψω στην Brown επειδή είχα εργαστεί στο παρελθόν στην Digital Equipment Corporation στη Βοστώνη. Αυτή ήταν μια εταιρεία που εφηύρε πολλά ενδιαφέροντα πράγματα, αλλά αρνήθηκε τη σημασία των προσωπικών υπολογιστών. Μια εταιρεία με δύσκολη μοίρα, οι ιδρυτές της οποίας ήταν κάποτε νέοι επαναστάτες, δεν έμαθαν τίποτα και δεν ξέχασαν τίποτα, και έτσι από επαναστάτες έγιναν αντιδραστικοί μέσα σε καμιά δεκαριά χρόνια. Τους άρεσε να αστειεύονται ότι οι προσωπικοί υπολογιστές ανήκαν στο γκαράζ — ένα εγκαταλελειμμένο γκαράζ, φυσικά. Είναι προφανές ότι καταστράφηκαν από πιο ευέλικτες εταιρείες. Όταν έγινε σαφές ότι η εταιρεία είχε πρόβλημα, τηλεφώνησα σε έναν φίλο μου στο Μπράουν, που είναι περίπου μία ώρα έξω από τη Βοστώνη. Δεν ήθελα να φύγω από τη Βοστώνη εκείνη την εποχή γιατί δεν υπήρχαν πολλά ανοίγματα σε άλλα πανεπιστήμια. Αυτή ήταν μια εποχή που δεν υπήρχαν τόσες πολλές θέσεις εργασίας στην Επιστήμη των Υπολογιστών όπως υπάρχουν τώρα. Και ο Μπράουν είχε ένα άνοιγμα, δεν χρειάστηκε να μετακομίσω το σπίτι μου, δεν έπρεπε να μεταφέρω την οικογένειά μου και μου αρέσει πολύ να ζω στη Βοστώνη! Έτσι αποφάσισα να πάω στο Μπράουν. Μου αρέσει. Οι μαθητές είναι υπέροχοι, οπότε δεν προσπάθησα ποτέ να πάω κάπου αλλού. Κατά τη διάρκεια του σαββατικού μου, εργάστηκα στη Microsoft για ένα χρόνο, πήγα στο Technion στη Χάιφα για ένα χρόνο και τώρα θα είμαι στο Algorand. Έχω πολλούς συναδέλφους παντού και επομένως η φυσική τοποθεσία των τάξεων μας δεν είναι τόσο σημαντική. Αλλά το πιο σημαντικό είναι οι μαθητές, είναι οι καλύτεροι εδώ. Δεν έχω προσπαθήσει ποτέ να πάω κάπου αλλού γιατί είμαι πολύ χαρούμενος εδώ.

Ωστόσο, παρά τη φήμη του Μπράουν στις Ηνωμένες Πολιτείες, είναι εκπληκτικά άγνωστος στο εξωτερικό. Όπως μπορείτε να δείτε, τώρα κάνω ό,τι είναι δυνατόν για να διορθώσω αυτήν την κατάσταση πραγμάτων.

Διαφορά μεταξύ της έρευνας σε ένα πανεπιστήμιο και σε μια εταιρεία

Vitaly: Εντάξει, η επόμενη ερώτηση αφορά τον Ψηφιακό Εξοπλισμό. Ήσουν εκεί ως ερευνητής. Ποια είναι η διαφορά μεταξύ της εργασίας στο τμήμα Ε&Α μιας μεγάλης εταιρείας και της εργασίας σε ένα πανεπιστήμιο; Ποια είναι τα πλεονεκτήματα και τα μειονεκτήματα;

Maurice: Για είκοσι χρόνια εργάστηκα στη Microsoft, συνεργάστηκα στενά με υπαλλήλους της Sun Microsystems, της Oracle, του Facebook και τώρα της Algorand. Με βάση όλα αυτά, θέλω να πω ότι είναι δυνατή η πραγματοποίηση έρευνας πρώτης τάξεως τόσο σε εταιρείες όσο και σε πανεπιστήμια. Η σημαντική διαφορά είναι ότι σε μια εταιρεία συνεργάζεσαι με συναδέλφους. Αν ξαφνικά έχω μια ιδέα για ένα έργο που δεν υπάρχει ακόμη, πρέπει να πείσω τους συμμαθητές μου ότι αυτή είναι μια καλή ιδέα. Αν είμαι στο Μπράουν, τότε μπορώ να πω στους μαθητές μου: ας δουλέψουμε στην αντιβαρύτητα! Είτε θα φύγουν για κάποιον άλλο είτε θα αναλάβουν ένα έργο. Ναι, θα χρειαστεί να βρω χρηματοδότηση, θα χρειαστεί να γράψω μια αίτηση επιχορήγησης και ούτω καθεξής. Σε κάθε περίπτωση, πάντα θα υπάρχουν πολλοί μαθητές, και θα μπορείτε να πάρετε αποφάσεις μονομερώς. Αλλά στο πανεπιστήμιο πιθανότατα δεν θα συνεργαστείτε με άτομα του επιπέδου σας. Στον κόσμο της βιομηχανικής έρευνας, πρέπει πρώτα να πείσετε τους πάντες ότι το έργο σας αξίζει να το αναλάβετε. Δεν μπορώ να παραγγείλω τίποτα σε κανέναν. Και οι δύο αυτοί τρόποι εργασίας είναι πολύτιμοι, γιατί αν εργάζεστε σε κάτι πραγματικά τρελό και οι συνάδελφοί σας είναι δύσκολο να πειστούν, είναι πιο εύκολο να πείσετε μεταπτυχιακούς φοιτητές - ειδικά αν τους πληρώνετε. Εάν εργάζεστε σε κάτι που απαιτεί μεγάλη εμπειρία και βαθιά εξειδίκευση, τότε χρειάζεστε συναδέλφους που μπορούν να πουν «όχι, τυχαίνει να καταλαβαίνω αυτόν τον τομέα και η ιδέα σας είναι κακή, δεν θα λειτουργήσει». Αυτό είναι πολύ χρήσιμο όσον αφορά τη σπατάλη χρόνου. Επίσης, αν σε βιομηχανικά εργαστήρια αφιερώνεις πολύ χρόνο γράφοντας αναφορές, τότε σε ένα πανεπιστήμιο περνάς αυτόν τον χρόνο προσπαθώντας να βρεις χρήματα. Αν θέλω οι μαθητές να μπορούν να πάνε κάπου, πρέπει να βρω τα χρήματα για αυτό κάπου αλλού. Και όσο πιο σημαντική είναι η θέση σας στο πανεπιστήμιο, τόσο περισσότερο χρόνο πρέπει να ξοδέψετε για να μαζέψετε χρήματα. Τώρα λοιπόν ξέρετε για τι δουλεύω - επαγγελματίας ζητιάνος! Σαν ένας από εκείνους τους μοναχούς που κυκλοφορούν με ένα πιάτο προσφορών. Γενικά, αυτές οι δύο δραστηριότητες αλληλοσυμπληρώνονται. Γι' αυτό προσπαθώ να ζω και να κρατάω τα πόδια μου στο έδαφος και στους δύο κόσμους.

Vitaly: Φαίνεται ότι το να πείσεις μια εταιρεία είναι πιο δύσκολο από το να πείσεις άλλους επιστήμονες.

Maurice: Πιο δύσκολο, και πολλά άλλα. Επιπλέον, σε διαφορετικούς τομείς είναι διαφορετικό: κάποιοι διεξάγουν έρευνα πλήρους κλίμακας, ενώ άλλοι επικεντρώνονται στο θέμα τους. Αν πήγαινα στη Microsoft ή στο Facebook και έλεγα: ας φτιάξουμε αντιβαρύτητα, δύσκολα θα το εκτιμούσαν. Αλλά αν έλεγα ακριβώς το ίδιο πράγμα στους μεταπτυχιακούς φοιτητές μου, πιθανότατα θα έμπαιναν στη δουλειά αμέσως, αν και τώρα θα είχα προβλήματα - τελικά, πρέπει να βρω χρήματα για αυτό. Αλλά εφόσον θέλετε να κάνετε κάτι που ευθυγραμμίζεται με τους στόχους της εταιρείας, αυτή η εταιρεία μπορεί να είναι ένα πολύ καλό μέρος για να κάνετε έρευνα.

Ύδρα και SPTDC

Vitaly: Οι ερωτήσεις μου τελειώνουν, οπότε ας μιλήσουμε λίγο για το επερχόμενο ταξίδι στη Ρωσία.

Maurice: Ναι, ανυπομονώ να επιστρέψω στην Αγία Πετρούπολη.

Alexey: Είναι τιμή μου που σε έχω μαζί μας φέτος. Είναι η δεύτερη φορά στην Αγία Πετρούπολη, σωστά;

Maurice: Ήδη ο τρίτος!

Alexey: Καταλαβαίνω, αλλά SPTDC – σίγουρα το δεύτερο. Την τελευταία φορά κλήθηκε το σχολείο SPTCC, έχουμε αλλάξει τώρα ένα γράμμα (C σε D, Concurrent to Distributed) για να τονίσουμε ότι υπάρχουν περισσότεροι τομείς που σχετίζονται ειδικά με τον κατανεμημένο υπολογισμό φέτος. Μπορείτε να πείτε λίγα λόγια για τις αναφορές σας στη Σχολή και Συνέδριο Ύδρας?

Maurice: Στο Σχολείο θέλω να μιλήσω για τα βασικά του blockchain και τι μπορείτε να κάνετε με αυτό. Θα ήθελα να δείξω ότι τα blockchain μοιάζουν πολύ με τον προγραμματισμό πολλαπλών νημάτων που γνωρίζουμε, αλλά με τις δικές τους αποχρώσεις, και αυτές οι διαφορές είναι σημαντικό να κατανοηθούν. Αν κάνετε λάθος σε μια κανονική εφαρμογή web, είναι απλώς ενοχλητικό. Αν γράψετε buggy κώδικα σε μια οικονομική εφαρμογή, κάποιος σίγουρα θα σας κλέψει όλα τα χρήματα. Αυτά είναι τελείως διαφορετικά επίπεδα ευθύνης και συνέπειες. Θα μιλήσω λίγο για την απόδειξη εργασίας, για έξυπνα συμβόλαια, για συναλλαγές μεταξύ διαφορετικών blockchains.

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

Alexey: Επιπλέον, θέλω να πω ότι αυτό δεν θα γίνει με τη μορφή συνάντησης ή ομάδας χρηστών, όπως ήταν πριν από δύο χρόνια. Αποφασίσαμε να κάνουμε ένα μικρό συνέδριο κοντά στο σχολείο. Ο λόγος είναι ότι μετά την επικοινωνία με τον Peter Kuznetsov, καταλάβαμε ότι το σχολείο περιορίζεται μόνο σε εκατό, ίσως και 120 άτομα. Ταυτόχρονα, υπάρχουν πολλοί μηχανικοί που θέλουν να επικοινωνήσουν μαζί σας, να παρακολουθήσουν παρουσιάσεις και γενικά να ενδιαφέρονται για το θέμα. Για το λόγο αυτό δημιουργήσαμε ένα νέο συνέδριο που ονομάζεται Ύδρα. Παρεμπιπτόντως, καμιά ιδέα γιατί Ύδρα;

Maurice: Επειδή θα υπάρχουν επτά ομιλητές; Και τα κεφάλια τους μπορεί να κοπούν, και στη θέση τους θα αναπτυχθούν νέα ηχεία;

Alexey: Εξαιρετική ιδέα για την ανάπτυξη νέων ομιλητών. Αλλά στην πραγματικότητα, υπάρχει μια ιστορία εδώ. Θυμηθείτε τον θρύλο του Οδυσσέα, όπου έπρεπε να πλεύσει ανάμεσα Σκύλλα και Χάρυβδη? Η Ύδρα είναι κάτι σαν τη Χάρυβδη. Η ιστορία είναι ότι κάποτε μίλησα σε ένα συνέδριο και μίλησα για το multithreading. Υπήρχαν μόνο δύο κομμάτια σε αυτό το συνέδριο. Στην αρχή του ρεπορτάζ, είπα στους παρευρισκόμενους στην αίθουσα ότι έχουν πλέον μια επιλογή μεταξύ Σκύλλας και Χάρυβδης. Το πνευματικό μου ζώο είναι η Χάρυβδη γιατί η Χάρυβδη έχει πολλά κεφάλια και το θέμα μου είναι πολύκλωστο. Έτσι εμφανίζονται τα ονόματα των συνεδρίων.

Σε κάθε περίπτωση, έχουμε ξεμείνει από ερωτήσεις και χρόνο. Ευχαριστώ λοιπόν, φίλοι, για μια υπέροχη συνέντευξη και τα λέμε στο SPTDC School and Hydra 2019!

Μπορείτε να συνεχίσετε τη συνομιλία σας με τον Maurice στο συνέδριο Hydra 2019, που θα διεξαχθεί στις 11-12 Ιουλίου 2019 στην Αγία Πετρούπολη. Θα έρθει με αναφορά «Blockchains και το μέλλον των κατανεμημένων υπολογιστών». Μπορείτε να αγοράσετε εισιτήρια στην επίσημη ιστοσελίδα.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο