Παρουσίαση 5 ης Άσκησης:

Σχετικά έγγραφα
Παρουσίαση 5 ης Άσκησης:

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων. Συγχρονισμός

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων. Συγχρονισμός

Διεργασίες και Νήματα (2/2)

NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4

3 η ΑΣΚΗΣΗ. Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

HY-486 Αρχές Κατανεμημένου Υπολογισμού

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

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

Προγραμματισμός με Κοινόχρηστο Χώρο Διευθύνσεων 4

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

Εργαστήριο 14. Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t)

Παρουσίαση 2 ης Άσκησης:

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Εκφωνήσεις ασκήσεων εργαστηρίου 2 (pthreads)

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΝΗΜΑΤΑ

ΣυγχρονισµόςσεΣυστήµατα ΠολλαπλώνΝηµάτων

Λειτουργικά Συστήματα

Parallel Implementation of John Conway s Game of Life

Παρουσίαση 1 ης Άσκησης:

Λειτουργικά Συστήματα

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Λειτουργικά Συστήματα

Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις

ΝΗΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

Η πολυνηματική γλώσσα προγραμματισμού Cilk

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαδιεργασιακή Επικοινωνία Εργαστηριακές Ασκήσεις

ή α α POSIX Threads ( έ ος 1 ο )

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Περίληψη. Υπερυπολογιστές. Υπολογιστικά προβλήµατα. TOP 500 (Ιούνιος 2007) TOP 500 (Ιούνιος 2009) Ε-85: Ειδικά Θέµατα Λογισµικού

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

Λειτουργικά Συστήματα. Ενότητα # 10: Προγραμματισμός UNIX Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Ε-85: Ειδικά Θέµατα Λογισµικού

Συγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κατηγορίες Νηµάτων. Νήµατα Επιπέδου Πυρήνα. Νήµατα Επιπέδου Χρήστη. «Νήµατα Επιπέδου Χρήστη» Ε-85: Ειδικά Θέµατα Λογισµικού

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΑΡΑΛΛΗΛΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΜΕ OpenMP

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

Κατανεμημένα Συστήματα

Μεθόδων Επίλυσης Προβλημάτων

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

Προγραμματισμός συστημάτων UNIX/POSIX

Προγραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

26/3/2012 Προγραμματισμός συστημάτων κοινόχρηστης μνήμης (Ι) Β. Δημακόπουλος

Εργαστήριο 9: Αρχεία

Διάλεξη 11η: Δείκτες, μέρος 1

Διάλεξη 22η: Επιπλέον στοιχεία της C

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Ε-85: Ειδικά Θέµατα Λογισµικού

Διάλεξη 9η: Πίνακες (arrays)

ΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Προγραμματισμός Η/Υ (ΤΛ2007 )

Διάλεξη 8: Πρόβλημα Αμοιβαίου Αποκλεισμού. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Παραδείγματα με openmp

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Cilk: Φιλοσοφία και Χρήση

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Εισαγωγή στον Προγραμματισμό

Δομημένος Προγραμματισμός

OpenMP. Προγραµµατισµός Αρχιτεκτονικών Μοιραζόµενης Μνήµης. Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων ΕΜΠ. OpenMP p.

Λειτουργικά συστήματα πραγματικού χρόνου

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Παρουςίαςθ 2 θσ Άςκθςθσ:

Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης. Μέρος 2ο: Επίπεδο Ευρετηρίου Β+ Δένδρων

Δομές δεδομένων (2) Αλγόριθμοι

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος

ΠΛΗ111. Ανοιξη Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

Διάλεξη 12η: Δείκτες, μέρος 2

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Υ07 Παράλληλα Συστήματα & 29/3/2016 Προγραμματισμός συστημάτων κοινόχρηστης μνήμης (Ι)

Μεθόδων Επίλυσης Προβλημάτων

Transcript:

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Παρουσίαση 5 ης Άσκησης: Θέματα Συγχρονισμού σε Σύγχρονα Πολυπύρηνα Συστήματα Ακ. Έτος 2016-2017 9 ο Εξάμηνο

Posix Τhreads (Pthreads) Βιβλιοθήκη + σύστημα χρόνου εκτέλεσης (runtime) για την διαχείριση (δημιουργία, εκτέλεση, τερματισμό) νημάτων παρέχονται και δομές/ρουτίνες για τον συγχρονισμό των νημάτων pthread_t: αναγνωριστικό ενός νήματος Κυριότερες ρουτίνες διαχείρισης νημάτων pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg) Δημιουργία ενός νήματος το οποίο θα εκτελέσει την συνάρτηση void *start_routine(void *) με όρισμα το arg pthread_join(pthread_t thread, void **retval) Αναμονή εώς τον τερματισμό του νήματος με το αναγνωριστικό thread. Η τιμή που επιστρέφεται από το νήμα αποθηκεύεται στο *retval. Κάποιες δομές/ρουτίνες συγχρονισμού pthread_mutex_t, pthread_mutex_init( ), pthread_mutex_lock( ), pthread_mutex_unlock( ), pthread_mutex_destroy( ) pthread_spinlock_t, pthread_spin_init( ), pthread_spin_lock( ), pthread_spin_unlock( ), pthread_spin_destroy( ) pthread_barrier_t, pthread_barrier_init( ), pthread_barrier_wait( ), pthread_barrier_destroy( ) 2

Παράδειγμα Pthreads #include <stdio.h> #include <pthread.h> /* Global data. */ pthread_spinlock_t output_spinlock; pthread_barrier_t global_barrier; /* The function executed by each thread. */ void *hello_tid(void *targ) { int myid = *((int *)targ); } /* Wait until all threads are here. */ pthread_barrier_wait(&global_barrier); /* Grab the lock and print thread s message. */ pthread_spin_lock(&output_spinlock); printf( Hello, I am thread %d\n, myid); pthread_spin_unlock(&output_spinlock); Όλα τα νήματα μπαίνουν στο return NULL; «κρίσιμο τμήμα» ταυτόχρονα #define NTHREADS 16 int main() { pthread_t threads[nthreads]; int thread_ids[nthreads]; /* Global data initializations. */ pthread_spin_init(&output_spinlock, PTHREAD_PROCESS_SHARED); pthread_barrier_init(&global_barrier, NULL, NTHREADS); /* Create and spawn all threads. */ for (i=0; i < nthreads; i++) { thread_ids[i] = i; pthread_create(&threads[i], NULL, hello_tid, &thread_ids[i]); } /* Wait all threads to finish. */ for (i=0; i < nthreads; i++) pthread_join(threads[i], NULL); pthread_spin_destroy(&output_spinlock); pthread_barrier_destroy(&global_barrier); Δημιουργία των νημάτων Εκτέλεση της συνάρτησης hello_tid() Αναμονή μέχρι να τερματίσουν τα νήματα } return 0; Μεταγλώττιση με: $ gcc Wall Wextra pthread o threads threads.c 3

Περιβάλλον εκτέλεσης Sandman: 4 x Intel Xeon E5-4620 (Sandy Bridge 8core/16threads) Συνολικά 32 πυρήνες και 64 threads (Hyperthreading) NUMA (Non-Uniform Memory Access) 4

Thread affinity Ένα νήμα μπορεί να τοποθετηθεί σε οποιονδήποτε πυρήνα είναι επιλογή του χρονοδρομολογητή του ΛΣ Μπορούμε να ορίσουμε συγκεκριμένο πυρήνα για κάθε νήμα με χρήση της sched_setaffinity(). για τους σκοπούς της άσκησης παρέχεται η setaffinity_oncpu(unsigned int cpu) στο /home/parallel/pps/2016-2017/a5/common/aff.c Αρίθμηση των πυρήνων του sandman socket0: 0-7, 32-39 socket1: 8-15, 40-47 socket2: 16-23, 48-55 socket3: 24-31, 56-63 5

Ζήτημα 1: Λογαριασμοί Tράπεζας Ένας πίνακας αντιπροσωπεύει τους λογαριασμούς των πελατών μιας τράπεζας Κάθε νήμα εκτελεί ένα σύνολο λειτουργιών σε ξεχωριστό λογαριασμό Υπάρχει ανάγκη συγχρονισμού; Ποια αναμένετε να είναι η συμπεριφορά του προγράμματος καθώς προστίθενται νήματα; Πώς επηρεάζει η τοποθέτηση των νημάτων στους πυρήνες του μηχανήματος την επίδοση της εφαρμογής; Νήμα 1 Νήμα 2 Νήμα 3... Νήμα N accounts 6

Ζήτημα 2: Αμοιβαίος Αποκλεισμός - Κλειδώματα Προστασία κρίσιμου τμήματος με διαφορετικές υλοποιήσεις κλειδωμάτων Κρίσιμο τμήμα: αναζητήσεις τυχαίων κλειδιών σε ταξινομημένη συνδεδεμένη λίστα. read-only CS: μας ενδιαφέρει απλά να εξετάσουμε το overhead που εισάγεται από κάθε υλοποίηση κλειδώματος Δίνονται: tas_lock: test and set clh lock: queue lock Ζητούνται: pthread_lock: χρησιμοποιεί το pthread_spinlock_t των pthreads ttas lock: test-and-test-and-set lock array lock: lock βασισμένο σε πίνακα 7

Ζήτημα 3: Τακτικές συγχρονισμού για δομές δεδομένων Υλοποίηση ταξινομημένης συνδεδεμένης λίστας με χρήση διαφορετικών τεχνικών συγχρονισμού. Καλείστε να υλοποιήσετε: fine-grain locking: hand-over-hand locking optimistic lazy non-blocking Λεπτό ζήτημα: σε δομές όπως οι optimistic, lazy και non-blocking η διαχείριση μνήμης είναι δύσκολη. Για τους σκοπούς της άσκησης δεν χρειάζεται να ελευθερώνετε τους κόμβους της λίστας. Πειράματα για διαφορετικά μεγέθη λίστας για διαφορετικά workloads (αναλογία αναζητήσεων, εισαγωγών, διαγραφών) 8