Η έννοια του παράλληλου υπολογισμού είναι ένα γενικό οργανωτικό σχήμα. Παράλληλα υπολογιστικά συστήματα

Διαδικασίες και συστήματα παράλληλων υπολογιστών (Διάλεξη 13)

Τύποι παραλληλισμού

Η παράλληλη επεξεργασία δεδομένων έχει δύο τύπους: διοχέτευση και πραγματικό παραλληλισμό.

Παράλληλη επεξεργασία. Εάν μια συγκεκριμένη συσκευή εκτελεί μία λειτουργία ανά μονάδα χρόνου, τότε θα εκτελέσει χίλιες λειτουργίες σε χίλιες μονάδες. Αν υποθέσουμε ότι υπάρχουν πέντε πανομοιότυπες ανεξάρτητες συσκευές ικανές να λειτουργούν ταυτόχρονα, τότε ένα σύστημα πέντε συσκευών μπορεί να εκτελέσει τις ίδιες χιλιάδες λειτουργίες όχι σε χίλιες, αλλά σε διακόσιες μονάδες χρόνου.

Επεξεργασία μεταφορέα. Τι χρειάζεται για να προσθέσετε δύο πραγματικούς αριθμούς, παριστάνεται σε μορφή κινητής υποδιαστολής; Πολλές μικρές λειτουργίες, όπως σύγκριση παραγγελιών, ευθυγράμμιση παραγγελιών, προσθήκη μάντισσας, κανονικοποίηση κ.λπ. Οι επεξεργαστές των πρώτων υπολογιστών εκτέλεσαν όλες αυτές τις «μικρο-λειτουργίες» για κάθε ζεύγος ορισμάτων, το ένα μετά το άλλο, μέχρι να φτάσουν στο τελικό αποτέλεσμα και μόνο τότε προχώρησαν στην επεξεργασία του επόμενου ζεύγους όρων. Η ιδέα της επεξεργασίας του αγωγού είναι να απομονωθούν μεμονωμένα στάδια εκτέλεσης μιας γενικής λειτουργίας και κάθε στάδιο, έχοντας ολοκληρώσει την εργασία του, θα περνούσε το αποτέλεσμα στο επόμενο, ενώ ταυτόχρονα θα λάμβανε ένα νέο τμήμα δεδομένων εισόδου. Υπάρχει ένα προφανές κέρδος στην ταχύτητα επεξεργασίας λόγω του συνδυασμού των προηγουμένως διαχωρισμένων λειτουργιών. Ας υποθέσουμε ότι υπάρχουν πέντε μικροεπεμβάσεις σε μια πράξη, καθεμία από τις οποίες εκτελείται σε μία μονάδα χρόνου. Εάν υπάρχει μία αδιαίρετη σειριακή συσκευή, τότε θα επεξεργαστεί 100 ζεύγη ορισμάτων σε 500 μονάδες. Εάν κάθε μικρολειτουργία χωρίζεται σε ένα ξεχωριστό στάδιο (ή αλλιώς ονομάζεται στάδιο) μιας συσκευής μεταφοράς, τότε στην πέμπτη μονάδα χρόνου, σε διαφορετικά στάδια επεξεργασίας μιας τέτοιας συσκευής, θα εντοπιστούν τα πρώτα πέντε ζεύγη ορισμάτων , και ολόκληρο το σύνολο των εκατό ζευγών θα υποβληθεί σε επεξεργασία σε 5 + 99 = 104 μονάδες χρόνου - η επιτάχυνση σε σύγκριση με μια σειριακή συσκευή είναι σχεδόν πέντε φορές (με βάση τον αριθμό των σταδίων του αγωγού).

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

Υλοποίηση παράλληλων συστημάτων

Η απόδοση των υπολογιστών έχει αυξηθεί εκθετικά από το 1945 έως σήμερα (με βάση κατά μέσο όρο κάθε 10 χρόνια). Η αρχιτεκτονική των υπολογιστών έχει υποστεί σημαντικές αλλαγές, περνώντας από σειριακή σε παράλληλη.

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

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

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

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

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

Άλλα μοντέλα αυτοκινήτων. Ας δούμε τις πιο σημαντικές αρχιτεκτονικές υπολογιστών. Ένας πολυυπολογιστής είναι πολύ παρόμοιος με αυτό που συχνά αποκαλείται υπολογιστής κατανεμημένης μνήμης MIMD (Multiple Instruction Multiple Data). Το MIMD σημαίνει ότι κάθε επεξεργαστής μπορεί να επεξεργαστεί μια ξεχωριστή ροή εντολών μέσω των δικών του τοπικών δεδομένων. Κατανεμημένη μνήμη σημαίνει ότι η μνήμη κατανέμεται μεταξύ των επεξεργαστών. Η θεμελιώδης διαφορά μεταξύ ενός υπολογιστή MIMD και ενός πολυυπολογιστή είναι ότι το κόστος παράδοσης ενός μηνύματος μεταξύ δύο κόμβων δεν εξαρτάται από τη θέση του κόμβου και την κίνηση του δικτύου. Οι κύριοι εκπρόσωποι αυτής της κατηγορίας: IBM SP, Intel Paragon, Thinking Machines CM 5, Cray T 3D, Meiko CS-2 και CUBE.


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

Η πρόσβαση σε αυτήν την προσωρινή μνήμη είναι πολύ πιο γρήγορη από την πρόσβαση σε κοινόχρηστη μνήμη, επομένως η τοποθεσία είναι πολύ σημαντική. Τα προγράμματα που έχουν σχεδιαστεί για πολλούς υπολογιστές μπορούν να εκτελούνται εξίσου αποτελεσματικά σε πολυεπεξεργαστές, επειδή η κοινή μνήμη επιτρέπει την αποτελεσματική μετάδοση μηνυμάτων. Εκπρόσωποι αυτής της κατηγορίας είναι το Silicon Graphics Challenge, το Sequent Symmetry και πολλοί σταθμοί εργασίας πολλαπλών επεξεργαστών.

Μια πιο εξειδικευμένη κατηγορία παράλληλων υπολογιστών είναι οι υπολογιστές SIMD (Single Instruction Miltiple Data). Στις μηχανές SIMD, όλοι οι επεξεργαστές λειτουργούν με την ίδια ροή εντολών σε διαφορετικά κομμάτια δεδομένων. Αυτή η προσέγγιση μπορεί να μειώσει την πολυπλοκότητα του λογισμικού και σκεύη, εξαρτήματα, αλλά αυτό έχει νόημα μόνο για εξειδικευμένα προβλήματα που χαρακτηρίζονται από υψηλό βαθμό κανονικότητας, όπως η επεξεργασία εικόνας και ορισμένοι τύποι ψηφιακής μοντελοποίησης. Οι αλγόριθμοι που ισχύουν σε πολλούς υπολογιστές δεν μπορούν, γενικά, να εκτελεστούν αποτελεσματικά σε υπολογιστές SIMD.

Νευρουπολογιστικά συστήματα.

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

Επί του παρόντος, η ανάπτυξη ψηφιακών νευροϋπολογιστών πραγματοποιείται πιο ενεργά στους ακόλουθους τομείς:

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

· Εξομοίωση λογισμικού και υλικού νευρωνικών δικτύων που βασίζεται σε τυπικά υπολογιστικά εργαλεία με μια μονάδα εικονικού νευρωνικού δικτύου plug-in που εκτελεί βασικές νευρολειτουργίες και λογισμικό που εκτελεί λειτουργίες γενικού ελέγχου.

· Υλική υλοποίηση νευρωνικών δικτύων.

Παρά το γεγονός ότι το μεγαλύτερο αποτέλεσμα στην εφαρμογή αλγορίθμων νευρωνικών δικτύων μπορεί να επιτευχθεί μόνο με τη χρήση νευροϋπολογιστών τρίτης κατεύθυνσης, η ευρεία χρήση τους περιορίζεται από την υψηλή τεχνολογία. Για παράδειγμα, ο νευροϋπολογιστής Synaps1 είναι ένας από τους εκπροσώπους των νευροϋπολογιστών τρίτης κατεύθυνσης, έχει αρχιτεκτονική πολλαπλών επεξεργαστών, πρωτότυπο σχέδιο του υποσυστήματος μνήμης και χρησιμοποιεί επεξεργαστές σήματος και ειδικούς επεξεργαστές μήτρας σήματος MA16 για την εκτέλεση υπολογιστικών λειτουργιών. Εξαιτίας αυτού, η απόδοση του νευροϋπολογιστή ανήλθε σε αρκετά δισεκατομμύρια πολλαπλασιασμούς και προσθήκες ανά δευτερόλεπτο. ΛογισμικόΑυτό το σύστημα περιλαμβάνει το Synaps1 OS με μια βιβλιοθήκη νευροαλγορίθμων, καθώς και λογισμικό: μια βασική βιβλιοθήκη NS, έναν μεταγλωττιστή για τη γλώσσα προγραμματισμού νευροαλγορίθμων (nAPL) (ένα σύνολο συναρτήσεων βιβλιοθήκης για C++) κ.λπ. Η εφαρμοσμένη έρευνα έχει δείξει ότι η χρήση νευροϋπολογιστών τρίτης κατεύθυνσης καθιστά δυνατή την αύξηση της απόδοσης των συμβατικών υπολογιστικών συστημάτων κατά τουλάχιστον τρεις τάξεις μεγέθους και την προσομοίωση νευρωνικών δικτύων με εκατομμύρια συνδέσεις. Για παράδειγμα, το Synaps1 σάς επιτρέπει να προσομοιώσετε ένα νευρωνικό δίκτυο με 64 εκατομμύρια συνάψεις χρησιμοποιώντας διάφορες λειτουργίες ενεργοποίησης.

Δύο κατηγορίες συστημάτων υπολογιστών που μερικές φορές χρησιμοποιούνται ως παράλληλοι υπολογιστές είναι το τοπικό δίκτυο(LAN), στο οποίο οι υπολογιστές που βρίσκονται σε φυσική εγγύτητα (για παράδειγμα, το ίδιο κτίριο) συνδέονται μέσω ενός γρήγορου δικτύου, και παγκόσμιο δίκτυο(WAN), στο οποίο συνδέονται γεωγραφικά απομακρυσμένοι υπολογιστές. Αν και τα συστήματα αυτού του τύπου φέρνουν πρόσθετα προβλήματα όπως ασφάλεια, αξιοπιστία, μπορούν να θεωρηθούν για διάφορους σκοπούς ως πολυϋπολογιστές, αν και με υψηλό κόστος απομακρυσμένη πρόσβαση.

Δυσκολίες χρήσης παράλληλων συστημάτων

Η τεράστια απόδοση των παράλληλων υπολογιστών και των υπερυπολογιστών υπεραντισταθμίζεται από τις δυσκολίες χρήσης τους.

Έχετε ένα πρόγραμμα και πρόσβαση, για παράδειγμα, σε έναν υπολογιστή 256 επεξεργαστών. Τι περιμένεις; Ναι, είναι σαφές: εύλογα περιμένετε ότι το πρόγραμμα θα εκτελείται 256 φορές πιο γρήγορα από ό,τι σε έναν μόνο επεξεργαστή. Αλλά αυτό ακριβώς είναι που πιθανότατα δεν θα συμβεί.

Νόμος του Amdahl. Ας υποθέσουμε ότι σε ένα πρόγραμμα το κλάσμα των πράξεων που πρέπει να εκτελεστούν διαδοχικά είναι ίσο με f, όπου 0<=f <=1 (при этом доля понимается не по статическому числу строк кода, а по числу операций в процессе выполнения). Крайние случаи в значениях f соответствуют полностью параллельным (f = 0) и полностью последовательным (f = 1) программам. Тогда для того, чтобы оценить, какое ускорение S может быть получено на компьютере из "p" процессоров при данном значении f, можно воспользоваться законом Амдала: если 9/10 программы исполняется параллельно, а 1/10 по-прежнему последовательно, то ускорения более, чем в 10 раз получить в принципе невозможно вне зависимости от качества реализации параллельной части кода и числа используемых процессоров (10 получается только в том случае, когда время исполнения параллельной части равно 0).

Συνέπεια του νόμου του Amdahl. Για να επιταχυνθεί η εκτέλεση ενός προγράμματος κατά q φορές, είναι απαραίτητο να επιταχυνθεί τουλάχιστον q φορές όχι λιγότερο από το (1-1/q)ο μέρος του προγράμματος. Επομένως, εάν θέλετε να επιταχύνετε ένα πρόγραμμα κατά 100 φορές σε σύγκριση με τη διαδοχική έκδοσή του, τότε δεν χρειάζεται να έχετε μικρότερη ταχύτητα για τουλάχιστον το 99,99% του κώδικα!

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

Προγραμματισμός Παράλληλων Συστημάτων

Το μοντέλο μηχανής von Neumann υποθέτει ότι ο επεξεργαστής εκτελεί μια ακολουθία εντολών. Οι εντολές μπορούν να καθορίσουν, εκτός από διάφορες αριθμητικές πράξεις, τις διευθύνσεις των δεδομένων που θα διαβαστούν/εγγραφούν στη μνήμη ή/και τη διεύθυνση της επόμενης εντολής που θα εκτελεστεί. Ενώ είναι δυνατός μόνο ο προγραμματισμός ενός υπολογιστή με βάση αυτό το βασικό μοντέλο, αυτή η μέθοδος είναι απαγορευτικά πολύπλοκη για τους περισσότερους σκοπούς λόγω του γεγονότος ότι πρέπει να παρακολουθούμε εκατομμύρια θέσεις μνήμης και να ενορχηστρώνουμε την εκτέλεση χιλιάδων εντολών μηχανής. Κατά συνέπεια, εφαρμόζεται μια αρθρωτή τεχνική σχεδίασης, όπου σύνθετα προγράμματα δημιουργούνται από απλά στοιχεία και τα στοιχεία δομούνται με όρους αφαιρέσεων υψηλότερου επιπέδου (όπως δομές δεδομένων, επαναληπτικοί βρόχοι και διαδικασίες). Οι αφαιρέσεις (π.χ. διαδικασίες) διευκολύνουν την εκμετάλλευση της αρθρωτής δομής, επιτρέποντας τον χειρισμό των αντικειμένων χωρίς να διαταράσσεται η εσωτερική τους δομή. Έτσι φτιάχνονται οι γλώσσες υψηλού επιπέδου, όπως η Fortran, η C, η Ada και η Java, που επιτρέπουν την ανάπτυξη ως προς αυτές τις αφαιρέσεις, οι οποίες μεταφράζονται αυτόματα σε εκτελέσιμο κώδικα. Ο παράλληλος προγραμματισμός εισάγει πρόσθετες πηγές πολυπλοκότητας: εάν πρέπει να προγραμματίσουμε στο χαμηλότερο επίπεδο, δεν χρειάζεται μόνο να αυξήσουμε τον αριθμό των εντολών που εκτελούνται, αλλά και να διαχειριστούμε την εκτέλεση χιλιάδων επεξεργαστών και να συντονίσουμε εκατομμύρια επικοινωνίες μεταξύ των επεξεργαστών. Επομένως, η αφαίρεση και η σπονδυλωτότητα είναι τουλάχιστον εξίσου σημαντικές με τον διαδοχικό προγραμματισμό. Στην πραγματικότητα, τονίζουμε τη σπονδυλωτότητα ως την τέταρτη θεμελιώδη απαίτηση για παράλληλο λογισμικό, εκτός από τον παραλληλισμό, την επεκτασιμότητα και την εντοπιότητα.

Οι κύριες αφαιρέσεις που χρησιμοποιούνται στον παράλληλο προγραμματισμό αφορούν εργασίες και κανάλια:

1. Ο παράλληλος υπολογισμός αποτελείται από μία ή περισσότερες εργασίες. Οι εργασίες εκτελούνται παράλληλα. Ο αριθμός των εργασιών μπορεί να αλλάξει κατά την εκτέλεση του προγράμματος.

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

3. Μια εργασία μπορεί να εκτελέσει τέσσερις βασικές ενέργειες εκτός από την ανάγνωση και την εγγραφή στην τοπική μνήμη: αποστολή μηνύματος στις θύρες εξόδου της, λήψη μηνύματος από τις θύρες εισόδου της, δημιουργία νέων εργασιών και καταστροφή (ολοκλήρωση) μιας εργασίας.

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

5. Τα ζεύγη εισόδου/εξόδου μπορούν να συνδεθούν με μηνύματα σε ουρά που ονομάζονται κανάλια. Μπορούν να δημιουργηθούν και να διαγραφούν κανάλια και να συμπεριληφθούν αναφορές σε κανάλια (θύρες) στα μηνύματα έτσι ώστε η συνδεσιμότητα να αλλάζει δυναμικά.

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

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

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

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

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

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

Η τρέχουσα έκδοση της σελίδας δεν έχει ακόμη επαληθευτεί

Η τρέχουσα έκδοση της σελίδας δεν έχει επαληθευτεί ακόμη από έμπειρους συμμετέχοντες και ενδέχεται να διαφέρει σημαντικά από την έκδοση που επαληθεύτηκε στις 5 Οκτωβρίου 2014. απαιτούνται έλεγχοι.

Παράλληλος Υπολογισμός- μια μέθοδος οργάνωσης υπολογιστικών υπολογιστών, στην οποία τα προγράμματα αναπτύσσονται ως ένα σύνολο αλληλεπιδρώντων υπολογιστικών διαδικασιών που εκτελούνται παράλληλα (ταυτόχρονα). Ο όρος καλύπτει ένα σύνολο θεμάτων παραλληλισμού στον προγραμματισμό, καθώς και τη δημιουργία αποτελεσματικών υλοποιήσεων υλικού. Η θεωρία των παράλληλων υπολογιστών αποτελεί κλάδο της εφαρμοσμένης θεωρίας των αλγορίθμων.

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

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

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

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

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

Plaksin M.A.

National Research University Higher School of Economics (Perm branch), Perm, Ph.D., Αναπληρωτής Καθηγητής του Τμήματος Τεχνολογιών Πληροφορικής στις Επιχειρήσεις, mapl @ list. ru

«ΥΠΕΡΥΠΟΛΟΓΙΣΤΕΣ» VS «ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ». «ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ» ΕΝΑΝΤΙΟΝ «ΣΥΝΕΡΓΑΤΙΚΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑ». ΠΩΣ ΝΑ ΜΕΛΕΤΗΣΕΤΕ ΤΟ ΘΕΜΑ «ΠΑΡΑΛΛΗΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ» ΣΤΗΝ Δευτεροβάθμια Εκπαίδευση;

ΛΕΞΕΙΣ ΚΛΕΙΔΙΑ

Πληροφορική, παράλληλος προγραμματισμός, παράλληλοι υπολογιστές, παράλληλοι αλγόριθμοι, υπερυπολογιστές, δημοτικό σχολείο, γυμνάσιο, TRIZformashka.

ΣΧΟΛΙΟ

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

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

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

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

Τα τελευταία τουλάχιστον 20 χρόνια, η έννοια του «αλγόριθμου» έχει εισαχθεί στα σχολεία άρρηκτα συνδεδεμένη με την έννοια του «εκτελεστή». Αυτό είναι φυσικό για έναν διαδοχικό αλγόριθμο. Τι να κάνετε με έναν παράλληλο αλγόριθμο; Εκτελείται από έναν ερμηνευτή ή μια ομάδα ερμηνευτών; Για να είμαστε συγκεκριμένοι, ας πάρουμε ως παράδειγμα το εκπαιδευτικό πρόγραμμα υπολογιστών «Tank Crew». Σε αυτό το πρόγραμμα, ο μαθητής καλείται να προγραμματίσει τις ενέργειες ενός πληρώματος δεξαμενής που αποτελείται από τρία άτομα: έναν πυροβολητή, έναν οδηγό και έναν φορτωτή. Κάθε ένα από αυτά έχει το δικό του σύστημα εντολών. Για να ολοκληρώσετε μια αποστολή μάχης (να χτυπήσετε όλους τους στόχους), όλα τα μέλη του πληρώματος πρέπει να δράσουν συντονισμένα. Για ένα παράδειγμα του αγωνιστικού χώρου για το πρόγραμμα Tank Crew, δείτε την Εικ. 1.

Ερώτηση: αυτοί οι τρεις ηθοποιοί πρέπει να θεωρούνται ως ανεξάρτητοι ερμηνευτές ή ως τρία συστατικά (συσκευές) ενός πολύπλοκου ερμηνευτή; Για το πλήρωμα του τανκ, η δεύτερη επιλογή φαίνεται πιο φυσική, αφού κανένας χαρακτήρας δεν μπορεί να ολοκληρώσει την εργασία μόνος του. Τι γίνεται όμως αν το παιχνίδι γίνει πιο περίπλοκο και μια αποστολή μάχης ανατεθεί σε δύο τανκς ταυτόχρονα; Για τρία τανκς; Τρία μέλη ενός πληρώματος μπορούν κάλλιστα να θεωρηθούν ως τρία μέρη ενός ερμηνευτή. Αλλά κάθε πλήρωμα είναι προφανώς ένας ανεξάρτητος ερμηνευτής. Αυτό σημαίνει ότι ένας παράλληλος αλγόριθμος για πολλές δεξαμενές θα εκτελεστεί από μια ομάδα εκτελεστών ταυτόχρονα. Αποδεικνύεται ότι για έναν παράλληλο αλγόριθμο είναι απαραίτητο να ληφθούν υπόψη και οι δύο δυνατότητες: η εκτέλεση παράλληλων ενεργειών από έναν εκτελεστή και από μια ομάδα εκτελεστών. Στην περίπτωση πληρώματος δεξαμενής, η τήρηση της γραμμής είναι εύκολη. Ο εκτελεστής είναι αυτός που είναι σε θέση να λύσει την εργασία. Αυτός ο εκτελεστής μπορεί να αποτελείται από πολλά στοιχεία, καθένα από τα οποία εκτελεί ένα συγκεκριμένο μέρος της εργασίας, αλλά δεν μπορεί ανεξάρτητα να ολοκληρώσει ολόκληρη την εργασία χωρίς τη βοήθεια άλλων στοιχείων. Αλλά αν ο διαχωρισμός «ολόκληρων ερμηνευτών» και μερών ενός πολύπλοκου ερμηνευτή θα είναι πάντα τόσο απλός, είναι αδύνατο να πούμε τώρα.

Αρχείο 1*ra Παράθυρο Σχετικά με το πρόγραμμα

Vpolyet τα πάντα

Bbno.n«fTb στην επισημασμένη γραμμή

Επιστροφή στην αρχική σελίδα**"

θα εμφανιζόταν βήμα προς βήμα (μετά την εκτέλεση της εντολής ".order nesykoa^" θα πατηθεί το κουμπί gV ygolg "n-b next uwr")

Ё ГГВД iTHWTt. ειδικό βήμα

Πληροφορίες βήμα προς βήμα

Εικ.1. Τμήμα του αγωνιστικού χώρου του προγράμματος Tank Crew

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

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

Σ. Αλγόριθμος

n Χτύπημα1"; Φορτιστής προγράμματος οδήγησης

1 Μετρήστε το orun* στο “master sgkll V Stop V Charge 1

g Pci V Stop V Charge 2

3 Χονδρική! V Περιστρέψτε δεξιόστροφα 90 μοίρες V Φόρτιση 1 V

L V V πρώτη V Φόρτιση; V

5 Φωτιά! V Stop V Φόρτιση 1

Í P^chm V St*p V Zaryasya; V

7 Φωτιά! V Stop V Φόρτιση 1 V

3 Pa^ V Περιστρέψτε δεξιόστροφα 45 μοίρες V Φόρτιση 2 V

S Παύση V Έναρξη V Παύση V

10 Pvdea V Προώθηση V Παύση ¿d

11 Plrl V Εμπρός V Παύση V

12 Paum V Περιστρέψτε δεξιόστροφα 45 μοίρες V Παύση V

13 Padm V Προώθηση V Παύση V

14 V

Εικ.2. Τμήμα του προγράμματος για το "Tank Crew" (παράδειγμα γραμμών εντολών) Η παραδοσιακή έννοια του "συστήματος εντολών εκτελεστή" (SCS) και η έννοια της ίδιας της ομάδας απαιτούν βελτίωση. Αν πιστεύουμε ότι τρία μέλη ενός πληρώματος δεξαμενής αποτελούν έναν μόνο ερμηνευτή, τότε τι πρέπει να θεωρείται το SKI αυτού του ερμηνευτή; Και τι θεωρείται ομάδα; Ή να αφήσετε την έννοια του SKI για κάθε χαρακτήρα; Δηλαδή, αυτό δεν είναι πλέον ένα σύστημα εντολών του ΕΚΤΕΛΕΣΤΗ, αλλά ένα σύστημα εντολών ενός από τα στοιχεία του εκτελεστή (για το οποίο δεν υπάρχει ακόμη όνομα);

Είναι βολικό να επεκτείνουμε την έννοια της ομάδας σε μια «γραμμή εντολών». Για παράδειγμα γραμμών εντολών πληρώματος δεξαμενής, βλ. Εικ. 2. Ωστόσο, η έννοια της «γραμμής εντολών» λειτουργεί καλά μόνο για γραμμικούς αλγόριθμους. Σε άλλες περιπτώσεις οι κυβερνώντες διαμορφώνονται δυναμικά. Είναι αδύνατο να τα απεικονίσετε με τη μορφή οπτικού πίνακα.

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

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

Μέχρι πρόσφατα, ο παράλληλος προγραμματισμός ήταν η επαρχία ενός μικρού αριθμού προγραμματιστών συστημάτων υψηλής εξειδίκευσης. Σήμερα γίνεται μέρος της επαγγελματικής ικανότητας. Όμως η τεχνολογία παράλληλου προγραμματισμού διαφέρει σημαντικά από τον παραδοσιακό διαδοχικό προγραμματισμό. Προς υποστήριξη αυτής της δήλωσης, ακολουθώντας τον L.L. Bosova, θα παραθέσουμε τον μεγαλύτερο Ρώσο ειδικό στον τομέα των παράλληλων υπολογιστών V.V. Βοϊβοντίνα:

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

«Είναι σημαντικό μόνο ο μαθητής να μάθει όσο το δυνατόν νωρίτερα ότι υπάρχουν άλλοι τρόποι οργάνωσης υπολογιστικών διαδικασιών, και όχι μόνο η διαδοχική εκτέλεση της «λειτουργίας κατά λειτουργία», ότι η πιο ισχυρή σύγχρονη τεχνολογία υπολογιστών βασίζεται σε αυτές τις άλλες μεθόδους. ότι μόνο με τέτοια τεχνολογία είναι δυνατή η επίλυση μεγάλων προβλημάτων.βιομηχανικές και επιστημονικές εργασίες κ.λπ. Είναι σημαντικό, πρώτα απ 'όλα, να επιστήσουμε την προσοχή των μαθητών όσο το δυνατόν νωρίτερα στην ανάγκη για μια κριτική στάση απέναντι στη φιλοσοφία του διαδοχικού υπολογισμού. Άλλωστε, αυτή τη φιλοσοφία έχουν να αντιμετωπίσουν σε όλη τη διάρκεια της εκπαίδευσής τους, τόσο στο σχολείο όσο και στο πανεπιστήμιο. Και είναι ακριβώς αυτή η φιλοσοφία που εμποδίζει την κατανόηση των χαρακτηριστικών της εργασίας σε υπολογιστές παράλληλης αρχιτεκτονικής».

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

Πριν από τριάντα χρόνια, η έναρξη της μαζικής μηχανογράφησης της παραγωγής απαιτούσε αύξηση του επιπέδου παιδείας υπολογιστών του πληθυσμού. Αυτό οδήγησε στην εισαγωγή της επιστήμης των υπολογιστών στο σχολικό πρόγραμμα σπουδών το 1985. Αλλά το μάθημα της επιστήμης των υπολογιστών στη σοβιετική (τότε ρωσική) έκδοση δεν περιοριζόταν στην "επιστήμη των υπολογιστών με πάτημα κουμπιών" - στην κυριαρχία της τεχνολογίας εργασίας με πακέτα λογισμικού εφαρμογών και παιχνίδια υπολογιστών. Άρχισε να αλλάζει τον τρόπο σκέψης της νεότερης γενιάς. Πρώτα απ 'όλα, αυτό αφορούσε την αλγοριθμικότητα, την ακρίβεια και την αυστηρότητα. Στη συνέχεια, το μάθημα της πληροφορικής ενσωμάτωσε στοιχεία λογικής και ανάλυσης συστημάτων. Στη συνέχεια, όλα αυτά απλοποίησαν σημαντικά τη διανομή της τόσο αναγκαίας τεχνολογίας στον 21ο αιώνα. προσέγγιση του έργου. Η συζήτηση τώρα είναι ότι την επόμενη δεκαετία, θα πρέπει να γίνουν παράλληλοι αλγόριθμοι

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

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

Ιστορικά, η πρώτη προσπάθεια να συμπεριληφθεί το θέμα των παράλληλων υπολογιστών σε σχολικό μάθημα πληροφορικής έγινε πριν από είκοσι χρόνια. Πριν από είκοσι χρόνια, σε ένα μάθημα που ονομαζόταν «Αλγόριθμος», περιγράφηκε ένας «Διευθυντής Κατασκευών», ο οποίος διέταξε τις παράλληλες ενέργειες πολλών ομάδων που χτίζουν μια κατασκευή από ορθογώνια και τριγωνικά μπλοκ. Επιπλέον, δημιουργήθηκε μια εφαρμογή λογισμικού για αυτόν τον εκτελεστή. Αλίμονο! Αυτή η υπέροχη μεθοδολογική εξέλιξη δεν ήταν περιζήτητη στα μέσα της δεκαετίας του '90. Ήταν σχεδόν είκοσι χρόνια μπροστά από την εποχή της!

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

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

Οργανωτική υποστήριξη από την κοινότητα των υπερυπολογιστών. Κάθε καλοκαίρι, η Σχολή Υπολογιστικών Μαθηματικών και Κυβερνητικής του Κρατικού Πανεπιστημίου της Μόσχας φιλοξενεί τη Θερινή Ακαδημία Υπερυπολογιστών. Και κάθε καλοκαίρι στο πλαίσιο αυτής της Ακαδημίας διοργανώνεται σχολικός στίβος για καθηγητές πληροφορικής. Η εκπαίδευση παρέχεται δωρεάν. Στους μη κατοίκους παρέχεται στέγαση με πολύ ευνοϊκούς όρους. Στο συνέδριο Russian Supercomputing Days τον Σεπτέμβριο του 2015, διοργανώθηκε σχολικό τμήμα και master class για καθηγητές πληροφορικής. Η συνεπής οργανωτική εργασία οδήγησε στον εντοπισμό και τη δημιουργία μιας ομάδας εκπαιδευτικών που ενδιαφέρονται να προωθήσουν αυτό το θέμα.

Η παρουσία ενός φωτεινού, χαρισματικού ηγέτη, όπως ο Βλαντιμίρ Βαλεντίνοβιτς Βοεβοντίν - Διδάκτωρ Φυσικών και Μαθηματικών Επιστημών, Καθηγητής, Αντεπιστέλλον Μέλος της Ρωσικής Ακαδημίας Επιστημών, Αναπληρωτής Διευθυντής του Κέντρου Υπολογιστικών Ερευνών του Κρατικού Πανεπιστημίου της Μόσχας.

Ενδιαφέρον και υποστήριξη (συμπεριλαμβανομένου υλικού) από το ρωσικό γραφείο αντιπροσωπείας της Intel και τον διευθυντή στρατηγικής ανάπτυξης της Intel, Igor Olegovich Odintsov.

Το μειονέκτημα της προσέγγισης του «υπερυπολογιστή» είναι ότι περιορίζει το πεδίο εφαρμογής του παράλληλου υπολογισμού. Οι ίδιοι οι υπερυπολογιστές είναι, κατά κανόνα, απρόσιτοι για τους μαθητές (εκτός εάν στις μεγάλες πόλεις μπορούν να τους δουν στις εκδρομές). Οι εργασίες που στοχεύουν στην επίλυση είναι πολύ περίπλοκες για τους μαθητές και, στις περισσότερες περιπτώσεις, δεν έχουν άμεση πρακτική σημασία και δεν παρουσιάζουν πρακτικό ενδιαφέρον.

Μια φυσική επέκταση του πεδίου των υπερυπολογιστών είναι η μελέτη του παράλληλου προγραμματισμού. Επί του παρόντος, για την εκτέλεση παράλληλων προγραμμάτων δεν είναι καθόλου απαραίτητο να υπάρχει υπερυπολογιστής. Αρκεί ένας πολυπύρηνος επεξεργαστής ή κάρτα βίντεο με ένα σετ επιταχυντών γραφικών. Και αυτό είναι ήδη διαθέσιμο σχεδόν σε όλους. Μεταξύ των εργασιών προς αυτή την κατεύθυνση, σημειώνουμε την υποψήφια διατριβή του M.A. Sokolovskaya σχετικά με τη μεθοδολογία διδασκαλίας των μελλοντικών δασκάλων επιστήμης υπολογιστών των βασικών στοιχείων του παράλληλου προγραμματισμού και της εμπειρίας του E.Yu. Kiseleva σχετικά με την κατάκτηση της τεχνολογίας CUDA από μαθητές.

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

υπολογισμός» στο γυμνάσιο δεν σημαίνει διδασκαλία «πραγματικού» παράλληλου προγραμματισμού (μελέτη σχετικών γλωσσικών κατασκευών, γλωσσών προγραμματισμού και τεχνολογιών), αλλά εξοικείωση των μαθητών με το αντίστοιχο σύνολο εννοιών και κατανόηση των χαρακτηριστικών της παράλληλης εργασίας. Ο κόσμος γύρω μας και μέσα μας είναι ένα πολύπλοκο παράλληλο σύστημα. Και αυτό το ίδιο το σύστημα παρέχει πολύ υλικό για την κατάκτηση των εννοιών και των μηχανισμών του παραλληλισμού. Δεν χρειάζονται περίπλοκες τεχνητές δομές όπως οι τεχνολογίες MPI και OpenMP για αυτό. Η σχολική επιστήμη των υπολογιστών πρέπει να ενθαρρύνει τη σκέψη με «παράλληλο τρόπο». Και μετά αφήστε το πανεπιστήμιο να ενσωματώσει επαγγελματικές γνώσεις, δεξιότητες και ικανότητες σε αυτή τη σκέψη. Στο σχολείο, είναι λογικό να εστιάσουμε όχι στη γνωριμία με υπερυπολογιστές και στη μελέτη παράλληλου προγραμματισμού, αλλά στην κατοχή των μηχανισμών της «κοινής δραστηριότητας» που χρησιμοποιούνται συνεχώς και ευρέως στη ζωή. Το μάθημα προτείνει να καλύψει τις ακόλουθες ερωτήσεις:

1) Συνεργασία πολλών εκτελεστών (σκάψιμο τάφρου με πολλά σκαπτικά) και παραλληλοποίηση «μέσα» σε έναν εκτελεστή παρουσία πολλών συσκευών επεξεργασίας (διάβασμα και κατανάλωση ενός μήλου). Στην επιστήμη των υπολογιστών, αυτό θα είναι ένα συγκρότημα πολλών μηχανών και ένας επεξεργαστής πολλαπλών πυρήνων.

2) Τύποι παραλληλισμού: αληθινός παραλληλισμός και ψευδοπαραλληλισμός (ένας επεξεργαστής εκτελεί πολλά προγράμματα σε μέρη).

3) Εκτελεστές ίδιου τύπου (σκαπτικά) και διαφορετικών τύπων (πλήρωμα δεξαμενής).

4) Έργα ίδιου τύπου και διαφορετικών τύπων.

5) Η αναλογία «εκτελεστών - εργασιών»: 1 εκτελεστής - 1 εργασία, 1 εκτελεστής - N εργασίες (ψευδοπαράλληλη εκτέλεση ή αληθινός παραλληλισμός παρουσία πολλών συσκευών επεξεργασίας για διαφορετικές εργασίες), Ν εκτελεστές - 1 εργασία, Ν εκτελεστές - N θέσεις εργασίας.

6) Συντονισμός των δραστηριοτήτων των ερμηνευτών. Είδη έγκρισης: ανά μέρη της εργασίας, κατά χρόνο, κατά αποτελέσματα δραστηριοτήτων, ανά πόρους.

7) Πόροι. Οι πόροι είναι κοινόχρηστοι και μη, αναλώσιμοι και επαναχρησιμοποιήσιμοι. Ανακύκλωση των καταναλωμένων πόρων («συλλογή σκουπιδιών» με την ευρεία έννοια).

8) Εκτέλεση του ίδιου έργου από έναν ερμηνευτή και μια ομάδα ερμηνευτών. Εξάρτηση της ταχύτητας εργασίας από τον αριθμό των εκτελεστών. Εξάρτηση του κόστους εργασίας από τον αριθμό των ερμηνευτών. Μη γραμμική αύξηση της ταχύτητας εργασίας με αύξηση του αριθμού των εκτελεστών. Κρίσιμη διαδρομή. Βέλτιστος αριθμός ερμηνευτών. Βέλτιστη φόρτωση εκτελεστών. Βέλτιστη διαδικασία. Εξισορρόπηση φορτίου.

9) Ανταγωνισμός μεταξύ ερμηνευτών για πόρους. Μπλοκάρισμα. Clinch (αδιέξοδο).

10) Μηχανισμοί συντονισμού των ενεργειών των ερμηνευτών.

11) Ψευδοπαράλληλη εκτέλεση διεργασιών σε υπολογιστή (διαίρεση ενός πόρου - ο επεξεργαστής) μεταξύ εκτελεστών-διεργασιών.

12) Καταλληλότητα αλγορίθμων για παραλληλοποίηση. Πιθανός βαθμός παραλληλισμού. Η ύπαρξη αλγορίθμων που δεν μπορούν να παραλληλιστούν.

Σημειώστε ότι η παραπάνω λίστα αντιπροσωπεύει την προσωπική γνώμη του συγγραφέα του άρθρου και είναι ανοιχτή για συζήτηση, προσθήκη και διόρθωση. Επιπλέον, κατά τη γνώμη του συγγραφέα, θα ήταν πολύ χρήσιμο για την «κοινότητα των υπερυπολογιστών» να διατυπώσει μια «κοινωνική τάξη» για το σχολείο: τι είδους γνώσεις και δεξιότητες θέλει να δει στους αποφοίτους του σχολείου. Πώς πρέπει να διαφέρει ένας απόφοιτος της σχολής του «κόσμου των υπερυπολογιστών» από έναν απόφοιτο του σήμερα; Αν υπάρξει παραγγελία, θα υπάρξει αποτέλεσμα. Φρέσκο ​​παράδειγμα. Την πρώτη ημέρα των Russian Supercomputing Days-2015, δύο αναφορές εξέφρασαν την ιδέα ότι η ταχύτητα των σύγχρονων υπερυπολογιστών δεν καθορίζεται από τη δύναμη των επεξεργαστών (που είναι το επίκεντρο της προσοχής του κοινού), αλλά από την ταχύτητα της μνήμης RAM. Είναι αυτό που γίνεται το σημείο συμφόρησης, η απόδοση του οποίου καθορίζει την παραγωγικότητα ολόκληρου του συστήματος. Ως αποτέλεσμα, τη δεύτερη μέρα του συνεδρίου, οι συμμετέχοντες στην κύρια τάξη του δασκάλου δοκίμασαν ένα παιχνίδι που εφευρέθηκε από τον συγγραφέα αυτού του άρθρου, δείχνοντας την αλληλεπίδραση του κεντρικού επεξεργαστή, της μνήμης RAM και της μνήμης cache. Η σειρά και η μορφή παρουσίασης του υλικού είναι ανοιχτό ερώτημα.

Το υλικό θα πρέπει να επιδεικνύεται χρησιμοποιώντας παραδείγματα που δεν σχετίζονται με τη λειτουργία ενός υπολογιστή. Οι ερμηνευτές πρέπει να χειρίζονται υλικά αντικείμενα.

Όσο το δυνατόν μεγαλύτερο μέρος της εκπαίδευσης θα πρέπει να έχει χαρακτήρα επιχειρηματικών (οργανωτικών και δραστηριοτήτων) παιχνιδιών.

Η εκπλήρωση αυτών των απαιτήσεων θα διευκολύνει την κατανόηση του υλικού που μελετάται. Αυτό θα είναι χρήσιμο τόσο κατά τη χρήση αυτής της τεχνικής στα μαθήματα επιστήμης των υπολογιστών στο σχολείο (συμπεριλαμβανομένου του δημοτικού!), όσο και κατά τη διδασκαλία ενηλίκων: καθηγητές πληροφορικής και μαθητές. Ένας μαθητής, ένας δάσκαλος σχολείου, ένας μαθητής μιας μη βασικής ειδικότητας θα μπορούν να σταματήσουν στο επίπεδο της εξοικείωσης και της κατανόησης. Ο επαγγελματίας φοιτητής θα πρέπει να κάνει το επόμενο βήμα και να περάσει από τη γνωριμία στη μελέτη αυτών των μηχανισμών σε επαγγελματικό επίπεδο. Αλλά αυτό είναι ήδη ένα βήμα πέρα ​​από τις μεθόδους αρχικής εξοικείωσης με το θέμα.

Ο συγγραφέας αυτού του άρθρου άρχισε να εργάζεται για την προετοιμασία μιας μεθοδολογίας για τη μελέτη παράλληλων υπολογιστών το 2013 κατά την προετοιμασία του διαγωνισμού TRIZformashka-2013 και συνέχισε τα επόμενα χρόνια.

(Το "TRIZformashka" είναι ένας διαπεριφερειακός διαγωνισμός Διαδικτύου στην επιστήμη των υπολογιστών, στην ανάλυση συστημάτων και στο TRIZ. Πραγματοποιείται ετησίως το δεύτερο μισό του Μαρτίου. Η ηλικία των συμμετεχόντων είναι από την πρώτη τάξη έως το τέταρτο έτος. Γεωγραφία - από το Βλαδιβοστόκ στη Ρίγα. Ο μέσος όρος Ο αριθμός των συμμετεχόντων είναι 100 ομάδες (300 άτομα .), μέγιστος - 202 ομάδες (πάνω από 600 άτομα) Ιστότοπος του διαγωνισμού www.trizformashka.ru.) Στη συνέχεια, το 2013, ο στόχος της εργασίας διατυπώθηκε ως εξής:

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

2. Να τα προσφέρει (τμηματικά, ετησίως) στους συμμετέχοντες του διαγωνισμού.

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

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

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

1. Εργασίες για τον παραλληλισμό, ξεκινώντας από το 2013, συμπεριλήφθηκαν στον διαγωνισμό “TRIZformashka” (από το 2013 ο διαγωνισμός έχει τον υπότιτλο “Parallel Computing”). Μια λίστα τύπων εργασιών δίνεται παρακάτω.

2. Ένα κεφάλαιο για τον παραλληλισμό έχει ετοιμαστεί για τη νέα έκδοση του εγχειριδίου πληροφορικής για την 4η τάξη. Η ύλη δοκιμάστηκε στις Γ' και Δ' τάξεις του Λυκείου Νο. 10 στο Περμ.

3. Το παιχνίδι υπολογιστή «Tank Crew» έχει αναπτυχθεί και χρησιμοποιείται από το 2014 στον διαγωνισμό TRIZformashka.

4. Έχει αναπτυχθεί και δοκιμαστεί ένας αριθμός παιχνιδιών, τα οποία αντικατοπτρίζουν τα ακόλουθα ζητήματα:

Συντονισμός των δραστηριοτήτων των ερμηνευτών. Διάφοροι τύποι έγκρισης.

Εκτέλεση του ίδιου έργου από έναν ερμηνευτή και μια ομάδα ερμηνευτών. Εξάρτηση της ταχύτητας εργασίας από τον αριθμό των εκτελεστών. Μη γραμμική αύξηση της ταχύτητας εργασίας με αύξηση του αριθμού των εκτελεστών. Κρίσιμη διαδρομή. Βέλτιστος αριθμός ερμηνευτών. Βέλτιστη φόρτωση εκτελεστών. Βέλτιστη διαδικασία;

Πόροι. Κοινόχρηστοι και μη κοινόχρηστοι πόροι.

Ανταγωνισμός μεταξύ των καλλιτεχνών για πόρους. Μπλοκάρισμα. Clinch (αδιέξοδο). Προτάθηκαν και δοκιμάστηκαν τα ακόλουθα είδη προβλημάτων:

1. Καθήκοντα σχετικά με τους τύπους έγκρισης. (Τι τύποι συντονισμού υπάρχουν στην καφετέρια του σχολείου;);

2. Παιχνίδι "Tank Crew". Εργασία για την κατασκευή ενός παράλληλου αλγόριθμου.

3. Εκτελεστής «Κατασκευή». Ταυτόχρονα, οι ομάδες εργασίας κατασκευάζουν μια κατασκευή από οριζόντιες και κάθετες δοκούς. Οι εργασίες περιλαμβάνουν εργασίες για την εκτέλεση του καθορισμένου αλγορίθμου, για την ανάπτυξη ενός νέου αλγορίθμου, για αναζήτηση σφαλμάτων σε έναν δεδομένο αλγόριθμο, για έρευνα αλγορίθμων (σύγκριση χρόνων κατασκευής με χρήση διαφορετικών αλγορίθμων, σύγκριση κόστους κατασκευής, αξιολόγηση της δυνατότητας εξοικονόμησης με ανακατανομή εργασία, κ.λπ.)

4. Ανταγωνισμός για πόρους. Τρία γουρουνάκια το καθένα μαγειρεύει το μεσημεριανό του. Για κάθε γουρουνάκι υποδεικνύεται τι πιάτα ετοιμάζει, τι πόρους (εξοπλισμός, σκεύη κ.λπ.) χρειάζεται για αυτό και για πόσο χρόνο πρέπει να χρησιμοποιούνται αυτοί οι πόροι. Είναι απαραίτητο να καταρτιστεί ένα πρόγραμμα εργασίας για κάθε γουρουνάκι, αν μαγειρεύει μόνο του στην κουζίνα, αν μαγειρεύουν σε ζευγάρια, αν μαγειρεύουν και τα τρία ταυτόχρονα. Ο χρόνος μαγειρέματος πρέπει να ελαχιστοποιείται.

5. Διάγραμμα δικτύου. Δίνεται ένα διάγραμμα δικτύου. Απαιτείται να απεικονιστεί (σχηματικά) η δομή που θα κατασκευαστεί, να προσδιοριστεί πόσες ημέρες θα χρειαστούν για την κατασκευή με συγκεκριμένο αριθμό ομάδων, ποιο μέρος της εργασίας θα ολοκληρωθεί σε συγκεκριμένο χρόνο.

6. Μορφές κλιμακωτές-παράλληλες. Σχεδιασμός εργασιών σύμφωνα με διάφορα κριτήρια. Δίνονται η ανάθεση εργασίας, η παραγωγικότητα των εργαζομένων και οι κανόνες πληρωμής. Είναι απαραίτητο να προσδιοριστεί ο αριθμός των εργαζομένων που απαιτούνται για την ολοκλήρωση της εργασίας σε μια δεδομένη χρονική στιγμή, να καθοριστεί η περίοδος εργασίας για έναν δεδομένο αριθμό εργαζομένων, να καθοριστεί ο αριθμός των εργαζομένων που απαιτούνται για την ελαχιστοποίηση του κόστους εργασίας.

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

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

Σήμερα έχουμε τα εξής αποτελέσματα:

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

2. Έχει διατυπωθεί ένας κατάλογος θεμάτων που προτείνεται να αντικατοπτρίζονται στην αρχική πορεία του παράλληλου υπολογισμού.

3. Διατυπώνονται ορισμένες κατηγορίες προβλημάτων. Με βάση τη συσσωρευμένη εμπειρία, μπορείτε να αξιολογήσετε τι είδους προβλήματα πρέπει να εφευρεθούν.

4. Έχει ετοιμαστεί ένα σύνολο προβλημάτων των ονομαζόμενων τάξεων. Τα προβλήματα δοκιμάστηκαν στους διαγωνισμούς TRIZformashka το 2013, 2014, 2015. ή/και στο δημοτικό σχολείο (σε τάξεις με μαθητές της τρίτης και της τέταρτης τάξης του Λυκείου Νο. 10 στο Περμ).

5. Έχει ετοιμαστεί ένα σετ επαγγελματικών παιχνιδιών. Τα παιχνίδια έχουν δοκιμαστεί σε δημοτικά σχολεία και σε πλήθος εκδηλώσεων για εκπαιδευτικούς. Συγκεκριμένα, παρουσιάστηκαν στο σχολικό κομμάτι της Θερινής Ακαδημίας Υπερυπολογιστών του Κρατικού Πανεπιστημίου της Μόσχας το 2014, σε ένα master class για δασκάλους στο Russian Supercomputing Days-2015, σε πολλά άλλα συνέδρια (συμπεριλαμβανομένου του συνεδρίου IT-education-2015 του η ένωση APKIT) και άλλες εκδηλώσεις για καθηγητές πληροφορικής·

6. Ετοιμάστηκε ένα σύνολο κειμένων για τον παραλληλισμό για ένα σχολικό βιβλίο της τέταρτης δημοτικού. Τα κείμενα δοκιμάστηκαν στο Λύκειο Νο. 10 στο Περμ.

7. Το παιχνίδι στον υπολογιστή “Tank Crew” έχει ετοιμαστεί. Το παιχνίδι δοκιμάστηκε στους διαγωνισμούς TRIZformashka το 2014 και το 2015.

8. Ο διαγωνισμός TRIZformashka έχει αποδειχθεί ως πλατφόρμα δοκιμών.

9. Διατυπώνεται το έργο του «castling» στη διαδικασία διδασκαλίας του αλγοριθμισμού: διδάξτε αμέσως τον παράλληλο προγραμματισμό, παρουσιάζοντας έναν διαδοχικό αλγόριθμο ως μέρος ενός παράλληλου. Υπάρχουν σκέψεις για το πώς μπορεί να υλοποιηθεί αυτή η ιδέα. Υπάρχει η ευκαιρία να δοκιμάσετε αυτές τις ιδέες κατά τη διάρκεια του τρέχοντος σχολικού έτους (για μαθητές των τάξεων 4-5).

10. Υπάρχει ανάγκη, επιθυμία και ευκαιρία να συνεχίσετε να εργάζεστε.

Βιβλιογραφία

1. Αλγόριθμοι: τάξεις 5-7: Βιβλίο και προβληματικό βιβλίο γενικής εκπαίδευσης. εκπαιδευτικά ιδρύματα /Α.Κ. Zvonkin, A.G. Kulakov, S.K. Lando, A.L. Semenov, A.Kh. Σεν. - M.: Bustard, 1996.

2. Bosova L.L. Παράλληλοι αλγόριθμοι σε σχολεία πρωτοβάθμιας και δευτεροβάθμιας εκπαίδευσης. //Πληροφορική στο σχολείο. 2015, αρ. 2. Σελ.24-27.

3. Voevodin V.V. Υπολογιστικά μαθηματικά και η δομή των αλγορίθμων: Διάλεξη 10 σχετικά με το γιατί είναι δύσκολο να λυθούν προβλήματα σε υπολογιστικά συστήματα παράλληλης αρχιτεκτονικής και ποιες πρόσθετες πληροφορίες πρέπει να γνωρίζετε. για να ξεπεράσει με επιτυχία αυτές τις δυσκολίες: ένα σχολικό βιβλίο. Μ.: Εκδοτικός Οίκος MSU 2010.

4. Gavrilova I.V. Πρώτο ταξίδι στον «παράλληλο κόσμο». //Πληροφορική στο σχολείο. 2015, Νο. 6. Σελ.16-19.

5. Dieter M.L., Plaksin M.A. Παράλληλοι υπολογιστές στη σχολική επιστήμη των υπολογιστών. Παιχνίδι "Κατασκευή". //Πληροφορική στο σχολείο: παρελθόν, παρόν και μέλλον.: υλικά του Πανρωσικού. επιστημονική μέθοδος. συνδ. για τη χρήση των ΤΠΕ στην εκπαίδευση, 6-7 Φεβρουαρίου 2014 /Περμ. κατάσταση εθνικός έρευνα παν. - Perm, 2014. - Σελ.258-261.

6. Ivanova N.G., Plaksin M.A., Rusakova O.L. TRIZformashka. //Επιστήμη των υπολογιστών. N05 Ανακτήθηκε 10/10/2015.

14. Plaksin M.A. Πληροφορική: εγχειρίδιο για την 4η τάξη: 2 ώρες / M.A.Plaksin, N.G.Ivanova, O.L.Rusakova. - Μ.: ΜΠΙΝΟΜ. Εργαστήριο Γνώσης, 2012.

15. Plaksin M.A. Σχετικά με τη μέθοδο της αρχικής γνωριμίας με τους παράλληλους υπολογιστές στο λύκειο. //Πληροφορική στο σχολείο: παρελθόν, παρόν και μέλλον.: υλικά του Πανρωσικού. επιστημονική μέθοδος. συνδ. για τη χρήση των ΤΠΕ στην εκπαίδευση, 6-7 Φεβρουαρίου 2014 /Περμ. κατάσταση εθνικός έρευνα παν. - Perm, 2014. - Σελ.256-258.

16. Plaksin M.A. Ένα σύνολο επαγγελματικών παιχνιδιών για την εισαγωγή παράλληλων υπολογιστών στο δημοτικό σχολείο. //Διδασκαλία τεχνολογιών πληροφοριών στη Ρωσική Ομοσπονδία: υλικά του δέκατου τρίτου ανοιχτού πανρωσικού συνεδρίου "IT-0education-2015" (Περμ, 14-15 Μαΐου 2015). Perm State National Research University, - Perm, 2015. P.60-62.

17. Plaksin M.A., Ivanova N.G., Rusakova O.L. Ένα σύνολο εργασιών για εξοικείωση με τους παράλληλους υπολογιστές στον διαγωνισμό TRIZformashka. //Διδασκαλία των τεχνολογιών της πληροφορίας στη Ρωσική Ομοσπονδία: υλικά του δέκατου τρίτου ανοιχτού πανρωσικού συνεδρίου "IT Education-2015" (Περμ, 14-15 Μαΐου 2015). Perm State National Research University, - Perm, 2015. σελ. 232-234.

18. Sokolovskaya M.A. Μεθοδολογικό σύστημα διδασκαλίας των βασικών του παράλληλου προγραμματισμού σε μελλοντικούς καθηγητές πληροφορικής.: περίληψη. dis. ...κανάλι. πεδ. Επιστήμες, Krasnoyarsk, 2012.

Η έννοια του παράλληλου υπολογισμού

ΒΑΣΕΙΣ ΠΑΡΑΛΛΗΛΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

Διάλεξη Νο. 6


Κάτω από παράλληλους ή ταυτόχρονους υπολογισμούςμπορείτε να κατανοήσετε διαδικασίες επίλυσης προβλημάτων στις οποίες πολλές υπολογιστικές λειτουργίες μπορούν να εκτελεστούν ταυτόχρονα

Οι παράλληλοι υπολογιστές αποτελούν τη βάση των τεχνολογιών υπερυπολογιστών και των υπολογιστών υψηλής απόδοσης

Παράλληλη επεξεργασία

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

Ομοίως, ένα σύστημα Ν συσκευών θα εκτελεί την ίδια εργασία σε 1000/N μονάδες χρόνου. Παρόμοιες αναλογίες μπορούν να βρεθούν στη ζωή: αν ένας στρατιώτης σκάψει έναν κήπο σε 10 ώρες, τότε μια ομάδα πενήντα στρατιωτών με τις ίδιες ικανότητες, που εργάζονται ταυτόχρονα, θα αντιμετωπίσει την ίδια δουλειά σε 12 λεπτά - η αρχή του παραλληλισμού σε δράση!

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

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

Επεξεργασία μεταφορέα

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

Ας υποθέσουμε ότι υπάρχουν πέντε μικροεπεμβάσεις σε μια πράξη, καθεμία από τις οποίες εκτελείται σε μία μονάδα χρόνου. Εάν υπάρχει μία αδιαίρετη σειριακή συσκευή, τότε θα επεξεργαστεί 100 ζεύγη ορισμάτων σε 500 μονάδες. Εάν κάθε μικρολειτουργία χωρίζεται σε ένα ξεχωριστό στάδιο (ή αλλιώς ονομάζεται στάδιο) μιας συσκευής μεταφοράς, τότε στην πέμπτη μονάδα χρόνου, σε διαφορετικά στάδια επεξεργασίας μιας τέτοιας συσκευής, θα εντοπιστούν τα πρώτα πέντε ζεύγη ορισμάτων , και ολόκληρο το σύνολο των εκατό ζευγών θα υποβληθεί σε επεξεργασία σε 5 + 99 = 104 μονάδες χρόνου - η επιτάχυνση σε σύγκριση με μια σειριακή συσκευή είναι σχεδόν πέντε φορές (σύμφωνα με τον αριθμό των σταδίων του μεταφορέα).



Μοντέλα παράλληλων υπολογιστών (ταξινόμηση Flynn)

· «Μία ροή εντολών - μία ροή δεδομένων» (SISD - «Μεμονωμένα δεδομένα εντολών»)

Αναφέρεται στην αρχιτεκτονική von Neumann. Οι υπολογιστές SISD είναι συνηθισμένοι, «παραδοσιακοί» διαδοχικοί υπολογιστές, στους οποίους εκτελείται μόνο μία λειτουργία σε ένα στοιχείο δεδομένων (αριθμητικό ή κάποια άλλη τιμή) ανά πάσα στιγμή. Οι περισσότεροι σύγχρονοι προσωπικοί υπολογιστές ανήκουν σε αυτή την κατηγορία.

· "Μία ροή εντολών - πολλές ροές δεδομένων" (SIMD - "Μία εντολή - Πολλαπλά δεδομένα")

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

Εάν συναντηθούν δεδομένα στην εντολή, ο ελεγκτής στέλνει μια εντολή σε όλα τα στοιχεία του επεξεργαστή και αυτή η εντολή εκτελείται σε πολλά ή όλα τα στοιχεία του επεξεργαστή. Κάθε στοιχείο επεξεργασίας έχει τη δική του μνήμη για την αποθήκευση δεδομένων. Ένα από τα πλεονεκτήματα αυτής της αρχιτεκτονικής είναι ότι σε αυτή την περίπτωση η λογική υπολογισμού εφαρμόζεται πιο αποτελεσματικά. Οι επεξεργαστές SIMD ονομάζονται επίσης διανυσματικοί επεξεργαστές.

· "Πολλές ροές εντολών - μία ροή δεδομένων" (MISD - "Πολλαπλές εντολές - Μεμονωμένα δεδομένα")

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

Οι συστοιχίες PE με απευθείας συνδέσεις μεταξύ κοντινών PE καλούνται συστολικός. Τέτοιοι πίνακες είναι εξαιρετικά αποτελεσματικοί, αλλά καθένας από αυτούς επικεντρώνεται στην επίλυση μιας πολύ στενής κατηγορίας προβλημάτων. Ας εξετάσουμε πώς μπορείτε να δημιουργήσετε έναν συστολικό πίνακα για να λύσετε ένα συγκεκριμένο πρόβλημα. Ας, για παράδειγμα, θέλετε να δημιουργήσετε μια συσκευή για τον υπολογισμό ενός πίνακα D=C+AB, Οπου

Εδώ όλοι οι πίνακες είναι πίνακες σειράς n. Μήτρα ΕΝΑέχει μία διαγώνιο πάνω και δύο διαγώνιες κάτω από την κύρια. μήτρα σι- μία διαγώνιος κάτω και δύο διαγώνιοι πάνω από την κύρια. μήτρα ντοτρεις διαγώνιες πάνω και κάτω από την κύρια. Αφήστε κάθε PE να μπορεί να εκτελέσει μια βαθμωτή λειτουργία c+abκαι ταυτόχρονα μεταδίδουν δεδομένα. Κάθε PE, επομένως, πρέπει να έχει τρεις εισόδους: α, β, γκαι τρεις εξόδους: α, β, γ. Εισαγωγή ( σε) και τα Σαββατοκύριακα ( έξω) τα δεδομένα σχετίζονται με σχέσεις

a out = a in , b out = b in , c out = c in + a in *b in ;

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

Η συστοιχία λειτουργεί σε κύκλους ρολογιού. Κατά τη διάρκεια κάθε κύκλου ρολογιού, όλα τα δεδομένα μετακινούνται σε γειτονικούς κόμβους προς τις κατευθύνσεις που υποδεικνύονται από τα βέλη.

Το σχήμα δείχνει την κατάσταση της συστολικής συστοιχίας σε κάποια χρονική στιγμή. Στον επόμενο κύκλο ρολογιού, όλα τα δεδομένα θα μετακινηθούν σε έναν κόμβο και στοιχεία a11, b11, c11θα καταλήξει σε ένα PE που βρίσκεται στη διασταύρωση των διακεκομμένων γραμμών. Επομένως, η έκφραση θα αξιολογηθεί c11+a11b11.Στο ίδιο ρολόι δεδομένα α12Και b21θα έρθει πολύ κοντά στο PE, που βρίσκεται στην κορυφή της συστολικής συστοιχίας.

Στον επόμενο κύκλο ρολογιού, όλα τα δεδομένα θα μετακινηθούν ξανά σε έναν κόμβο προς την κατεύθυνση των βελών και θα εμφανιστούν στο επάνω PE α12Και b21και το αποτέλεσμα της προηγούμενης λειτουργίας της ΠΕ που βρίσκεται παρακάτω, δηλ. c11+a11b11. Επομένως, η έκφραση θα αξιολογηθεί c11+a11b11+a12b21. Αυτό είναι ένα στοιχείο δ11μήτρες ρε.

Συνεχίζοντας τη σταδιακή εξέταση της διαδικασίας, μπορούμε να επαληθεύσουμε ότι στις εξόδους PE που αντιστοιχούν στο ανώτερο όριο της συστολικής συστοιχίας, τα στοιχεία μήτρας εξάγονται περιοδικά μετά από τρία βήματα ρε, ενώ στοιχεία της ίδιας διαγωνίου εμφανίζονται σε κάθε έξοδο. Σε περίπου 3nκύκλους, θα ολοκληρωθεί ο υπολογισμός ολόκληρου του πίνακα ρε. Σε αυτή την περίπτωση, το φορτίο σε κάθε συστολικό κύτταρο είναι ασυμπτωτικά ίσο 1/3 .

"Πολλές ροές εντολών - πολλές ροές δεδομένων" (MIMD - "Πολλαπλές εντολές - Πολλαπλά δεδομένα")

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

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

Ο παράλληλος υπολογισμός είναι μια μέθοδος οργάνωσης υπολογιστών στην οποία τα προγράμματα αναπτύσσονται ως ένα σύνολο αλληλεπιδρώντων υπολογιστικών διαδικασιών που εκτελούνται ταυτόχρονα.

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

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

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

1. Αλληλεπίδραση μέσω κοινόχρηστης μνήμης (για παράδειγμα, σε Java ή C#). Αυτός ο τύπος παράλληλου προγραμματισμού συνήθως απαιτεί κάποια μορφή σύλληψης ελέγχου για τον συντονισμό των νημάτων μεταξύ τους.

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

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

1. OpenMPχρησιμοποιείται σε παράλληλα συστήματα με κοινόχρηστη μνήμη (για παράδειγμα, σύγχρονοι υπολογιστές με επεξεργαστές πολλαπλών πυρήνων).

2. MPI (Διεπαφή διέλευσης μηνυμάτων)είναι ένα πρότυπο για συστήματα μεταφοράς μηνυμάτων μεταξύ παράλληλων διεργασιών εκτέλεσης, που χρησιμοποιείται στην ανάπτυξη προγραμμάτων για υπερυπολογιστές.

3. Νήματα POSIXείναι ένα πρότυπο για την υλοποίηση νημάτων εκτέλεσης.

4. Το λειτουργικό σύστημα Windows έχει ενσωματωμένη υποστήριξη για εφαρμογές πολλαπλών νημάτων για C++ σε επίπεδο API.

5. PVM (Παράλληλη εικονική μηχανή)σας επιτρέπει να συνδυάσετε ετερογενείς υπολογιστές που συνδέονται από ένα δίκτυο σε έναν κοινό υπολογιστικό πόρο.

Τα συστήματα που βασίζονται σε πολλούς υπολογιστές ταξινομούνται ως συστήματα κατανεμημένων υπολογιστών. Τέτοιες λύσεις χρησιμοποιούνται εδώ και αρκετό καιρό. Το πιο εντυπωσιακό παράδειγμα τεχνολογίας κατανεμημένων υπολογιστών είναι το MPI (Message Passing Interface). Το MPI είναι το πιο κοινό πρότυπο διεπαφής ανταλλαγής δεδομένων για παράλληλο προγραμματισμό· υπάρχουν υλοποιήσεις για έναν τεράστιο αριθμό πλατφορμών υπολογιστών. Το MPI παρέχει στον προγραμματιστή έναν ενοποιημένο μηχανισμό αλληλεπίδρασης διακλαδώσεων σε μια παράλληλη εφαρμογή, ανεξάρτητα από την αρχιτεκτονική της μηχανής (μονοεπεξεργαστής/πολυεπεξεργαστής με κοινόχρηστη/ξεχωριστή μνήμη), τη σχετική θέση των διακλαδώσεων (στον ίδιο επεξεργαστή ή σε διαφορετικούς).

Δεδομένου ότι το MPI προορίζεται κυρίως για συστήματα με κοινόχρηστη μνήμη, η χρήση του για την οργάνωση μιας παράλληλης διαδικασίας σε ένα σύστημα με κοινόχρηστη μνήμη είναι εξαιρετικά δύσκολη και μη πρακτική. Ωστόσο, τίποτα δεν σας εμποδίζει να δημιουργήσετε λύσεις MPI για ένα μηχάνημα.

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

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

Το OpenMP (Open Multi-Processing) είναι ένα σύνολο οδηγιών μεταγλωττιστή, διαδικασιών βιβλιοθήκης και μεταβλητών περιβάλλοντος που έχουν σχεδιαστεί για τον προγραμματισμό εφαρμογών πολλαπλών νημάτων σε συστήματα πολλαπλών επεξεργαστών κοινής μνήμης.

Η προδιαγραφή OpenMP αναπτύσσεται από αρκετούς μεγάλους κατασκευαστές υλικού και λογισμικού, η εργασία των οποίων ελέγχεται από έναν μη κερδοσκοπικό οργανισμό που ονομάζεται OpenMP Architecture Review Board (ARB).

Η πρώτη έκδοση εμφανίστηκε το 1997 και προοριζόταν για τη γλώσσα Fortran. Η έκδοση C/C++ αναπτύχθηκε το 1998. Το 2008 κυκλοφόρησε το OpenMP 3.0. Η διεπαφή OpenMP έχει γίνει μια από τις πιο δημοφιλείς τεχνολογίες παράλληλου προγραμματισμού. Το OpenMP χρησιμοποιείται με επιτυχία τόσο στον προγραμματισμό συστημάτων υπερυπολογιστών με μεγάλο αριθμό επεξεργαστών, όσο και σε συστήματα επιτραπέζιων χρηστών ή, για παράδειγμα, στο Xbox 360.

Το OpenMP υλοποιεί παράλληλους υπολογισμούς χρησιμοποιώντας multithreading, στο οποίο ένα «κύριο» νήμα δημιουργεί ένα σύνολο slave νημάτων και η εργασία κατανέμεται μεταξύ τους. Τα νήματα υποτίθεται ότι εκτελούνται παράλληλα σε ένα μηχάνημα με πολλούς επεξεργαστές (ο αριθμός των επεξεργαστών δεν χρειάζεται να είναι μεγαλύτερος ή ίσος με τον αριθμό των νημάτων).

Οι εργασίες που εκτελούνται από νήματα παράλληλα, καθώς και τα δεδομένα που απαιτούνται για την εκτέλεση αυτών των εργασιών, περιγράφονται χρησιμοποιώντας ειδικές οδηγίες προεπεξεργαστή της αντίστοιχης γλώσσας - pragmas. Για παράδειγμα, μια ενότητα του κώδικα Fortran που πρέπει να εκτελεστεί από πολλά νήματα, καθένα από τα οποία έχει το δικό του αντίγραφο της μεταβλητής N, προηγείται από την ακόλουθη οδηγία: !$OMP PARALLEL PRIVATE(N)

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

Τα βασικά στοιχεία του OpenMP είναι

1. Κατασκευές για τη δημιουργία νημάτων (παράλληλη οδηγία).

2. Κατασκευές για την κατανομή της εργασίας μεταξύ των νημάτων (Οδηγίες DO/for και τμήματος).

3. Κατασκευές για τη διαχείριση εργασιών με δεδομένα (κοινόχρηστες και ιδιωτικές εκφράσεις για τον καθορισμό της κατηγορίας μνήμης των μεταβλητών).

4. Κατασκευές για συγχρονισμό νημάτων (κρίσιμες, ατομικές οδηγίες και οδηγίες φραγμού).

5. Διαδικασίες βιβλιοθήκης υποστήριξης χρόνου εκτέλεσης (για παράδειγμα, omp_get_thread_num).

6. μεταβλητές περιβάλλοντος (για παράδειγμα, OMP_NUM_THREADS).

Το OpenMP χρησιμοποιεί ένα μοντέλο παράλληλης εκτέλεσης συγχώνευσης διακλάδωσης. Ένα πρόγραμμα OpenMP ξεκινά ως ένα μόνο νήμα εκτέλεσης, που ονομάζεται αρχικό νήμα. Όταν ένα νήμα συναντά μια παράλληλη κατασκευή, δημιουργεί μια νέα ομάδα νημάτων που αποτελείται από το ίδιο και έναν αριθμό πρόσθετων νημάτων και γίνεται ο κύριος της νέας ομάδας. Όλα τα μέλη της νέας ομάδας (συμπεριλαμβανομένης της κύριας ομάδας) εκτελούν κώδικα μέσα στην παράλληλη κατασκευή. Υπάρχει ένα σιωπηρό φράγμα στο τέλος της παράλληλης δομής. Μετά την παράλληλη κατασκευή, μόνο το κύριο νήμα συνεχίζει να εκτελεί τον κωδικό χρήστη. Μια παράλληλη περιοχή μπορεί να είναι ένθετη με άλλες παράλληλες περιοχές, στις οποίες κάθε νήμα της αρχικής περιοχής γίνεται το κύριο νήμα για την ομάδα νημάτων της. Οι ένθετες περιοχές μπορούν με τη σειρά τους να περιλαμβάνουν περιοχές σε βαθύτερο επίπεδο φωλιάς.

Ο αριθμός των νημάτων σε μια ομάδα που τρέχει παράλληλα μπορεί να ελεγχθεί με διάφορους τρόπους. Ένα από αυτά χρησιμοποιεί τη μεταβλητή περιβάλλοντος OMP_NUM_THREADS. Ένας άλλος τρόπος είναι να καλέσετε τη διαδικασία omp_set_num_threads(). Ένας άλλος τρόπος είναι να χρησιμοποιήσετε την έκφραση num_threads σε συνδυασμό με την παράλληλη οδηγία.

Σε αυτό το πρόγραμμα, δύο πίνακες (α και β) προστίθενται παράλληλα κατά δέκα νήματα.

#περιλαμβάνω

#περιλαμβάνω

int main(int argc, char *argv)

float a[N], b[N], c[N];

omp_set_dynamic(0); // εμποδίζει τη βιβλιοθήκη openmp να αλλάξει τον αριθμό των νημάτων κατά την εκτέλεση

omp_set_num_threads(10); // ορίστε τον αριθμό των νημάτων σε 10

// αρχικοποίηση των πινάκων

για (I = 0, I< N; i++)

// υπολογίστε το άθροισμα των πινάκων

#pragma omp parallel shared(a, b, c) private(i)

για (I = 0, I< N; i++)

c[i] = a[i] + b[i];

printf("%f\n", c);

Αυτό το πρόγραμμα μπορεί να μεταγλωττιστεί χρησιμοποιώντας gcc-4.4 και μεταγενέστερα με τη σημαία –fopenmp. Προφανώς, εάν καταργήσετε τη συμπερίληψη του αρχείου κεφαλίδας omp.h, καθώς και τις κλήσεις στη συνάρτηση διαμόρφωσης OpenMP, το πρόγραμμα μπορεί να μεταγλωττιστεί σε οποιονδήποτε μεταγλωττιστή C ως κανονικό διαδοχικό πρόγραμμα.

Το OpenMP υποστηρίζεται από πολλούς σύγχρονους μεταγλωττιστές:

1. Οι μεταγλωττιστές Sun Studio υποστηρίζουν την επίσημη προδιαγραφή - OpenMP 2.5 - με βελτιωμένη απόδοση στο Solaris OS. Η υποστήριξη Linux σχεδιάζεται για την επόμενη έκδοση.

2. Η Visual C++ 2005 και νεότερη έκδοση υποστηρίζει το OpenMP σε εκδόσεις Professional και Team System.

3. Το GCC 4.2 υποστηρίζει OpenMP και ορισμένες διανομές (όπως το Fedora Core 5 gcc) έχουν συμπεριλάβει υποστήριξη στις εκδόσεις του GCC 4.1.

4. Intel C++ Compiler, συμπεριλαμβανομένης μιας έκδοσης του Intel Cluster OpenMP για προγραμματισμό σε συστήματα κατανεμημένης μνήμης.

Διεπαφή διέλευσης μηνυμάτων (MPIδιεπαφή μετάδοσης μηνυμάτων) είναι μια διεπαφή προγραμματισμού μεταφοράς πληροφοριών (API) που επιτρέπει την ανταλλαγή μηνυμάτων μεταξύ διεργασιών που εκτελούν την ίδια εργασία. Αναπτύχθηκε από τους William Group, Evin Lusk και άλλους.

Το MPI είναι το πιο κοινό πρότυπο διεπαφής ανταλλαγής δεδομένων για παράλληλο προγραμματισμό και υπάρχουν υλοποιήσεις για μεγάλο αριθμό πλατφορμών υπολογιστών. Χρησιμοποιείται στην ανάπτυξη προγραμμάτων για συμπλέγματα και υπερυπολογιστές. Το κύριο μέσο επικοινωνίας μεταξύ των διεργασιών στο MPI είναι η μετάδοση μηνυμάτων μεταξύ τους. Η τυποποίηση MPI πραγματοποιείται από το MPI Forum. Το πρότυπο MPI περιγράφει μια διεπαφή μετάδοσης μηνυμάτων που πρέπει να υποστηρίζεται τόσο στην πλατφόρμα όσο και σε εφαρμογές χρήστη. Αυτή τη στιγμή υπάρχει ένας μεγάλος αριθμός δωρεάν και εμπορικών υλοποιήσεων του MPI. Υπάρχουν υλοποιήσεις για γλώσσες Fortran 77/90, C και C++.

Το MPI επικεντρώνεται κυρίως σε συστήματα με κατανεμημένη μνήμη, δηλαδή όταν το κόστος μεταφοράς δεδομένων είναι υψηλό, ενώ το OpenMP επικεντρώνεται σε συστήματα με κοινόχρηστη μνήμη (πολλαπλοί πυρήνες με κοινό ESH). Και οι δύο τεχνολογίες μπορούν να χρησιμοποιηθούν μαζί για τη βέλτιστη χρήση πολυπύρηνων συστημάτων σε ένα σύμπλεγμα.

Η πρώτη έκδοση του MPI αναπτύχθηκε το 1993-1994 και το MPI 1 κυκλοφόρησε το 1994.

Οι περισσότερες σύγχρονες υλοποιήσεις MPI υποστηρίζουν την έκδοση 1.1. Η τυπική έκδοση 2.0 MPI υποστηρίζεται από τις περισσότερες σύγχρονες υλοποιήσεις, αλλά ορισμένες δυνατότητες ενδέχεται να μην έχουν εφαρμοστεί πλήρως.

αποστολή και λήψη μηνυμάτων μεταξύ ξεχωριστών διεργασιών.

συλλογικές αλληλεπιδράσεις διαδικασιών.

αλληλεπιδράσεις σε ομάδες διαδικασιών·

υλοποίηση τοπολογιών διεργασιών.

δυναμική παραγωγή και διαχείριση διαδικασιών·

μονόδρομες επικοινωνίες (Get/Put);

παράλληλη είσοδος και έξοδος?

εκτεταμένες συλλογικές λειτουργίες (οι διεργασίες μπορούν να εκτελούν συλλογικές λειτουργίες όχι μόνο εντός ενός φορέα επικοινωνίας, αλλά και σε πολλούς φορείς επικοινωνίας).

Η έκδοση MPI 2.1 κυκλοφόρησε στις αρχές Σεπτεμβρίου 2008.

Ο βασικός μηχανισμός επικοινωνίας μεταξύ των διαδικασιών MPI είναι η μετάδοση και λήψη μηνυμάτων. Το μήνυμα περιέχει μεταδιδόμενα δεδομένα και πληροφορίες που επιτρέπουν στον παραλήπτη να τα λάβει επιλεκτικά:

1. αποστολέας - κατάταξη (αριθμός στην ομάδα) του αποστολέα μηνύματος.

2. παραλήπτης - βαθμός παραλήπτη?

3. σημάδι - μπορεί να χρησιμοποιηθεί για τον διαχωρισμό διαφορετικών τύπων μηνυμάτων.

4. communicator - κωδικός ομάδας διεργασιών.

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

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

Παρακάτω είναι ένα παράδειγμα προγράμματος για τον υπολογισμό του π σε C χρησιμοποιώντας MPI:

// Σύνδεση των απαραίτητων κεφαλίδων

#περιλαμβάνω

#περιλαμβάνω

// Συμπεριλάβετε το αρχείο κεφαλίδας MPI

#include "mpi.h"

// Συνάρτηση για ενδιάμεσους υπολογισμούς

διπλό f (διπλό α)

επιστροφή (4,0 / (1,0+ a*a));

// Κύρια λειτουργία του προγράμματος

int main(int argc, char **argv)

// Δήλωση μεταβλητών

int done = 0, n, myid, numprocs, I;

διπλό PI25DT = 3,141592653589793238462643;

διπλό mypi, pi, h, sum, x;

διπλός χρόνος έναρξης = 0,0, χρόνος λήξης;

char processor_name;

// Εκκίνηση του υποσυστήματος MPI

MPI_Init(&argc, &argv);

// Λάβετε το μέγεθος της συσκευής επικοινωνίας MPI_COMM_WORLD

// (συνολικός αριθμός διεργασιών εντός της εργασίας)

MPI_Comm_size(MPI_COMM_WORLD,&nuprocs);

// Λάβετε τον αριθμό της τρέχουσας διαδικασίας εντός

// communicator MPI_COMM_WORLD

MPI_Comm_rank(MPI_COMM_WORLD,&myid);

MPI_Get_processor_name(processor_name,&namelen);

// Εμφάνιση του αριθμού νήματος στο κοινόχρηστο pool

fprintf(stdout, "Η διαδικασία %d του %d βρίσκεται στο %s\n", myid,nuprocs,processor_name);

// αριθμός διαστημάτων

fprintf(stdout, "Εισαγάγετε τον αριθμό των διαστημάτων: (0 τερματισμοί) ");

if(scanf("%d",&n) != 1)

fprintf(stdout, "Δεν έχει εισαχθεί αριθμός, έξοδος\n");

MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);

h = 1,0 / (διπλό)n;

// Υπολογίστε το σημείο που έχει εκχωρηθεί στη διαδικασία

for(I = myid + 1 ; (I<= n) ; I += numprocs)

x = h * ((διπλό)I – 0,5);

// Επαναφέρετε τα αποτελέσματα από όλες τις διεργασίες και προσθέστε

MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);

// Εάν αυτή είναι η κύρια διαδικασία, βγάζετε το αποτέλεσμα

printf("PI είναι περίπου %.16f, Σφάλμα είναι %.16f\n", pi, fabs(pi – PI25DT));

endwtime = MPI_Wtime();

printf("ώρα ρολογιού τοίχου = %f\n", endwtime-startwtime);

// Απελευθερώστε το υποσύστημα MPI

Οι πιο κοινές εφαρμογές MPI σήμερα είναι:

Το MPICH είναι η πιο κοινή δωρεάν υλοποίηση, που εκτελείται σε συστήματα UNIX και Windows NT

Το LAM/MPI είναι μια άλλη δωρεάν εφαρμογή του MPI. Υποστηρίζει ετερογενείς διαμορφώσεις, το LAM (http://www.lam-mpi.org) υποστηρίζει ετερογενείς διαμορφώσεις, το πακέτο Globus και ικανοποιεί το IMPI (Interoperable MPI).

Υποστηρίζονται διάφορα συστήματα επικοινωνίας (συμπεριλαμβανομένου του Myrinet).

WMPI - Εφαρμογή MPI για Windows

MPI/PRO για Windows NT - εμπορική εφαρμογή για Windows NT

Intel MPI - εμπορική υλοποίηση για Windows/Linux

Το Microsoft MPI περιλαμβάνεται στο Compute Cluster Pack SDK. Βασίζεται στο MPICH2, αλλά περιλαμβάνει πρόσθετες δυνατότητες διαχείρισης εργασιών. Υποστηρίζεται η προδιαγραφή MPI-2.

HP-MPI - εμπορική υλοποίηση από την HP

SGI MPT - πληρωμένη βιβλιοθήκη MPI από την SGI

Mvapich - δωρεάν εφαρμογή MPI για το Infiniband

Open MPI - δωρεάν υλοποίηση MPI, διάδοχος του LAM/MPI

Oracle HPC ClusterTools - δωρεάν εφαρμογή για Solaris SPARC/x86 και Linux με βάση το Open MPI

MPJ - MPI για Java

Νήματα POSIX- Πρότυπο POSIX για την υλοποίηση νημάτων εκτέλεσης, ορίζοντας ένα API για τη δημιουργία και τη διαχείρισή τους.

Οι βιβλιοθήκες που εφαρμόζουν αυτό το πρότυπο (και τις λειτουργίες αυτού του προτύπου) ονομάζονται συνήθως Pthreads (οι συναρτήσεις έχουν το πρόθεμα "pthread_"). Αν και οι πιο γνωστές επιλογές είναι για λειτουργικά συστήματα παρόμοια με το Unix, όπως το Linux ή το Solaris, υπάρχει επίσης μια εφαρμογή για τα Microsoft Windows (Pthreads-w32)

Το Pthreads ορίζει ένα σύνολο τύπων και συναρτήσεων στη γλώσσα προγραμματισμού C. Το αρχείο κεφαλίδας είναι pthread.h.

Τύποι δεδομένων:

1. pthread_t – περιγραφέας νήματος.

2. pthread_attr_t – λίστα χαρακτηριστικών νημάτων.

Λειτουργίες ελέγχου νήματος:

1. pthread_create() – δημιουργία νήματος.

2. pthread_exit() – τερματισμός του νήματος (πρέπει να καλείται από τη συνάρτηση νήματος κατά τον τερματισμό).

3. pthread_cancel() – ακυρώστε το νήμα.

4. pthread_join() – αποκλεισμός της εκτέλεσης ενός νήματος μέχρι να τερματιστεί ένα άλλο νήμα που καθορίζεται στην κλήση συνάρτησης.

5. pthread_detach() – απελευθερώστε τους πόρους που καταλαμβάνει το νήμα (εάν το νήμα εκτελείται, οι πόροι θα απελευθερωθούν μετά την ολοκλήρωσή του).

6. pthread_attr_init() – αρχικοποίηση της δομής του χαρακτηριστικού νήματος.

7. pthread_attr_setdetachstate() – υποδεικνύει στο σύστημα ότι μετά τον τερματισμό του νήματος, μπορεί να απελευθερώσει αυτόματα τους πόρους που καταλαμβάνει το νήμα.

8. pthread_attr_destroy() – ελευθερώστε μνήμη από τη δομή του χαρακτηριστικού νήματος (καταστρέψτε τον περιγραφέα).

Λειτουργίες συγχρονισμού νημάτων:

2. pthread_mutex_init(), pthread_mutex_destroy(), pthread_mutex_lock(), pthread_mutex_trylock(), pthread_mutex_unlock();

3. pthread_cond_init(), pthread_cond_signal(), pthread_cond_wait().

Παράδειγμα χρήσης νημάτων στο C:

#περιλαμβάνω

#περιλαμβάνω

#περιλαμβάνω

#περιλαμβάνω

static void wait_thread(void)

time_t start_time = time(NULL);

ενώ (time(NULL) == start_time)

/* μην κάνετε τίποτα εκτός από το να μασάτε φέτες CPU για έως και ένα δευτερόλεπτο. */

static void *thread_func(void *vptr_args)

για (I = 0, I< 20; i++)

fputs(“b\n”, stderr);

pthread_t νήμα;

if (pthread_create(&thread, NULL, thread_func, NULL) != 0)

επιστροφή EXIT_FAILURE.

για (I = 0, I< 20; i++)

if (pthread_join(νήμα, NULL) != 0)

επιστροφή EXIT_FAILURE.

επιστροφή EXIT_SUCCESS.

Το πρόγραμμα που παρουσιάζεται χρησιμοποιεί δύο νήματα που εκτυπώνουν μηνύματα στην κονσόλα, ένα που εκτυπώνει "a", το δεύτερο - "b". Η έξοδος μηνυμάτων αναμιγνύεται ως αποτέλεσμα της εναλλαγής εκτέλεσης μεταξύ νημάτων ή της ταυτόχρονης εκτέλεσης σε συστήματα πολλαπλών επεξεργαστών.

Το πρόγραμμα C δημιουργεί ένα νέο νήμα για να εκτυπώσει το "b" και το κύριο νήμα εκτυπώνει το "a". Το κύριο νήμα (μετά την εκτύπωση "aaaaa….") περιμένει να ολοκληρωθεί το θυγατρικό νήμα.

Ερωτήσεις ελέγχου

  1. Τι είναι το παράλληλο πρόγραμμα;
  2. Ποια είναι η διαφορά μεταξύ μιας διαδικασίας και ενός νήματος εκτέλεσης;
  3. Μπορεί ένα πρόγραμμα να δημιουργήσει 5 νήματα όταν εκτελείται σε επεξεργαστή τετραπλού πυρήνα;
  4. Ποια είναι τα χαρακτηριστικά των παράλληλων προγραμμάτων κοινής μνήμης;
  5. Ποια εργαλεία λογισμικού υπάρχουν για την ανάπτυξη παράλληλων προγραμμάτων;
  6. Γιατί το OpenMP έχει γίνει ευρέως διαδεδομένο κατά τη δημιουργία προγραμμάτων για υπολογιστές και όχι, για παράδειγμα, MPI;
mob_info