1 Επισκόπηση. 2 Cilk. 3 Threading Building Blocks 4 UPC. 5 Charm++ 2 1/2015 Συστήματα Παράλληλης Επεξεργασίας

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "1 Επισκόπηση. 2 Cilk. 3 Threading Building Blocks 4 UPC. 5 Charm++ 2 1/2015 Συστήματα Παράλληλης Επεξεργασίας"

Transcript

1

2

3 1 Επισκόπηση 2 Cilk 3 Threading Building Blocks 4 UPC 5 Charm++ 2 1/2015 Συστήματα Παράλληλης Επεξεργασίας

4 1 Επισκόπηση 2 Cilk 3 Threading Building Blocks 4 UPC 5 Charm++ 3 1/2015 Συστήματα Παράλληλης Επεξεργασίας

5 Επισκόπηση Αρχιτεκτονικές και Προγραμματιστικά Μοντέλα από την Οπτική του Προγραμματιστή Προγραμματιστικά Μοντέλα Κοινού Χώρου Διευθύνσεων με Πέρασμα Μηνυμάτων Αρχιτεκτονικές Κοινής μνήμης Κατανεμημένης Μνήμης + Ευκολία Υλοποίησης + Προγραμματιστική Ευκολία + Προγραμματιστική Ευκολία - Δυσκολία Υλοποίησης + Υψηλή Επίδοση - Χαμηλή Επίδοση + Ευκολία Υλοποίησης + Ευκολία Υλοποίησης + Υψηλή Επίδοση + Υψηλή Επίδοση - Προγραμματιστική Δυσκολία - Προγραμματιστική Δυσκολία 4 1/2015 Συστήματα Παράλληλης Επεξεργασίας

6 Επισκόπηση Ο Xάρτης των Eργαλείων και Γλωσσών Παράλληλου Προγραμματισμού Προγραμματιστικά Μοντέλα Κοινού Χώρου Διευθύνσεων με Πέρασμα Μηνυμάτων Αρχιτεκτονικές Κοινής μνήμης Κατανεμημένης Μνήμης POSIX Threads, OpenMP, CoArray Fortran, Threading Building Blocks, Unified Parallel C, Cilk, OmpSs Chapel and other PGAS Ομοίως με πέρασμα MPI, PVM (obsolete), μηνυμάτων σε κατανεμημένη Charm++ μνήμη 5 1/2015 Συστήματα Παράλληλης Επεξεργασίας

7 Σύνοψη Παρουσίασης Προγραμματιστικά εργαλεία για Αρχιτεκτονικές Κοινής Μνήμης Cilk Threading Building Blocks Προγραμματιστικά εργαλεία για Αρχιτεκτονικές Κατανεμημένης Μνήμης Partitioned Global Address Space Languages (PGAS) Unified Parallel C (UPC) Active Messages Charm++ 6 1/2015 Συστήματα Παράλληλης Επεξεργασίας

8 1 Επισκόπηση 2 Cilk 3 Threading Building Blocks 4 UPC 5 Charm++ 7 1/2015 Συστήματα Παράλληλης Επεξεργασίας

9 Cilk Εισαγωγή Επέκταση της C με λίγα keywords Επικεφαλής της ομάδας ο καθ. Charles E. Leiserson (MIT) Ισχυρό θεωρητικό υπόβαθρο φράγματα για χρόνο και χώρο παράληλης εκτέλεσης έμφαση στην αποδοτική χρονοδρομολόγηση Ιστορία 1994: Πρώτη έκδοση (Cilk-1) 1998: Implementation of the Cilk-5 Multithreaded Language paper 2006: Cilk Arts 2008: Cilk : Αγορά Cilk arts από Intel 2010: Release of Intel Cilk Plus 2011: Cilk Plus for GCC : Cilk Plus for GCC ?: Cilk Plus merged into mainline (target GCC4.9) 8 1/2015 Συστήματα Παράλληλης Επεξεργασίας

10 Cilk Keywords cilk: Ορισμός συναρτήσεων που ορίζουν Cilk διεργασίες spawn: Δημιουργία Cilk διεργασίας Ο πατέρας και το παιδί μπορούν να εκτελεστούν παράλληλα sync: Αναμονή ολοκλήρωσης Cilk διεργασιών Τα αποτελέσματα των παιδιών είναι έτοιμα cilk int fib(int n) { if (n < 2) return (n); x = spawn fib(n - 1); y = spawn fib(n - 2); sync; return (x + y); } 9 1/2015 Συστήματα Παράλληλης Επεξεργασίας

11 Cilk Advanced Keywords cilk: Ορισμός συναρτήσεων που ορίζουν Cilk διεργασίες spawn: Δημιουργία Cilk διεργασίας Ο πατέρας και το παιδί μπορούν να εκτελεστούν παράλληλα sync: Αναμονή ολοκλήρωσης Cilk διεργασιών Τα αποτελέσματα των παιδιών είναι έτοιμα inlet: Function ορισμένο εσωτερικά σε μια Cilk διεργασία Επιτρέπει το χειρισμό της τιμής του spawned thread - Εγγυάται atomicity abort: Ασφαλής τερματισμός Cilk διεργασιών μέσα σε inlet SYNCHED: Ο προγραμματιστής μπορεί να ελέγξει αν μια cilk procedure είναι synched ή όχι, ελέγχοντας την τιμή της ψευδομεταβλητής SYNCHED. 10 1/2015 Συστήματα Παράλληλης Επεξεργασίας

12 Cilk Ο γράφος διεργασιών αναδιπλώνεται δυναμικά (στο χρόνο εκτέλεσης) cilk int fib(int n) { if (n < 2) return (n); x = spawn fib(n - 1); y = spawn fib(n - 2); sync; return (x + y); } 11 1/2015 Συστήματα Παράλληλης Επεξεργασίας

13 Cilk Ο γράφος διεργασιών αναδιπλώνεται δυναμικά (στο χρόνο εκτέλεσης) cilk int fib(int n) { if (n < 2) return (n); x = spawn fib(n - 1); y = spawn fib(n - 2); sync; return (x + y); } f(4) 11 1/2015 Συστήματα Παράλληλης Επεξεργασίας

14 Cilk Ο γράφος διεργασιών αναδιπλώνεται δυναμικά (στο χρόνο εκτέλεσης) cilk int fib(int n) { if (n < 2) return (n); x = spawn fib(n - 1); y = spawn fib(n - 2); sync; return (x + y); } f(4) f(3) f(2) 11 1/2015 Συστήματα Παράλληλης Επεξεργασίας

15 Cilk Ο γράφος διεργασιών αναδιπλώνεται δυναμικά (στο χρόνο εκτέλεσης) cilk int fib(int n) { if (n < 2) return (n); x = spawn fib(n - 1); y = spawn fib(n - 2); sync; return (x + y); } f(4) f(3) f(2) f(2) f(1) f(1) f(0) f(1) f(0) 11 1/2015 Συστήματα Παράλληλης Επεξεργασίας

16 Cilk Ο γράφος διεργασιών αναδιπλώνεται δυναμικά (στο χρόνο εκτέλεσης) cilk int fib(int n) { if (n < 2) return (n); x = spawn fib(n - 1); y = spawn fib(n - 2); sync; return (x + y); } f(4) f(3) f(2) f(2) f(1) f(1) f(0) f(1) f(0) 11 1/2015 Συστήματα Παράλληλης Επεξεργασίας

17 Cilk Μοντέλο Επίδοσης T p : χρόνος εκτέλσης σε P επεξ. 12 1/2015 Συστήματα Παράλληλης Επεξεργασίας

18 Cilk Μοντέλο Επίδοσης T p : χρόνος εκτέλσης σε P επεξ. T 1 : work (κόστος εκτέλεσης όλων των κόμβων) 12 1/2015 Συστήματα Παράλληλης Επεξεργασίας

19 Cilk Μοντέλο Επίδοσης T p : χρόνος εκτέλσης σε P επεξ. T 1 : work (κόστος εκτέλεσης όλων των κόμβων) T : span (κόστος εκτέλεσης για επεξ.) 12 1/2015 Συστήματα Παράλληλης Επεξεργασίας

20 Cilk Μοντέλο Επίδοσης T p : χρόνος εκτέλσης σε P επεξ. T 1 : work (κόστος εκτέλεσης όλων των κόμβων) T : span (κόστος εκτέλεσης για επεξ.) Κάτω όρια: T p T 1 /P, T p T Μέγιστο speedup: T 1 /T 12 1/2015 Συστήματα Παράλληλης Επεξεργασίας

21 Cilk Μοντέλο Επίδοσης T p : χρόνος εκτέλσης σε P επεξ. T 1 : work (κόστος εκτέλεσης όλων των κόμβων) T : span (κόστος εκτέλεσης για επεξ.) Κάτω όρια: T p T 1 /P, T p T Μέγιστο speedup: T 1 /T To speedup που πετυχαίνουμε είναι: linear αν T 1 /T P P perfect linear αν T 1 /T P = P superlinear αν T 1 /T P P 12 1/2015 Συστήματα Παράλληλης Επεξεργασίας

22 Cilk Μοντέλο Επίδοσης T p : χρόνος εκτέλσης σε P επεξ. T 1 : work (κόστος εκτέλεσης όλων των κόμβων) T : span (κόστος εκτέλεσης για επεξ.) Κάτω όρια: T p T 1 /P, T p T Μέγιστο speedup: T 1 /T To speedup που πετυχαίνουμε είναι: linear αν T 1 /T P P perfect linear αν T 1 /T P = P superlinear αν T 1 /T P P (ΑΔΥΝΑΤΟ!) 12 1/2015 Συστήματα Παράλληλης Επεξεργασίας

23 Cilk Cilk Time & Space Bounds Ο χρόνοδρομολογητής της Cilk επιτυγχάνει T p = T 1 /P + O(T ) (γραμμικό speedup εάν P T 1 /T ) απαιτεί S p P S 1 χώρο στη στοίβα έχει καλή επίδοση και στην πράξη 13 1/2015 Συστήματα Παράλληλης Επεξεργασίας

24 Cilk Parallel slack (task grain) P T 1 /T parallel slack: (T 1 /T ) /P Παραλληλισμός προγράμματος T 1 /T Παραλληλισμός μηχανήματος P Χρειάζεται τάξης μεγέθους περισσότερος παραλληλισμός στο πρόγραμμα από ότι στο πραγματικό σύστημα. Διαισθητικά: + Πρόγραμμα δεν εξαρτάται από αριθμό επεξεργαστών + Συνεισφέρει στην αποδοτική χρονοδρομολόγηση + Επιτρέπει καλύτερη κατανομή φόρτου (load balancing) αλλά: - Αν το μέγεθος δουλειάς της κάθε εργασίας μικρό, τότε οι επιβαρύνσεις του συστήματος επηρεάζουν σημαντικά 14 1/2015 Συστήματα Παράλληλης Επεξεργασίας

25 Cilk Ισοκατανομή φόρτου (load balancing) - μέγεθος εργασίας (task grain) κόστος uniform εργασίες Σταθερό κόστος εκτέλεσης: 1 εργασία / πραγματικό επεξεργαστή 15 1/2015 Συστήματα Παράλληλης Επεξεργασίας

26 Cilk Ισοκατανομή φόρτου (load balancing) - μέγεθος εργασίας (task grain) κόστος? uniform εργασίες Σταθερό κόστος εκτέλεσης: 1 εργασία / πραγματικό επεξεργαστή Το κόστος εκτέλεσης είναι μη-σταθερό και άγνωστο Μεγάλο parallel slack 15 1/2015 Συστήματα Παράλληλης Επεξεργασίας

27 Cilk Χρονοδρομολόγηση στο χώρο χρήστη (user-level scheduling) Αριθμός εργασιών T P επεξεργαστές (kernel threads) Η κάθε εργασία μπορεί να παράγει άλλες... να περιμένει την ολοκλήρωση των παιδιών της. Στόχοι Ισοκατανομή φόρτου εργασίας Αποδοτική χρήση χώρου Μικρή επιβάρυνση (ανεξάρτητη του T ) Πότε εκτελείται ο ΧΔ; 16 1/2015 Συστήματα Παράλληλης Επεξεργασίας

28 Cilk Χρονοδρομολόγηση στο χώρο χρήστη (user-level scheduling) Αριθμός εργασιών T P επεξεργαστές (kernel threads) Η κάθε εργασία μπορεί να παράγει άλλες... να περιμένει την ολοκλήρωση των παιδιών της. Στόχοι Ισοκατανομή φόρτου εργασίας Αποδοτική χρήση χώρου Μικρή επιβάρυνση (ανεξάρτητη του T ) Πότε εκτελείται ο ΧΔ; Εισάγονται κατάλληλες κλήσεις στις spawn/sync/κλπ 16 1/2015 Συστήματα Παράλληλης Επεξεργασίας

29 Cilk Τακτικές χρονοδρομολόγησης work sharing: Όταν δημιουργούνται νέες εργασίες ο ΧΔ προσπαθεί να τις στείλει σε ανενεργούς επεξεργαστές. work stealing: Οι ανενεργοί επεξεργαστές προσπαθούν να κλέψουν εργασίες. Γενικά προτιμάται η τακτική work stealing (στη Cilk και όχι μόνο) καλύτερο locality μικρότερη επιβάρυνση συγχρονισμού Βέλτιστα θεωρητικά όρια ως προς χρόνο, χώρο [Blumofe and Leiserson 99] 17 1/2015 Συστήματα Παράλληλης Επεξεργασίας

30 Cilk Χρονοδρομολόγηση - work stealing P 2 Μια ουρά ΧΔ ανά P deque (double-ended queue) pushbot popbot poptop top bot T x T y T z T p P /2015 Συστήματα Παράλληλης Επεξεργασίας

31 Cilk Χρονοδρομολόγηση - work stealing P 2 Μια ουρά ΧΔ ανά P deque (double-ended queue) pushbot popbot poptop top bot T x T y T z T p T c T p spawn task T c pushbot(tp ) execute(t c ) (FAST!) P /2015 Συστήματα Παράλληλης Επεξεργασίας

32 Cilk Χρονοδρομολόγηση - work stealing P 2 Μια ουρά ΧΔ ανά P deque (double-ended queue) pushbot popbot poptop top bot T y T z T p T c T p spawn task T c pushbot(tp ) execute(t c ) (FAST!) P 1 P 1 ανενεργός Τυχαία επιλογή επεξεργαστή p p->poptop() Εκτέλεση task που προέκυψε (SLOW!) T x 18 1/2015 Συστήματα Παράλληλης Επεξεργασίας

33 Cilk Υλοποίηση ΧΔ χώρου χρήστη Για να υποστηρίζεται η κλοπή εργασίων πρέπει η κάθε εργασία να μπορεί να μεταφερθεί σε διαφορετικό επεξεργαστή Τι χρείαζεται η κάθε διεργασία για να εκτελεστεί; Κώδικα (πχ δείκτη σε συνάρτηση) Θέση στον κώδικα Δεδομένα: Στοίβα Σωρός Η Cilk υλοποιεί cactus stack 19 1/2015 Συστήματα Παράλληλης Επεξεργασίας

34 Cilk Cilk Plus Επέκταση της C και της C++ σχεδιασμένη για multithreaded parallel computing Ιστορία 2009: Αγορά Cilk arts από Intel 2010: Release of Intel Cilk Plus. Περιλαμβάνει array extensions και είναι integrated με τα Intel tools(compilers, debuggers, etc). 2011: Cilk Plus for GCC4.7 (maintained by Intel) 2013: Cilk Plus for GCC ?: Cilk Plus merged into mainline (target GCC4.9) Execution on Xeon Phi Τρία keywords cilk_spawn cilk_sync cilk_for 20 1/2015 Συστήματα Παράλληλης Επεξεργασίας

35 1 Επισκόπηση 2 Cilk 3 Threading Building Blocks 4 UPC 5 Charm /2015 Συστήματα Παράλληλης Επεξεργασίας

36 Threading Building Blocks Εισαγωγή C++ template library για αποδοτικό και εύκολο παράλληλο προγραμματισμό σε πλατφόρμες μοιραζόμενης μνήμης Αναπτύσσεται από την Intel από το 2004 (open-source από το 2007) Δεν είναι καινούργια γλώσσα ή επέκταση Μεταφέρσιμη στους περισσότερους C++ compilers, λειτουργικά συστήματα και αρχιτεκτονικές Παρέχει ένα πλούσιο σύστημα από παραμετροποιήσιμα (templated) ready to use αλγοριθμικά μοτίβα και δομές (αντίστοιχα με τη C++ STL) Εκμεταλλεύεται τα lambda expressions της C++11 από το 2008 (gcc>=4.5) 22 1/2015 Συστήματα Παράλληλης Επεξεργασίας

37 Threading Building Blocks Βασικά Χαρακτηριστικά Ο προγραμματιστής ορίζει tasks αντί για threads Επικεντρώνεται στην έκφραση του παραλληλισμού Η βιβλιοθήκη υλοποιεί τον παραλληλισμό: - διάσπαση συνολικής δουλειάς σε επιμέρους εργασίες - δρομολόγηση εργασιών - συγχρονισμός - ισοκατανομή φορτίου - διαχείριση πόρων συστήματος και εσωτερικών μηχανισμών Είναι σχεδιασμένη για κλιμακωσιμότητα Η συνολική δουλειά σπάει σε πολλά μικρά κομμάτια (tasks), συνήθως πολύ περισσότερα από τον αριθμό των επεξεργαστών ( parallel slack ) Εξασφαλίζεται ότι πάντα θα υπάρχει διαθέσιμη δουλειά για κάθε επιπλέον επεξεργαστή που προστίθεται Ο μηχανισμός load balancing εξασφαλίζει την κλιμακώσιμη απόδοση Εκμεταλλεύεται τη δύναμη και την ευελιξία του γενικευμένου προγραμματισμού 23 1/2015 Συστήματα Παράλληλης Επεξεργασίας

38 Threading Building Blocks TBB 4.0 Components Generic Parallel Algorithms parallel_for parallel_reduce parallel_scan parallel_do pipeline, parallel_pipeline parallel_sort parallel_invoke Concurrent Containers concurrent_unordered_map concurrent_unordered_set concurrent_unordered_hash_map concurrent_queue concurrent_bounded_queue concurrent_priority_queue concurrent_vector Synchronization Primitives atomic mutex, recursive_mutex spin_mutex, spin_rw_mutex queueing_mutex, queueing_rw_mutex Raw Tasking task task_group task_list task_scheduler_observer Flow Graph graph function_node broadcast_node... Memory Allocation tbb_allocator, cache_aligned_allocator, scalable_allocator 24 1/2015 Συστήματα Παράλληλης Επεξεργασίας

39 Threading Building Blocks Tasks Εκφράζουν μια στοιχειώδη ανεξάρτητη εργασία στο πρόγραμμα του χρήστη πολύ πιο lightweight από τα native threads του λειτουργικού (user-level, small-sized, non-preemptible, short-lived) parallel algorithms tasks scheduler Δυνατότητα άμεσης χρήσης των tasks από τον προγραμματιστή δημιουργία αυθαίρετα πολύπλοκων γράφων διεργασιών 25 1/2015 Συστήματα Παράλληλης Επεξεργασίας

40 Threading Building Blocks Task Objects (Templates) long SerialFib(long n) { if (n<2) return n; else return SerialFib(n-1) +SerialFib(n-2); } long n, sum; FibTask& r = *new ( allocate_root()) FibTask(n,&sum); spawn_root_and_wait(r); cout << sum; class FibTask: public task { const long n; long *const_sum; FibTask(long n_, long* sum_) { n=n_; sum=sum_; } task* execute() { if (n < cutoff) *sum = SerialFib(n); else { long x,y; FibTask& a = *new (allocate_child()) FibTask(n-1,&x); FibTask& b = *new (allocate_child()) FibTask(n-2,&y); set_ref_count(3); spawn(b); spawn(a); wait_for_all(); * sum = x+y; } return NULL; } } 26 1/2015 Συστήματα Παράλληλης Επεξεργασίας

41 Threading Building Blocks Tasks (Lambdas) long SerialFib(long n) { if (n<16) return n; else { int x,y; tbb::task_group g; g.run ( [&] { x = ParallelFib(n-1); } ); g.run ( [&] { y = ParallelFib(n-2); } ); g.wait(); return x+y; } } 27 1/2015 Συστήματα Παράλληλης Επεξεργασίας

42 Threading Building Blocks Task groups S A B C D E F 28 1/2015 Συστήματα Παράλληλης Επεξεργασίας

43 Threading Building Blocks Nested Task Groups S A B C D E F S(); task_group g; g.run ( [&] { C(); E(); }); g.run ( [&] { task_group g1; g1.run ( [&] { A(); } ); g1.run ( [&] { B(); } ); g1.wait(); D(); }); g.wait(); F(); 29 1/2015 Συστήματα Παράλληλης Επεξεργασίας

44 Threading Building Blocks Generic Task Graphs - Flow graph graph g; broadcast_node <continue_msg> s; S A B C D E F continue_node <continue_msg> a(g,a()); continue_node <continue_msg> a(g,b()); continue_node <continue_msg> a(g,c()); continue_node <continue_msg> a(g,d()); continue_node <continue_msg> a(g,e()); continue_node <continue_msg> a(g,f()); make_edge(s,a); make_edge(s,b); make_edge(s,c); make_edge(a,d); make_edge(b,d); make_edge(c,e); make_edge(d,f); make_edge(e,f); S(); s.try_put(continue_msg()); g.wait_for_all(); //fire! 30 1/2015 Συστήματα Παράλληλης Επεξεργασίας

45 Threading Building Blocks Task Objects + Reference counts MeshTask* Mesh[4][4]; //for all tasks in mesh: //allocate //initialize south, east pointers //set reference counters Mesh[3][3]-> spawn_and_wait_for_all(*mesh[0][0]); //execute last task Mesh[3][3]->execute(); class MeshTask: public task { public: const int i,j; //coordinates MeshTask * south, east; task* execute() { double north_val = (i==0)? 0 : A[i-1][j]; double west_val = (i==0)? 0 : A[i][j-1]; A[i][j]=do_work(north_val,west_val); if (south!=null) if (!south->decrement_ref_count()) spawn(*south); if (west!=null) if (!west->decrement_ref_count()) spawn(*east); return NULL; } } 31 1/2015 Συστήματα Παράλληλης Επεξεργασίας

46 Threading Building Blocks Load balancing Το runtime των ΤBBs υλοποιεί δύο μηχανισμούς για load-balancing: 1. Work stealing: Εξασφαλίζει ισοκατανομή φορτίου 2. Recursive splitting: Επιτρέπει την επεξεργασία πάνω σε αυθαίρετα μικρά κομμάτια και τη βέλτιστη εκμετάλλευση της cache 32 1/2015 Συστήματα Παράλληλης Επεξεργασίας

47 Threading Building Blocks parallel_for και partitioners parallel_for (blocked_range<size_t>(0,n,g), []()..., some partitioner()) Grainsize G: το κομμάτι δουλειάς που θα αναλάβει κάθε task Δύο optional ορίσματα σε loop partitioners: Chunking: το μέγεθος στον οποίο σταματά η αναδρομική διάσπαση Τύπος partitioner Partitioners: simple_partitioner recursive binary splitting affinity_partitioner ανάθεση με τρόπο ώστε να μεγιστοποιείται το cache locality auto_partitioner αυτόματη επιλογή grainsize με ευριστική μέθοδο ελαχιστοποίση του range splitting, σε σημείο που να εξασφαλίζεται καλό load balancing 33 1/2015 Συστήματα Παράλληλης Επεξεργασίας

48 Threading Building Blocks Work Stealing και Recursive Splitting 0 N A Με parallel_for στον πίνακα Α το range του πίνακα διασπάται αναδρομικά μέχρι να γίνει Grainsize Σε κάθε εκτέλεση της αναδρομής το range διασπάται σε δύο subranges και δημιουργούνται 2 tasks Τα worker threads διατηρούν double-ended queues με τα tasks Κάθε worker παίρνει το task από τη βάση της ουράς και το εκτελεί Αν δεν το βρει, τότε κλέβει κάποιο από την κορυφή της ουράς ενός τυχαίου worker A P0 P1 P2 P3 34 1/2015 Συστήματα Παράλληλης Επεξεργασίας

49 Threading Building Blocks Work Stealing και Recursive Splitting 0 N A A P0 P1 P2 P3 35 1/2015 Συστήματα Παράλληλης Επεξεργασίας

50 Threading Building Blocks Work Stealing και Recursive Splitting 0 N A P0 P1 P2 P3 35 1/2015 Συστήματα Παράλληλης Επεξεργασίας

51 Threading Building Blocks Work Stealing και Recursive Splitting 0 N A N/2 N B B P0 P1 P2 P3 35 1/2015 Συστήματα Παράλληλης Επεξεργασίας

52 Threading Building Blocks Work Stealing και Recursive Splitting 0 N A 0 N/2 C N/2 N B B C P0 P1 P2 P3 35 1/2015 Συστήματα Παράλληλης Επεξεργασίας

53 Threading Building Blocks Work Stealing και Recursive Splitting 0 N A 0 N/2 C B B P0 P1 P2 P3 35 1/2015 Συστήματα Παράλληλης Επεξεργασίας

54 Threading Building Blocks Work Stealing και Recursive Splitting 0 N A 0 N/2 C B B D D P0 P1 P2 P3 35 1/2015 Συστήματα Παράλληλης Επεξεργασίας

55 Threading Building Blocks Work Stealing και Recursive Splitting 0 N A 0 N/2 C B B D E 0 N/4 E D P0 P1 P2 P3 35 1/2015 Συστήματα Παράλληλης Επεξεργασίας

56 Threading Building Blocks Work Stealing και Recursive Splitting 0 N A 0 N/2 C B B D E 0 N/4 E D P0 P1 P2 P3 35 1/2015 Συστήματα Παράλληλης Επεξεργασίας

57 Threading Building Blocks Work Stealing και Recursive Splitting 0 N A 0 N/2 C B D E B 0 N/4 E D P0 P1 P2 P3 35 1/2015 Συστήματα Παράλληλης Επεξεργασίας

58 Threading Building Blocks Work Stealing και Recursive Splitting 0 N A 0 N/2 C B D B 0 N/4 E D P0 P1 P2 P3 35 1/2015 Συστήματα Παράλληλης Επεξεργασίας

59 Threading Building Blocks Work Stealing και Recursive Splitting 0 N A 0 N/2 C B D 0 N/4 E D F B F P0 P1 P2 P3 35 1/2015 Συστήματα Παράλληλης Επεξεργασίας

60 Threading Building Blocks Work Stealing και Recursive Splitting 0 N A 0 N/2 C 0 N/4 E D B D F G B N/8 G F P0 P1 P2 P3 35 1/2015 Συστήματα Παράλληλης Επεξεργασίας

61 Threading Building Blocks Work Stealing και Recursive Splitting 0 N A 0 N/2 C 0 N/4 E D B D F G B N/8 G F P0 P1 P2 P3 35 1/2015 Συστήματα Παράλληλης Επεξεργασίας

62 Threading Building Blocks Work Stealing και Recursive Splitting 0 N A 0 N/2 C 0 N/4 E D B F G B D N/8 G F P0 P1 P2 P3 35 1/2015 Συστήματα Παράλληλης Επεξεργασίας

63 1 Επισκόπηση 2 Cilk 3 Threading Building Blocks 4 UPC 5 Charm /2015 Συστήματα Παράλληλης Επεξεργασίας

64 UPC Εισαγωγή Unified Parallel C (UPC): Παράλληλη επέκταση της ANSI C Γλώσσα προγραμματισμού κατανεμημένης κοινής μνήμης Έχει τη φιλοσοφία της C Προγραμματισμός κοντά στο hardware για performance, αλλά με τα προβλήματα της C Όμοια σύνταξη και semantics Ιστορία Ξεκίνησε το 1999 από το IDA, το UCB και το LLNL UPC consortium: ARSC, Compaq, CSC, Cray Inc., Etnus, GMU, HP, IDA CCS, Intrepid Technologies, LBNL, LLNL, MTU, NSA, SGI, Sun Microsystems, UCB, U. Florida, US DOD PI η Kathy Yelick από το UCB Σήμερα: Berkeley UPC, GNU UPC, IBM XL UPC Compilers, Cray UPC, HP UPC κ.ά. 37 1/2015 Συστήματα Παράλληλης Επεξεργασίας

65 UPC PGAS Languages Global Address Space: ένα thread μπορεί απευθείας να διαβάσει/γράψει απομακρυσμένα δεδομένα Κρύβει τη διάκριση μεταξύ κοινής/κατανεμημένης μνήμης Partitioned Global Address Space (PGAS): τα δεδομένα επισημαίνονται ως local ή global Δεν κρύβει τη διάκριση: κρίσιμο για locality και scaling Χαρακτηριστικά των PGAS γλωσσών: Global address space όπως στα threads (programmability) SPMD παραλληλισμός όπως στο MPI (performance) Διάκριση local/global data (performance) 38 1/2015 Συστήματα Παράλληλης Επεξεργασίας

66 UPC Μοντέλο εκτέλεσης Μοντέλο εκτέλεσης: Threads δουλεύουν ανεξάρτητα σε SPMD μοντέλο Το πλήθος των threads καθορίζεται στο χρόνο μεταγλώττισης ή στο χρόνο εκτέλεσης μεταβλητή προγράμματος για πλήθος threads: THREADS μεταβλητή προγράμματος για thread id: MYTHREAD upc_barrier: Συγχρονισμός για όλα τα threads (all wait) Δύο επιλογές μεταγλώττισης: Στατικά threads H μεταβλητή THREADS καθορίζεται από το χρήστη στο χρόνο μεταγλώττισης Το πρόγραμμα μπορεί να χρησιμοποιήσει τη μεταβλητή THREADS ως σταθερά Δυναμικά threads O μεταγλωττισμένος κώδικας μπορεί να τρέξει με οποιοδήποτε αριθμό από threads 39 1/2015 Συστήματα Παράλληλης Επεξεργασίας

67 UPC Shared vs Private variables Private variables:δεσμεύονται στον private χώρο μνήμης του thread, όπως στη C Shared variables: δεσμεύονται μία φορα, με το thread 0 shared int ours; /*use shared variables sparingly*/ int mine; Οι shared μεταβλητές δεν μπορούν να έχουν dynamic lifetime: σε συναρτήσεις μπορούν να χρησιμοποιηθούν μόνο αν δηλωθούν ως static Thread0 Thread1 ThreadN Global Address Space ours:... mine: mine:... mine: Shared Private 40 1/2015 Συστήματα Παράλληλης Επεξεργασίας

68 UPC Pointers in UPC Στη UPC υπάρχουν 4 τύποι pointers, ανάλογα με το πού βρίσκονται και το πού δείχνουν. Πού βρίσκεται ο pointer Πού δείχνει ο pointer Local Shared Private p1 p2 Shared p3 p4 int * p1; /*private pointer to local memory*/ shared int * p2; /*private pointer to shared space*/ int * shared p3; /*shared pointer to local memory*/ shared int * shared p4; /*shared pointer to shared space*/ int * p1: γρήγορος, χρησιμοποιείται για πρόσβαση σε τοπικά δεδομένα σε κώδικα που εκτελεί τοπική δουλειά shared int * p2: χρησιμοποιείται για πρόσβαση σε απομακρυσμένα δεδομένα, αργός γιατί μπορεί να περιλαμβάνει communication int * shared p3: δεν προτείνεται shared int * shared p4: χρησιμοποιείται για μοιραζόμενες δομές δεδομένων 41 1/2015 Συστήματα Παράλληλης Επεξεργασίας

69 UPC Shared arrays Οι scalar μεταβλητές που είναι shared αποθηκεύονται στο χώρο μνήμης του thread 0 Οι πίνακες που είναι shared κατανέμονται μεταξύ των threads (default: κυκλική ανάθεση) shared int x[threads]; /*1 element per thread*/ shared int y[3][threads]; /*3 elements per thread*/ shared int z[3][3]; /*2-3 elements per thread*/ Για διαφορετική ανάθεση, χρησιμοποιούνται οι layout specifiers: shared int x[n]: κυκλική ανάθεση shared int [*] x[n]: ανάθεση κατά blocks shared int [0] x[n]: όλος ο πίνακας στο thread 0 shared int [b1][b2]...[bn] x[n]: συγκεκριμένο block size (b1,b2,...,bn) για κάθε thread 42 1/2015 Συστήματα Παράλληλης Επεξεργασίας

70 UPC Κατανομή εργασίας - upc_forall upc_forall(init; test; loop; affinity) statement; Επανάληψη πάνω σε όλα τα στοιχεία - Δουλειά στα στοιχεία που ανήκουν στον επεξεργαστή Ο προγραμματιστής ορίζει ότι οι επαναλήψεις είναι ανεξάρτητες Απροσδιόριστο αν υπάρχουν εξαρτήσεις μεταξύ των threads Παράδειγμα: Πρόσθεση Διανυσμάτων #define N 100*THREADS shared int v1[n], v2[n], sum[n]; /*default:cyclic distribution*/ void main() { int i; upc_forall( i=0; i<n; i++; i) sum[i]=v1[i]+v2[i]; } 43 1/2015 Συστήματα Παράλληλης Επεξεργασίας

71 UPC Collective communication Όπως και το MPI, και η UPC υποστηρίζει collective communication. Collectives για υπολογισμούς TYPE bupc_allv_reduce(type, TYPE value, int rootthread, upc_op_t reductionop) TYPE bupc_allv_reduce_all(type, TYPE value, upc_op_t reductionop) Collectives για μεταφορά δεδομένων TYPE bupc_allv_broadcast(type, TYPE value, int rootthread) TYPE bupc_allv_scatter(type, int rootthread, TYPE *rootsrcarray) TYPE bupc_allv_gather(type, TYPE value, int rootthread, TYPE *rootdestarray) TYPE bupc_allv_gather_all(type, TYPE value, TYPE *destarray) Άλλες εκδόσεις της UPC υποστηρίζουν αυτά και πολλά άλλα collectives (με διαφορετική σύνταξη). 44 1/2015 Συστήματα Παράλληλης Επεξεργασίας

72 UPC Άλλα χαρακτηριστικά Dynamic Memory Allocation shared void * upc_global_alloc(size_t nblocks, size_t nbytes) Καλείται από ένα thread - Ένα thread δεσμεύει shared μνήμη shared void * upc_all_alloc(size_t nblocks, size_t nbytes) Καλείται από όλα τα threads - Επιστρέφει τον ίδιο shared pointer void upc_free(shared void *ptr) Global synchronization upc_barrier Blocking barrier upc_notify, upc_wait Non-blocking barrier Locks upc_lock_t *upc_all_lock_alloc(void), *upc_global_lock_alloc(void) void upc_lock(upc_lock_t *l), void upc_unlock(upc_lock_t *l) void upc_lock_free(upc_lock_t *ptr) 45 1/2015 Συστήματα Παράλληλης Επεξεργασίας

73 UPC Παράδειγμα: Jacobi-1D - simple & dummy εκδοχή shared[*] double u_old[n], u[n]; /*block layout*/ void jacobi_sweeps(int T) { int i, t; upc_barrier; for (t=0; t<t; ++t) { upc_forall(i=1; i<n-1; ++i; &(u[i])) u[i]=(u_old[i-1]+u_old[i+1])/2; upc_barrier; upc_forall(i=0; i<n; ++i; &(u[i])) u_old[i]=u[i]; upc_barrier; } } 46 1/2015 Συστήματα Παράλληλης Επεξεργασίας

74 UPC Implementation UPC code 47 1/2015 Συστήματα Παράλληλης Επεξεργασίας

75 UPC Implementation UPC code UPC-to-C translator 47 1/2015 Συστήματα Παράλληλης Επεξεργασίας

76 UPC Implementation UPC code UPC-to-C translator Translator Generated C code 47 1/2015 Συστήματα Παράλληλης Επεξεργασίας

77 UPC Implementation UPC code UPC-to-C translator Translator Generated C code UPC Runtime System 47 1/2015 Συστήματα Παράλληλης Επεξεργασίας

78 UPC Implementation UPC code UPC-to-C translator Translator Generated C code UPC Runtime System GASNet Communication System 47 1/2015 Συστήματα Παράλληλης Επεξεργασίας

79 UPC Implementation UPC code UPC-to-C translator Translator Generated C code UPC Runtime System GASNet Communication System Network Hardware 47 1/2015 Συστήματα Παράλληλης Επεξεργασίας

80 UPC Implementation UPC code UPC-to-C translator network-independent Translator Generated C code UPC Runtime System GASNet Communication System Network Hardware language-independent 47 1/2015 Συστήματα Παράλληλης Επεξεργασίας

81 UPC Implementation UPC code UPC-to-C translator platform-independent network-independent Translator Generated C code UPC Runtime System GASNet Communication System Network Hardware compiler-independent language-independent 47 1/2015 Συστήματα Παράλληλης Επεξεργασίας

82 UPC UPC-to-C translator Μεταγλώττιση σε 2 φάσεις Φάση 1: Μετάφραση της UPC σε C, όπου τα features της UPC μεταφράζονται σε κλήσεις στο runtime Φάση 2: Μεταγλώττιση του κώδικα με τον C compiler του συστήματος και σύνδεση με το runtime system 48 1/2015 Συστήματα Παράλληλης Επεξεργασίας

83 UPC Runtime system Το runtime system της UPC περιλαμβάνει λειτουργίες όπως: Δημιουργία και διαχείριση των threads Διαχείριση μνήμης Προσβάσεις στη μνήμη (τοπική ή απομακρυσμένη) Συγχρονισμό Polling στο δίκτυο 49 1/2015 Συστήματα Παράλληλης Επεξεργασίας

84 UPC One-sided Communication Η UPC χρησιμοποιεί one-sided επικοινωνία: Message = address + data Two-sided: Message = message id + data Δύο βασικά blocking memory-to-memory operations: 1. put (upc_memput): ανανέωση των shared δεδομένων με δεδομένα από τον ιδιωτικό χώρο μνήμης του thread 2. get (upc_memget): αντιγραφή shared δεδομένων στον ιδιωτικό χώρο μνήμης ενός thread Πλεονέκτημα: αν το network interface υποστηρίζει RDMA, το get/put δεν κάνει interrupt στη CPU, ούτε απαιτεί buffering Το MPI επίσης υποστηρίζει one-sided επικοινωνία /2015 Συστήματα Παράλληλης Επεξεργασίας

85 UPC Translator+Runtime: Βελτιστοποιήσεις στον παραγόμενο κώδικα Στη UPC, ο προγραμματιστής δεν ορίζει explicitly την ανταλλαγή δεδομένων Το runtime αναλαμβάνει να πραγματοποιήσει την ανταλλαγή δεδομένων με one-sided communication Ο UPC-to-C translator ενορχηστρώνει τον κώδικα με τις κατάλληλες κλήσεις στο runtime Βασικά optimizations στο translation/compilation: 1. Redundancy elimination: Περιττά accesses στη UPC ενδεχομένως σημαίνουν επικοινωνία πάνω από το δίκτυο 2. Split-phase communication: Διαχωρισμός του communication init και του communication sync για computation/communication overlapping και message pipelining 3. Message coalescing: Πολλά put/get με μικρό μεγέθος μηνύματος συνενώνονται σε μεγάλα μηνύματα 51 1/2015 Συστήματα Παράλληλης Επεξεργασίας

86 UPC GASNet Το GASNet είναι σύστημα επικοινωνίας σχεδιασμένο για PGAS γλώσσες Υποστηρίζει πολλά δίκτυα διασύνδεσης υψηλής επίδοσης (Infiniband, SGI Altix, Cray, Quadrics, Ethernet-UDP) To GASNet core API παρέχει βασικά network primitives Η υλοποίηση βασίζεται σε active messages Active messages: κάθε μήνυμα έχει στο header του τη διεύθυνση ενός user-space handler, που εκτελείται με την άφιξη του μηνύματος, με στόχο να απελευθερωθεί γρήγορα το δίκτυο και να μην μπλοκάρει η CPU Το GASNet extended API παρέχει λειτουργίες put/get, collectives, split-phase barriers κ.α. 52 1/2015 Συστήματα Παράλληλης Επεξεργασίας

87 1 Επισκόπηση 2 Cilk 3 Threading Building Blocks 4 UPC 5 Charm /2015 Συστήματα Παράλληλης Επεξεργασίας

88 Charm++ Εισαγωγή Βιβλιοθήκη ανεξάρτητη της πλατφόρμας Αντικειμενοστρεφής προγραμματισμός object-based, message-driven, over-decomposed, runtime-assisted Χρήση με C++, C, Fortran Παράλληλα αντικείμενα (chares) επικοινωνούν με ασύγχρονες κλήσεις μεθόδων (entry methods) Ένα ισχυρό runtime system τοποθετεί τα chares στους επεξεργααστές και χρονοδρομολογεί την εκτέλεση των entry methods (όπως τα active messages ή οι actors) Αναπτύσσεται από το Parallel Programming Laboratory του UIUC με επικεφαλής τον Laxmikant Kale Ιστορία Chare Kernel (1.0) στα τέλη της δεκαετίας του 80 Charm 4.0 (Charm++) το 1993 Στην Charm 4.5 διαχωρίζεται το runtime system από την υλοποίηση της γλώσσας Newest Stable Release: Charm (2013) 54 1/2015 Συστήματα Παράλληλης Επεξεργασίας

89 Charm++ User view vs System view User View System View 55 1/2015 Συστήματα Παράλληλης Επεξεργασίας

90 Charm++ Chares mainchare Chare: Ένα αντικείμενο της C++ με μεθόδους που μπορούν να κληθούν απομακρυσμένα Mainchare: To chare από το οποίο ξεκινά η εκτέλεση Chare array: Μια συλλογή από chares ίδιου τύπου Τυπικά, το mainchare θα δημιουργήσει (spawn) ένα chare array από workers chare array (1D,2D,3D,...) 0... N 56 1/2015 Συστήματα Παράλληλης Επεξεργασίας

91 Charm++ (Over)decomposition Ένα chare στην Charm++ είναι η μονάδα εργασίας/δεδομένων Η φιλοσοφία της Charm++ είναι η διαίρεση της εργασίας σε πολλές μονάδες (chares»cores) Overdecomposition! Ο χρήστης πρέπει να επιλέγει το μέγεθος της δουλειάς/των δεδομένων της μονάδας ανεξάρτητα από το πλήθος των επεξεργαστών, αλλά σε σχέση με το πρόβλημά του Σε σχέση με το MPI: Αποφεύγονται οι κύκλοι compute/communicate Το δίκτυο χρησιμοποιείται συνεχώς Επιτυγχάνεται overlapping των computation/communication 57 1/2015 Συστήματα Παράλληλης Επεξεργασίας

92 Charm++ File Structure Τα αντικείμενα της C++ (chares ή όχι) βρίσκονται σε κανονικά αρχεία.h και.cpp Τα chares, τα μηνύματα και οι entry methods ορίζονται σε ένα αρχείο.ci (Charm++ interface) και υλοποιούνται σε.cpp αρχείο Chare class files:.h,.cpp,.ci Class files:.h,.cpp 58 1/2015 Συστήματα Παράλληλης Επεξεργασίας

93 Charm++ Επικοινωνία Τα chares βρίσκονται σε πολλούς επεξεργαστές (όχι απαραίτητα με κοινή μνήμη) Είναι αδύνατη η απευθείας κλήση μεθόδων Proxies: lightweight handles σε πιθανόν απομακρυσμένα chares τοπικά στο Chare A Proxy for Chare B τοπικά ή απομακρυσμένα Chare B Chare A Proxy for Chare C Chare C 59 1/2015 Συστήματα Παράλληλης Επεξεργασίας

94 Charm++ Proxy Μια κλάση proxy παράγεται για κάθε chare Τα proxies γνωρίζουν πού θα βρουν ένα chare στο σύστημα Οι μέθοδοι που καλούνται στο proxy πακετάρουν τις παραμέτρους εισόδου και τις στέλνουν στον επεξεργαστή όπου βρίσκεται το chare. Η πραγματική μέθοδος καλείται στον επεξεργαστή-προορισμό. 60 1/2015 Συστήματα Παράλληλης Επεξεργασίας

95 Charm++ readonly variables Η Charm++ δεν επιτρέπει global variables Για διαμοιρασμό δεδομένων μεταξύ όλων των αντικειμένων, επιτρέπει τον ορισμό readonly μεταβλητών, που αρχικοποιούνται στη main του mainchare Το runtime αναλαμβάνει να κάνει broadcast την τιμή της readonly μεταβλητής σε όλα τα chares Ο χρήστης πρέπει να φροντίσει να μη γίνει ανάθεση τιμής σε readonly μεταβλητή 61 1/2015 Συστήματα Παράλληλης Επεξεργασίας

96 Charm++ Chare Arrays Τα chare arrays οργανώνουν τα chares σε indexed collections Ένα όνομα για κάθε collection Κάθε chare του πίνακα έχει ένα proxy για όλα τα άλλα chares του πίνακα Οι δείκτες του πίνακα μπορεί να είναι integers, tuples (π.χ. 2D array) κ.ά. Η εισαγωγή και διαγραφή στοιχείων γίνεται on the fly Η τοποθέτηση των chares του array στους επεξεργαστές γίνεται από το runtime, Ο χρήστης μπορεί να επιλέξει τρόπο τοποθέτησης: round-robin, block-cyclic κ.ά. 62 1/2015 Συστήματα Παράλληλης Επεξεργασίας

97 Broadcast Broadcast: κλήση της ίδιας entry method από όλα τα αντικείμενα σε ένα chare array arr[3].method() //point-to-point message to element 3 arr.method() //broadcast to every element 63 1/2015 Συστήματα Παράλληλης Επεξεργασίας

98 Reduction Κάθε chare θα στείλει τα δεδομένα του σε κάποιον και τα δεδομένα θα συνδυαστούν με κάποια πράξη Naive τρόπος: ένας master μετράει πόσα μηνύματα πρέπει να παραληφθούν Πρόβλημα: bottleneck στον master Το runtime system χτίζει ένα δέντρο για το reduction Ο χρήστης καθορίζει την πράξη του reduction Στη ρίζα του δέντρου, γίνεται trigger ένα callback callback Chare7 Chare5 Chare6 Chare1 Chare2 Chare3 Chare4 64 1/2015 Συστήματα Παράλληλης Επεξεργασίας

99 Charm++ Structured Dagger Τα chares είναι reactive στις κλήσεις μεθόδων Αν κληθεί η μία μέθοδος, θα κάνει τη μία δράση, αν κληθεί η άλλη μέθοδος θα κάνει την άλλη δράση κλπ. Τα chares έχουν έναν κύκλο ζωής: οι υπολογισμοί εξαρτώνται από κλήσεις απομακρυσμένων μεθόδων και από την ολοκλήρωση άλλων τοπικών υπολογισμών Ο κύκλος ζωής των chares είναι ένας κατευθυνόμενος ακυκλικός γράφος - DAG Η Charm++ προσφέρει στον προγραμματιστή ένα notation για να καθορίσει τον DAG, το Structured Dagger (script-like) Βασικά constructs του Structured Dagger: when: δήλωση των δράσεων όταν ληφθεί μια κλήση μεθόδου (κάτι σαν blocking receive) serial: δήλωση δράσεων που πρέπει να γίνουν χωρίς interruption/preemption if-then-else, for, forall, while: όπως στη C overlap: δήλωση ανεξάρτητων clauses που μπορούν να εκτελεστούν με οποιαδήποτε σειρά (ή και ταυτόχρονα) 65 1/2015 Συστήματα Παράλληλης Επεξεργασίας

100 Charm++ Παράδειγμα: Jacobi-1D -.ci file mainmodule1 jacobi1d { readonly CProxy Main mainproxy; readonly int blockdimx; readonly int numchares; } mainchare Main { entry Main(CkArgsMsg *m); } array [1D] Jacobi { entry Jacobi(void); entry void recvghosts(int iter, int dir, int size, double gh[si entry [reductiontarget] void isconverged(bool result); entry void run() {...see next slide; } } 66 1/2015 Συστήματα Παράλληλης Επεξεργασίας

101 Charm++ Παράδειγμα: Jacobi-1D -.ci file - συνέχεια while (!converged) { serial "send_to_neighbors" { iter++; top=(thisindex+1)%numchares; bottom=...; thisproxy(top).recvghosts(iter, BOTTOM, arraydimy,&value[1][1]); thisproxy(bottom).recvghosts(iter, TOP, arraydimy,&value[blockdimx][1]); } for (imsg=0; imsg<neighbors;imsg++) when recvghosts[iter] (int iter, int dir, int size, double gh[size]) serial "update_boundary" { int row=(dir==top)?0:blockdimx+1; for (int j=0;j<size;j++) value[row][j+1]=gh[j]; } } serial "do_work" { conv=check_and_compute(); CkCallback cb=ckcallback(ckreductiontarget(jacobi, isconverged), thisproxy); Contribute(sizeof(bool), &conv, CkReduction::logical_and, cb); } when isconverged(bool result) serial "check_converge" { converged=result; if (result && thisindex==0) CkExit(); } 67 1/2015 Συστήματα Παράλληλης Επεξεργασίας

102 Charm++ Ecosystem 68 1/2015 Συστήματα Παράλληλης Επεξεργασίας

103 Charm++ Runtime System Κάθε επεξεργαστικό στοιχείο εκτελεί το δικό του instance του Charm++ Runtime System Τα instances του RTS είναι υπεύθυνα για το τοπικό τους επεξεργαστικό στοιχείο Επικοινωνούν μεταξύ τους κάθε φορά που χρειάζεται 69 1/2015 Συστήματα Παράλληλης Επεξεργασίας

104 Charm++ RTS Components Machine Layer: Περιλαμβάνει κώδικα σχετικό με το σύστημα που χρησιμοποιούν ανώτερα στρώματα της Charm++ για βασικές λειτουργίες, όπως αποστολή μηνυμάτων Converse: Περιλαμβάνει abstractions των δυνατοτήτων του machine layer από τα ανώτερα στρώματα τoυ runtime. Επίσης παρέχει λειτουργικότητα που δεν υποστηρίζεται από κάποια machine layers. Τέλος, περιέχει τον scheduler και την ουρά μηνυμάτων Ουρά μηνυμάτων (message queue): Συλλέγει τα μηνύματα που παραλαμβάνονται από κάποιο επεξεργαστικό στοιχείο. Είναι μοιραζόμενη μεταξύ των chares που βρίσκονται στο επεξεργαστικό στοιχείο. Scheduler: Επιλέγει ένα μήνυμα από την ουρά και το εκτελεί. Κάθε μήνυμα περιέχει τα δεδομένα του μηνύματος, το chare στο οποίο απευθύνεται και την entry method που θα εκτελεστεί. Η entry method εκτελείται μέχρι να τελειώσει ή να επιστρέψει τον έλεγχο στο RTS (lock-free). 70 1/2015 Συστήματα Παράλληλης Επεξεργασίας

105 Charm++ RTS Decisions Διαμοιρασμός των chares στους φυσικούς επεξεργαστές Load Balancing (object migration) Message routing Checkpointing Fault-tolerance Δυναμική διαχείριση φυσικών πόρων Βελτιστοποιήση χρήσης φυσικών πόρων ως προς την κατανάλωση ενέργειας Ορισμένα από τα παραπάνω χρειάζονται hardware support, άλλα χρειάζονται ακριβή μοντέλα πρόβλεψης επίδοσης /2015 Συστήματα Παράλληλης Επεξεργασίας

106

Παράλληλος Προγραμματισμός με τα reading Building Blocks

Παράλληλος Προγραμματισμός με τα reading Building Blocks Παράλληλος Προγραμματισμός με τα reading uilding locks Συστήματα Παράλληλης Επεξεργασίας 9ο Εξάμηνο, ΣΗΜΜΥ Εργ Υπολογιστικών Συστημάτων Σχολή ΗΜΜΥ, ΕΜΠ Οκτώβριος 2016 1 Γενικά για τα reading uilding locks

Διαβάστε περισσότερα

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

Cilk: Φιλοσοφία και Χρήση 1 Cilk: Φιλοσοφία και Χρήση Παράλληλα Συστήματα Επεξεργασίας 9ο εξάμηνο ΣΗΜΜΥ ακ. έτος 2012-2013 http://www.cslab.ece.ntua.gr/courses/pps Εργαστήριο Υπολογιστικών Συστημάτων ΕΜΠ Δεκέμβριος 2012 Cilk 2

Διαβάστε περισσότερα

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

Cilk: Φιλοσοφία και Χρήση 1 Cilk: Φιλοσοφία και Χρήση Παράλληλα Συστήματα Επεξεργασίας 9ο εξάμηνο ΣΗΜΜΥ ακ έτος 2010-2011 http://wwwcslabecentuagr/courses/pps Εργαστήριο Υπολογιστικών Συστημάτων ΕΜΠ Νοέμβριος 2010 Περιεχόμενα 2

Διαβάστε περισσότερα

Παράλληλος προγραμματισμός σε αρχιτεκτονικές κατανεμημένης μνήμης: MPI και UPC

Παράλληλος προγραμματισμός σε αρχιτεκτονικές κατανεμημένης μνήμης: MPI και UPC Παράλληλος προγραμματισμός σε αρχιτεκτονικές κατανεμημένης μνήμης: MPI και UPC Συστήματα Παράλληλης Επεξεργασίας 9ο Εξάμηνο, ΣΗΜΜΥ Εργ. Υπολογιστικών Συστημάτων Σχολή ΗΜΜΥ, Ε.Μ.Π. Νοέμβριος 2015 1 Επισκόπηση

Διαβάστε περισσότερα

Threading Building Blocks

Threading Building Blocks Threading Building Blocks Σύνοψη Γενικά για TBBs Tasks Parallel for Εσωτερική λειτουργία βιβλιοθήκης Task graphs Σύνοψη Γενικά για TBBs Tasks Parallel for Εσωτερική λειτουργία βιβλιοθήκης Task graphs Τι

Διαβάστε περισσότερα

Σύνοψη. Γενικά για TBBs. Γενικευμένος προγραμματισμός και templates parallel_for Εσωτερική λειτουργία βιβλιοθήκης

Σύνοψη. Γενικά για TBBs. Γενικευμένος προγραμματισμός και templates parallel_for Εσωτερική λειτουργία βιβλιοθήκης Threading Building Blocks Σύνοψη Γενικά για TBBs Tasks Γενικευμένος προγραμματισμός και templates parallel_for Εσωτερική λειτουργία βιβλιοθήκης Σύνοψη Γενικά για TBBs Tasks Γενικευμένος προγραμματισμός

Διαβάστε περισσότερα

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

Η πολυνηματική γλώσσα προγραμματισμού Cilk Η πολυνηματική γλώσσα προγραμματισμού Cilk Β Καρακάσης Ερευνητικά Θέματα Υλοποίησης Γλωσσών Προγραμματισμού Μεταπτυχιακό Μάθημα (688), ΣΗΜΜΥ Νοέμβριος 2009 Β Καρακάσης (CSLab, NTUA) ΣΗΜΜΥ, Μετ/κό 688 9/2009

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Παράλληλος προγραμματισμός σε αρχιτεκτονικές κατανεμημένης μνήμης: MPI και UPC

Παράλληλος προγραμματισμός σε αρχιτεκτονικές κατανεμημένης μνήμης: MPI και UPC Παράλληλος προγραμματισμός σε αρχιτεκτονικές κατανεμημένης μνήμης: MPI και UPC Συστήματα Παράλληλης Επεξεργασίας 9ο Εξάμηνο, ΣΗΜΜΥ Εργ. Υπολογιστικών Συστημάτων Σχολή ΗΜΜΥ, Ε.Μ.Π. Νοέμβριος 2016 1 Επισκόπηση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Διπλωματικές

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Συστήµατα Παράλληλης Επεξεργασίας. Παράλληλοςπρογραµµατισµός: Υλοποίηση παράλληλων προγραµµάτων

Συστήµατα Παράλληλης Επεξεργασίας. Παράλληλοςπρογραµµατισµός: Υλοποίηση παράλληλων προγραµµάτων Παράλληλοςπρογραµµατισµός: Υλοποίηση παράλληλων προγραµµάτων Σύνοψη παρουσίασης «Μιλώντας»παράλληλα SPMD Master / Worker parallel for Fork / Join Υποστηρικτικές δοµές δεδοµένων Μοιραζόµενα δεδοµένα Μοιραζόµενες

Διαβάστε περισσότερα

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στα Πολυεπεξεργαστικά Συστήματα Διερασίες και Νήματα σε Πολυεπεξεργαστικά Συστήματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed

Διαβάστε περισσότερα

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Ο κώδικας δεν εκτελείται «μόνος του» Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

Διαβάστε περισσότερα

Παράλληλος προγραμματισμός: Υλοποίηση παράλληλων προγραμμάτων

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

Διαβάστε περισσότερα

Παράλληλος Προγραμματισμός με OpenCL

Παράλληλος Προγραμματισμός με OpenCL Παράλληλος Προγραμματισμός με OpenCL Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο, ΣΗΜΜΥ Εργαστήριο Υπολογιστικών Συστημάτων (CSLab) Δεκέμβριος 2017 1 Γενικά για OpenCL 2 Platform Model 3 Execution Model

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Εισαγωγικά & Βασικές Έννοιες

Εισαγωγικά & Βασικές Έννοιες Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο

Διαβάστε περισσότερα

Εισαγωγικά & Βασικές Έννοιες

Εισαγωγικά & Βασικές Έννοιες Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο

Διαβάστε περισσότερα

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στο OpenMP Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Τι είναι το OpenMP Πρότυπο Επέκταση στη C/C++ και τη Fortran

Διαβάστε περισσότερα

13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1

13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1 13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1 ΓΛΩΣΣΑΡΙ Αµοιβαίος αποκλεισµός (mutual exclusion) Στο µοντέλο κοινού χώρου διευθύνσεων, ο αµοιβαίος αποκλεισµός είναι ο περιορισµός του αριθµού των διεργασιών

Διαβάστε περισσότερα

Παράλληλος προγραμματισμός: Σχεδίαση παράλληλων προγραμμάτων

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

Διαβάστε περισσότερα

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1 Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα Προγραμματισμός II 1 lalis@inf.uth.gr Χρήση λογισμικού που ήδη υπάρχει Τα πολύπλοκα συστήματα αναπτύσσονται σταδιακά, «χτίζοντας» πάνω σε υπάρχουσα λειτουργικότητα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Τεχνικές για διαμοιρασμό φορτίου και μακροεντολές Broadcast - Scatter για αποδοτικές πολύ-επεξεργαστικές εφαρμογές

Τεχνικές για διαμοιρασμό φορτίου και μακροεντολές Broadcast - Scatter για αποδοτικές πολύ-επεξεργαστικές εφαρμογές Τεχνικές για διαμοιρασμό φορτίου και μακροεντολές Broadcast - Scatter για αποδοτικές πολύ-επεξεργαστικές εφαρμογές Μίλτος Δ. Γραμματικάκης, Αντώνης Παπαγρηγορίου, Πολύδωρος Πετράκης, Γεώργιος Κορνάρος,

Διαβάστε περισσότερα

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

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΑΡΑΛΛΗΛΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΜΕ OpenMP (2 ο Μέρος)

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΑΡΑΛΛΗΛΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΜΕ OpenMP (2 ο Μέρος) ΕΡΓΑΛΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΑΡΑΛΛΗΛΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΜΕ OpenMP (2 ο Μέρος) Νίκος Τρυφωνίδης Εφαρμογή 7: Ανισορροπία Το πρόγραμμα imbalance.c περιέχει ένα loop το οποίο έχει μεγαλύτερη εργασία

Διαβάστε περισσότερα

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Χαρμανδάρης Βαγγέλης, Τμήμα Εφαρμοσμένων Μαθηματικών Πανεπιστήμιο Κρήτης, Εαρινό Εξάμηνο 2013/14 Κεφάλαιο 5: (A) Λογισμικό, Βασικές Εφαρμογές

Διαβάστε περισσότερα

8. Μέθοδοι (Methods)

8. Μέθοδοι (Methods) 8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και

Διαβάστε περισσότερα

Διάλεξη Εισαγωγή στη Java, Μέρος Γ

Διάλεξη Εισαγωγή στη Java, Μέρος Γ Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού για Δίκτυα και Τηλεπικοινωνίες Χειμερινό Εξάμηνο 2017-2018 Διάλεξη Εισαγωγή στη Java, Μέρος Γ Νήματα (Threads) στην Java Συγχρονισμός Producer-Consumer

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2017-2018 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Δευτέρα 30/4 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε

Διαβάστε περισσότερα

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ιαφάνειες παρουσίασης #5 (β)

ιαφάνειες παρουσίασης #5 (β) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

Διαβάστε περισσότερα

Χρονοδρομολόγηση Ι Μοντέλα διεργασιών, Προθεσμίες και Αλγόριθμοι

Χρονοδρομολόγηση Ι Μοντέλα διεργασιών, Προθεσμίες και Αλγόριθμοι Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Χρονοδρομολόγηση Ι Μοντέλα διεργασιών, Προθεσμίες και Αλγόριθμοι Μ.Στεφανιδάκης Χρονοδρομολόγηση (scheduling) αλγόριθμος επιλογή (init) READY RUNNING (terminate)

Διαβάστε περισσότερα

Προγραμματισμός Ταυτόχρονος Προγραμματισμός

Προγραμματισμός Ταυτόχρονος Προγραμματισμός Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο

Διαβάστε περισσότερα

Συλλογές, Στοίβες και Ουρές

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

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι Λίστες Λίστες - Απλά Συνδεδεμένες Λίστες - Διπλά Συνδεδεμένες Λίστες Είδη Γραμμικών Λιστών Σειριακή Λίστα Καταλαμβάνει συνεχόμενες θέσεις κύριας μνήμης Συνδεδεμένη Λίστα Οι κόμβοι βρίσκονται σε απομακρυσμένες

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΑΡΑΛΛΗΛΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΜΕ OpenMP ΕΡΓΑΛΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΑΡΑΛΛΗΛΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΜΕ OpenMP Νίκος Τρυφωνίδης Μέρος 1 ο : Η ΑΝΑΓΚΗ ΓΙΑ ΠΑΡΑΛΛΗΛΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Γιατί Παράλληλος Προγραμματισμός; Οι επιστημονικές υπολογιστικές

Διαβάστε περισσότερα

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα: Intel Parallel Studio XE 2013 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Μελέτη Αλγορίθμων Εκτέλεσης και Χρονοδρομολόγησης Παράλληλων Εργασιών ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Μελέτη Αλγορίθμων Εκτέλεσης και Χρονοδρομολόγησης Παράλληλων Εργασιών ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Μελέτη Αλγορίθμων Εκτέλεσης και Χρονοδρομολόγησης Παράλληλων Εργασιών

Διαβάστε περισσότερα

Εικονικοποίηση. Αρχιτεκτονική Υπολογιστών 5ο Εξάμηνο,

Εικονικοποίηση. Αρχιτεκτονική Υπολογιστών 5ο Εξάμηνο, Εικονικοποίηση Αρχιτεκτονική Υπολογιστών 5ο Εξάμηνο, 2016-2017 Εικονικοποίηση - Σύνοψη Γενικά Οργάνωση VMM Τεχνικές Εικονικοποίησης Εικονικοποίηση Μνήμης Live Migration Εικονικοποίηση - Σύνοψη Γενικά Οργάνωση

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC Αρχιτεκτονική Πλατφόρμας Μπορεί να μοντελοποιηθεί σαν ένα σύνολο από διασυνδεδεμένα κομμάτια: 1. Στοιχεία επεξεργασίας (processing

Διαβάστε περισσότερα

B. Ενσωμάτωση Ιθαγενών Μεθόδων

B. Ενσωμάτωση Ιθαγενών Μεθόδων B. Ενσωμάτωση Ιθαγενών Μεθόδων Στο τέλος αυτού του κεφαλαίου θα μπορείτε: Να δημιουργείτε κώδικα Java που θα φορτώνει βιβλιοθήκες και θα καλεί ιθαγενείς μεθόδους (native methods). Να χρησιμοποιείτε τη

Διαβάστε περισσότερα

Δομές Δεδομένων Boost C++ Libraries. 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ

Δομές Δεδομένων Boost C++ Libraries. 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ Δομές Δεδομένων Boost C++ Libraries 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ mpompotas@ceid.upatras.gr Εισαγωγή - Boost H Boost είναι μια συλλογή με περισσότερες από 50 βιβλιοθήκες για τη C++. Πολλοί χρήστες ξεκινούν

Διαβάστε περισσότερα

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

OpenMP. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων OpenMP 9 ο Εξάμηνο Προγραμματισμός σε μοιραζόμενη μνήμη void thread1(int *shared_var) int

Διαβάστε περισσότερα

Βασικές Έννοιες Πρ Ταο υγρ τόα χ μ ρ μ ο α ν τισμ ος Π ό ρ ςο ΙΙΙ γραμματισμός 1

Βασικές Έννοιες Πρ Ταο υγρ τόα χ μ ρ μ ο α ν τισμ ος Π ό ρ ςο ΙΙΙ γραμματισμός 1 Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Μονονηματική / πολυνηματική εκτέλεση Μονονηματικό μοντέλο εκτέλεσης (συμβατικό) Οι εντολές του κώδικα εκτελούνται σειριακά Ένα μοναδικό νήμα εκτέλεσης (execution

Διαβάστε περισσότερα

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

ΥΠΗΡΕΣΙΑ ΕΙΚΟΝΙΚΟΥ ΕΡΓΑΣΤΗΡΙΟΥ ΣΧΕ ΙΑΣΜΟΥ ΠΑΡΑ ΟΤΕΟ (ΠE.3.4.1.3) ΓΙΑ ΤΟ ΥΠΟΕΡΓΟ 2 «ΑΝΑΠΤΥΞΗ ΥΠΗΡΕΣΙΩΝ ΠΡΟΣΤΙΘΕΜΕΝΗΣ ΑΞΙΑΣ ΕΙΚΟΝΙΚΩΝ ΕΡΓΑΣΤΗΡΙΩΝ» ΤΟΥ ΕΡΓΟΥ «ΥΠΗΡΕΣΙΕΣ ΕΙΚΟΝΙΚΩΝ ΕΡΓΑΣΤΗΡΙΩΝ ΤΟΥ ΤΕΙ ΑΘΗΝΑΣ» (MIS 304191) ΥΠΗΡΕΣΙΑ ΕΙΚΟΝΙΚΟΥ ΕΡΓΑΣΤΗΡΙΟΥ

Διαβάστε περισσότερα

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12) Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές

Διαβάστε περισσότερα

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 8: C++ ΒΙΒΛΙΟΗΚΗ STL, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Δομές Δεδομένων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές

Διαβάστε περισσότερα

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

HY-486 Αρχές Κατανεμημένου Υπολογισμού HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Τρίτη 2/5 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα. Εισαγωγή Λειτουργικά Συστήματα Εισαγωγή Λειτουργικά Συστήματα Ι 4/10/2016 Περιληπτικά Στο σημερινό μάθημα θα δούμε ποια είναι η θέση του Λειτουργικού Συστήματος στην οργάνωση ενός ηλεκτρονικού υπολογιστή. Σπύρος

Διαβάστε περισσότερα

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Χαρμανδάρης Βαγγέλης, Τμήμα Εφαρμοσμένων Μαθηματικών Πανεπιστήμιο Κρήτης, Εαρινό Εξάμηνο 2013/14 Κεφάλαιο 4: Παράλληλοι Αλγόριθμοι Ταξινόμηση

Διαβάστε περισσότερα

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

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος II Θέματα ιάλεξης Μη- ομημένος

Διαβάστε περισσότερα

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED)

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED) ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα αυτό δομήθηκε βάση

Διαβάστε περισσότερα

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Πρόγραμμα και εκτέλεση προγράμματος Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

Διαβάστε περισσότερα

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( ) ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση

Διαβάστε περισσότερα

Διάλεξη 5: Δείκτες και Συναρτήσεις

Διάλεξη 5: Δείκτες και Συναρτήσεις Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 5: Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 5-1 Περιεχόμενο

Διαβάστε περισσότερα

Λογισµικό (Software SW) Γλώσσες

Λογισµικό (Software SW) Γλώσσες Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής

Διαβάστε περισσότερα

Βασικές Έννοιες Δοµών Δεδοµένων

Βασικές Έννοιες Δοµών Δεδοµένων Δοµές Δεδοµένων Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος Βασικές Έννοιες

Διαβάστε περισσότερα

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης Επικοινωνία -RPC 1 Υλοποίηση RPC Προκειμένου να επιτευχθεί διαφάνεια στην κλήση RPC,

Διαβάστε περισσότερα

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

Ε-85: Ειδικά Θέµατα Λογισµικού Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «ιεργασίες και Νήµατα» Παναγιώτης Χατζηδούκας (Π.Δ. 407/80) E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων

Διαβάστε περισσότερα

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

OpenMP. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων OpenMP 9 ο Εξάμηνο Προγραμματισμός σε μοιραζόμενη μνήμη void thread1(int *shared_var) int

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1 ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων

Διαβάστε περισσότερα

EM 361: Παράλληλοι Υπολογισμοί

EM 361: Παράλληλοι Υπολογισμοί ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ EM 361: Παράλληλοι Υπολογισμοί Ενότητα #5Α: Λογισμικό, Βασικές Εφαρμογές OpenMP Διδάσκων: Χαρμανδάρης Ευάγγελος ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΚΑΙ

Διαβάστε περισσότερα

Παράλληλη Επεξεργασία Κεφάλαιο 6 ο Σύγχρονος Παραλληλισμός

Παράλληλη Επεξεργασία Κεφάλαιο 6 ο Σύγχρονος Παραλληλισμός Παράλληλη Επεξεργασία Κεφάλαιο 6 ο Σύγχρονος Παραλληλισμός Κωνσταντίνος Μαργαρίτης Καθηγητής Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας kmarg@uom.gr http://eos.uom.gr/~kmarg Αρετή Καπτάν Υποψήφια

Διαβάστε περισσότερα

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 6 C & Assembly

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 6 C & Assembly Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 6 C & Assembly Real World Situation Στον πραγματικό κόσμο, κανείς δεν γράφει αποκλειστικά assembly Κουραστικό Δύσκολα συντηρήσιμος κώδικας Μηδενική φορητότητα Μεγάλη

Διαβάστε περισσότερα

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί

Διαβάστε περισσότερα

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1 Δυναμική δέσμευση και αποδέσμευση μνήμης Προγραμματισμός II 1 lalis@inf.uth.gr Γιατί χρειάζεται η δυναμική μνήμη; Οι απαιτήσεις του προγράμματος σε μνήμη μπορεί να είναι άγνωστες την ώρα της συγγραφής

Διαβάστε περισσότερα

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

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες 0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε

Διαβάστε περισσότερα

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 4 η : Παράλληλος Προγραμματισμός. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 4 η : Παράλληλος Προγραμματισμός. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Ενότητα 4 η : Παράλληλος Προγραμματισμός Παράλληλος Προγραμματισμός Ο παράλληλος προγραμματισμός με βάση την αφαιρετικότητα: Ελάχιστη έως καμία γνώση της αρχιτεκτονικής Επεκτάσεις παράλληλου

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Διαφορές Java και C++ ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΙΑΦΟΡΕΣ JAVA C++ Η

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

Διαβάστε περισσότερα

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2 Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

Διαβάστε περισσότερα

Φροντιστήριο 4 Σκελετοί Λύσεων

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων 1. Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως εξής: (i) Διαδοχική χορήγηση μνήμης Υποθέτουμε ότι οι λίστες μας έχουν μέγιστο μέγεθος max και χρησιμοποιούμε τη δομή type elements[max];

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

Διαβάστε περισσότερα

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα: Intel Parallel Studio XE 2013 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων

Διαβάστε περισσότερα

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

Διεργασίες και Νήματα (2/2) Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Διεργασίες και Νήματα (2/2) Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017 Νήματα

Διαβάστε περισσότερα

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή περιορισμένοι υπολογιστικοί / αποθηκευτικοί πόροι δεν τίθεται θέμα

Διαβάστε περισσότερα

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 16/4/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Τύποι της Java Primitives vs References Οι πρωταρχικοί

Διαβάστε περισσότερα

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; } Σχεδίαση Γλωσσών & Μεταγλωττιστές Ενότητα 2: Εμβέλεια Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που

Διαβάστε περισσότερα

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

Ασκήσεις στα Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών Ασκήσεις στα Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών ακ. έτος 2006-2007 Νεκτάριος Κοζύρης Νίκος Αναστόπουλος {nkoziris,anastop}@cslab.ece.ntua.gr Άσκηση 1: pipelining Εξετάζουμε την εκτέλεση του παρακάτω

Διαβάστε περισσότερα

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr Η έννοια της διεργασίας ιεργασία (process) είναι ο µηχανισµός εκτέλεσης ενός προγράµµατος σε ένα λειτουργικό σύστηµα. Η διεργασία είναι µια ενεργή

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017 Ανακεφαλαίωση:

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:

Διαβάστε περισσότερα

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 UDP vs TCP Το UDP είναι ένα connectionless, μη αξιόπιστο,

Διαβάστε περισσότερα

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

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (

Διαβάστε περισσότερα