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

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

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

Transcript

1 Υ07 Παράλληλα Συστήματα /4/2012 Προγραμματισμός συστημάτων κοινόχρηστης μνήμης (ΙΙ) OpenMP Β. Δημακόπουλος

2 Shared address space / shared variables Τι χρειάζεται κανείς για να προγραμματίσει σε αυτό το μοντέλο: Οντότητες εκτέλεσης (νήματα, διεργασίες) Δημιουργία, διαχείριση Όχι άμεση έννοια στο OpenMP Κοινές μεταβλητές μεταξύ των οντοτήτων Ορισμός μεταβλητών (τι είναι κοινό και πως ορίζεται) Τις διαβάζουν και τις τροποποιούν όλες οι διεργασίες Οι καθολικές μεταβλητές (και όχι μόνο) στο OpenMP Αμοιβαίος αποκλεισμός Π.χ. κλειδαριές Κλειδαριές και στο OpenMP Συγχρονισμός Π.χ. κλήσεις φραγής (barrier calls) Κλήσεις φραγής, άμεσες και έμμεσες #2

3 Γιατί OpenMP; Απλό! «Αυξητικό» (δηλαδή απλά προσθέτεις λίγο-λίγο παραλληλισμό στο υπάρχον σειριακό πρόγραμμα) Όχι πάντα τόσο απλό, βέβαια! Υποστηρίζεται σχεδόν παντού πλέον Τρέχουσα έκδοση: 3.1 #3

4 Με νήματα, βελτιστοποιημένο #include <pthread.h> #define N #define NPROCS 2 /* dual core */ double pi = 0.0, W = 1.0/N; #define N /* Για ακρίβεια (ίδια με σειριακό) */ #define WORK N/NPROCS double pi = 0.0, W = 1.0/N; main() { pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; int i; void *thrfunc(void *iter) { int i, me = (int) iter; double mysum = 0.0; for (i = me*work; i < (me+1)*work; i++) mysum += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); pthread_mutex_lock(&lock); pi += mysum; pthread_mutex_unlock(&lock); for (i = 0; i < N; i++) pi += 4*W/(1+(i+0.5)*(i+0.5)*W*W); printf("pi = %.10lf\n", pi); main() { int i; pthread_t tids[nprocs]; for (i = 0; i < NPROCS; i++) /* νήματα = # επεξεργατών */ pthread_create(&tids[i], NULL, thrfunc, (void *) i); for (i = 0; i < NPROCS; i++) pthread_join(tids[i], NULL); printf("pi = %.10lf\n", pi); #4

5 Με OpenMP #include <omp.h> #define N double pi = 0.0, W = 1.0/N; main () { int i; #define N #pragma omp parallel for reduction(+:pi) double pi = 0.0, W = 1.0/N; for (i=0; i < N; i++) pi += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); main() { printf("pi = %.10lf\n", pi); int i; for (i = 0; i < N; i++) pi += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); printf("pi = %.10lf\n", pi); #5

6 OpenMP Μοντέλο προγραμματισμού για παράλληλα συστήματα Οδηγίες προς τον μεταγλωττιστή ώστε να παράγει κώδικα με νήματα Όλες οι μεγάλες εταιρίες το υποστηρίζουν ή/και αποφασίζουν για την εξέλιξή του Intel, SUN, IBM, HP, SGI, Microsoft (Visual Studio 2005) GNU GCC Ερευνητικοί compilers Omni (Ιαπωνία), NANOS/Mercurium (Ισπανία), OpenUH (ΗΠΑ) OMPi (Ελλάδα - UoI) #6

7 Προγραμματιστικό Μοντέλο Παραλληλισμός τύπου Fork-Join: To νήμα αρχηγός δημιουργεί ομάδα νημάτων σύμφωνα με τις ανάγκες Ο παραλληλισμός προστίθεται βαθμιαία το ακολουθιακό πρόγραμμα εξελίσσεται σε παράλληλο πρόγραμμα #7

8 Σύνταξη Οδηγιών Οι περισσότερες «εντολές» OpenMP είναι directives (οδηγίες) προς τον compiler ή pragmas. Για την C και C++, τα pragmas έχουν τη μορφή: #pragma omp construct [clause [clause] ] Για τη Fortran, τα directives έχουν μία από τις ακόλουθες μορφές: C$OMP construct [clause [clause] ]!$OMP construct [clause [clause] ] *$OMP construct [clause [clause] ] Αφού οι «εντολές» είναι directives και pragmas ένα πρόγραμμα OpenMP μπορεί να μεταγλωττιστεί από compilers που δεν υποστηρίζουν OpenMP οι τελευταίοι απλά αγνοούν τα directives / pragmas #8

9 Παράλληλα Τμήματα Νήματα δημιουργούνται στο OpenMP (στη C/C++) με το pragma omp parallel Για παράδειγμα, για να δημιουργηθεί ένα παράλληλο τμήμα με 4 νήματα: double A[1000]; omp_set_num_threads(4); #pragma omp parallel { int ID = omp_thread_num(); pooh(id,a); Κάθε νήμα εκτελεί για λογαριασμό του τον κώδικα μέσα στο δομημένο block του παράλληλου τμήματος Κάθε νήμα καλεί την pooh(id) για ID = 0 έως 3 #9

10 Παράλληλα Τμήματα Κάθε νήμα εκτελεί για λογαριασμό του τον ίδιο κώδικα Ένα μοναδικό αντίγραφο του Α μοιράζεται μεταξύ των νημάτων Η εκτέλεση προχωρά μόνο όταν έχουν τελειώσει όλα τα νήματα (barrier) double A[1000]; omp_set_num_threads(4); #pragma omp parallel { int ID = omp_thread_num(); pooh(id,a); printf( all done\n ); #10

11 Οδηγίες Διαμοίρασης Έργου (workshare directives) Ακολουθιακός κώδικας for(i=0;i<n;i++) { a[i] = a[i] + b[i]; Παραλληλοποιημένος με OpenMP: #pragma omp parallel { int id, i, Nthrds, istart, iend; id = omp_get_thread_num(); Nthrds = omp_get_num_threads(); istart = id * N / Nthrds; /* Οι επαναλήψεις που μου αντιστοιχούν */ iend = (id+1) * N / Nthrds; for(i=istart;i<iend;i++) { a[i] = a[i] + b[i]; Αντί αυτού, το OpenMP έχει κάτι πιο εύκολο: #pragma omp parallel #pragma omp for schedule(static) for(i=0;i<n;i++) { a[i] = a[i] + b[i]; #11

12 Οδηγίες Διαμοίρασης Έργου: for Το omp for κατανέμει τις επαναλήψεις ενός loop μεταξύ των νημάτων μιας ομάδας #pragma omp parallel {... #pragma omp for for (I=0;I<N;I++) { ΝEAT_STUFF(I);... Εξ ορισμού υπονοείται barrier στο τέλος του omp for Για να αφαιρεθεί το barrier χρησιμοποιούμε την φράση nowait #12

13 Οδηγίες Διαμοίρασης Έργου: sections Η δομή διαμοίρασης έργου sections αναθέτει ένα διαφορετικό δομημένο block σε κάθε νήμα #pragma omp parallel {... #pragma omp sections { #pragma omp section x_calculation(); #pragma omp section y_calculation(); #pragma omp section z_calculation();... Εξ ορισμού υπονοείται barrier στο τέλος του omp sections Για να αφαιρεθεί το barrier χρησιμοποιούμε την φράση nowait #13

14 Οδηγίες «Διαμοίρασης» Έργου: single Η οδηγία διαμοίρασης έργου single αναθέτει τον κώδικα που ακολουθεί σε ένα και μοναδικό νήμα #pragma omp parallel {... #pragma omp single { calc();... Οποιοδήποτε από τα νήμα συναντήσει το single, μπορεί να το εκτελέσει ενώ τα υπόλοιπα όχι. Εξ ορισμού υπονοείται barrier στο τέλος του omp single Για να αφαιρεθεί το barrier χρησιμοποιούμε τη φράση nowait #14

15 Συνδυασμοί Εντολών Για διευκόλυνση, όλα σε ένα pragma Συνδυασμός της Εντολής parallel με δομές διαμοίρασης έργου #pragma omp parallel for for (I=0;I<N;I++){ NEAT_STUFF(I); Υπάρχει και parallel sections Δεν υπάρχει parallel single (δεν έχει και νόημα) #15

16 Υπολογισμός του π (μέχρι τώρα) #define N double pi = 0.0, W = 1.0/N; main() { int i; for (i = 0; i < N; i++) pi += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); printf("pi = %.10lf\n", pi); #define N double pi = 0.0, W = 1.0/N; main () { #pragma omp parallel { int i, mysum = 0.0; #pragma omp for for (i=0; i < N; i++) mysum += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); #pragma omp critical pi += mysum; printf("pi = %.10lf\n", pi); #16

17 Περιβάλλον δεδομένων Προγραμματιστικό μοντέλο κοινής μνήμης: Οι περισσότερες μεταβλητές είναι εξ ορισμού κοινές Οι global μεταβλητές είναι κοινές μεταξύ των νημάτων Fortran: COMMON blocks, SAVE variables, MODULE variables C: File scope variables, static Όμως δεν είναι τα πάντα κοινά... Οι stack variables σε υπο-προγράμματα που καλούνται από παράλληλα τμήματα είναι ιδιωτικές Οι automatic variables μέσα σε ένα δομημένο block εντολών είναι ιδιωτικές. #17

18 Αλλαγή Χαρακτηριστικών Αποθήκευσης Ο προγραμματιστής μπορεί να αλλάξει τα χαρακτηριστικά αποθήκευσης των μεταβλητών χρησιμοποιώντας μία από τις ακόλουθες φράσεις SHARED PRIVATE FIRSTPRIVATE THREADPRIVATE Η τιμή μιας ιδιωτικής μεταβλητής εντός ενός παράλληλου loop μπορεί να «μεταδοθεί» σαν καθολική τιμή εκτός του loop με τη: LASTPRIVATE H default συμπεριφορά μπορεί να μεταβληθεί με τη: DEFAULT (PRIVATE SHARED NONE) Όλες οι εντολές δεδομένων εφαρμόζονται σε παράλληλα τμήματα και δομές διαμοίρασης έργου εκτός της shared η οποία εφαρμόζεται μόνο σε παράλληλα τμήματα. Όλες οι παραπάνω εντολές έχουν ισχύ στο lexical extent της εντολής OpenMP (δηλαδή ανάμεσα από τα άγκιστρα που καθορίζουν το block). #18

19 Περιβάλλον Δεδομένων Παράδειγμα με χρήση των PRIVATE και FIRSTPRIVATE int A, B, C; A = B = C = 1; #pragma omp parallel shared(a) private(b) firstprivate(c) { #pragma omp single A++; B++; C++; printf( %d, %d, %d, A,B,C); printf( %d, %d, %d, A,B,C); Τι θα τυπωθεί μέσα στο παράλληλο τμήμα 2 (ή 1), <τυχαία τιμή>, 2 Τι θα τυπωθεί μετά το παράλληλο τμήμα (OpenMP > 2.5)? 2, 1, 1 #19

20 Παράδειγμα Είναι σωστός ο υπολογισμός του π; Σωστές επιλογές: #define N double pi = 0.0, W = 1.0/N; main () { int i, mysum = 0.0; #pragma omp parallel { #pragma omp for for (i=0; i < N; i++) mysum += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); #pragma omp critical pi += mysum; printf("pi = %.10lf\n", pi); main () { int i, mysum = 0.0; #pragma omp parallel private(i)\ firstprivate(mysum) { main () { #pragma omp parallel shared(w,pi) { int i, mysum = 0.0; #20

21 Εντολή threadprivate Κάνει global δεδομένα ιδιωτικά σε κάθε νήμα Fortran: COMMON blocks C: File scope και static variables Διαφορετική συμπεριφορά από το PRIVATE Με το PRIVATE οι global μεταβλητές αποκρύπτονται. Το THREADPRIVATE διατηρεί το global scope σε κάθε νήμα Οι μεταβλητές threadprivate μπορούν να αρχικοποιηθούν χρησιμοποιώντας εντολές COPYIN ή DATA #21

22 Φράση reduction Επηρεάζει στην ουσία τον τρόπο «διαμοίρασης» των μεταβλητών: reduction (op : list) Οι μεταβλητές στο list πρέπει να είναι shared στο παράλληλο τμήμα που βρισκόμαστε. Εντός μια δομής parallel ή διαμοίρασης εργασίας: Δημιουργείται τοπικό αντίγραφο κάθε μεταβλητής της λίστας και αρχικοποιείται (ανάλογα με την πράξη op π.χ. 0 για + ) Τα τοπικά αντίγραφα συνδυάζονται ώστε να εκφυλιστούν σε ένα μοναδικό global αντίγραφο στο τέλος της δομής #22

23 Υπολογισμός του π #define N double pi = 0.0, W = 1.0/N; #define N double pi = 0.0, W = 1.0/N; main() { main () { int i; #pragma omp parallel for (i = 0; i < N; i++) { pi += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); int i, mysum = 0.0; printf("pi = %.10lf\n", pi); #pragma omp for for (i=0; i < N; i++) mysum += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); #pragma omp critical #define N pi += mysum; double pi = 0.0, W = 1.0/N; printf("pi = %.10lf\n", pi); main () { int i; #pragma omp parallel for private(i) reduction(+:pi) for (i=0; i < N; i++) pi += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); printf("pi = %.10lf\n", pi); #23

24 Εξισορρόπηση Φόρτου Αποτελεί βασικό παράγοντα απόδοσης Για συνηθισμένες λειτουργίες, π.χ. πρόσθεση διανυσμάτων, η εξισορρόπηση εργασίας δεν αποτελεί ζήτημα Για λιγότερο ομαλές λειτουργίες πρέπει να δοθεί ιδιαίτερη σημασία στην διαμοίραση της εργασίας μεταξύ των νημάτων Παράδειγμα μη ομαλών (irregular) λειτουργιών: Πολλαπλασιασμός αραιών πινάκων Παράλληλες αναζητήσεις σε μία διασυνδεδεμένη λίστα Για τέτοιες περιπτώσεις, η δομή διαμοίραση for χρησιμοποιείται με την οδηγία schedule που καθορίζει διάφορους αλγορίθμους δρομολόγησης των επαναλήψεων #24

25 Οδηγία schedule Χρήση schedule ( static dynamic guided [, chunk] ) schedule (runtime) static [,chunk] Διαμοιράζει τις επαναλήψεις, που έχουν χωριστεί σε τμήματα μεγέθους "chunk«, μεταξύ των νημάτων με κυκλικό τρόπο Αν δεν ορίζεται το "chunk", αυτό ορίζεται κατά προσέγγιση ίσο με N/P και κάθε νήμα εκτελεί ένα τμήμα επαναλήψεων dynamic [,chunk] Διαχωρίζει τις επαναλήψεις σε τμήματα μεγέθους "chunk Κάθε νήμα μόλις τελειώσει ένα τμήμα, παίρνει δυναμικά το επόμενο guided [,chunk] Παρόμοια με dynamic, αλλά το μέγεθος του τμήματος μειώνεται εκθετικά σε κάθε βήμα το μέγεθος του τμήματος είναι ανάλογο του (# unassigned iterations / # threads), αλλά όχι λιγότερο από chunk. runtime Ο αλγόριθμος δρομολόγησης καθορίζεται κατά τον χρόνο εκτέλεσης ελέγχοντας τη μεταβλητή περιβάλλοντος OMP_SCHEDULE #25

26 Παράδειγμα #26

27 Αμοιβαίος αποκλεισμός και συγχρονισμός To OpenMP ορίζει τις ακόλουθες οδηγίες: atomic critical section barrier flush ordered master (στην ουσία δεν είναι εντολή συγχρονισμού και ΔΕΝ υπονοείται barrier στο τέλος του!) #27

28 Αμοιβαίος αποκλεισμός critical, atomic Μόνο ένα νήμα μπορεί κάθε στιγμή να μπει στο critical section #pragma omp parallel for private(b) shared(res) for (i =0; i<niters; i++) { b = doit(i); #pragma omp critical { consume(b, &res); To atomic είναι ειδική περίπτωση του critical section που μπορεί να χρησιμοποιηθεί για ορισμένες απλές εντολές. Εφαρμόζεται μόνο για την τροποποίηση μίας θέσης μνήμης (την ανανέωση του x στο ακόλουθο παράδειγμα) #pragma omp parallel private(b) { b = doit(i); #pragma omp atomic x = x + b; #28

29 Συγχρονισμός barriers Barrier: Κάθε νήμα περιμένει να φτάσουν όλα τα υπόλοιπα νήματα πριν προχωρήσει. #pragma omp parallel shared (A, B, C) private(id) { id=omp_get_thread_num(); A[id] = big_calc1(id); #pragma omp barrier #pragma omp for for (i=0;i<n;i++){ C[i]=big_calc3(I,A); /* υπονοούμενο barrier */ #pragma omp for nowait for (i=0;i<n;i++){ B[i]=big_calc2(C, i); /* χωρίς barrier */ A[id] = big_calc3(id); /* υπονοούμενο barrier */ #29

30 Συγχρονισμός flush Η εντολή flush δηλώνει ένα σημείο στο οποίο το νήμα επιχειρεί να δημιουργήσει συνεπή εικόνα της μνήμης. Όλες οι πράξεις μνήμης (αναγνώσεις και εγγραφές) που ορίζονται πριν από αυτό το σημείο πρέπει να ολοκληρωθούν. Όλες οι πράξεις μνήμης (αναγνώσεις και εγγραφές) που ορίζονται μετά από αυτό το σημείο πρέπει να εκτελεστούν μετά το flush Οι μεταβλητές σε registers ή write buffers πρέπει να εγγραφούν στη μνήμη Τα ορίσματα του flush ορίζουν ποιες μεταβλητές θα γίνουν flush. Αν δεν υπάρχουν ορίσματα όλες οι ορατές στο νήμα μεταβλητές γίνονται flush. Πρόκειται για memory fence που επιβάλλει συνέπεια μνήμης #30

31 Υπονοούμενος Συγχρονισμός Barriers υπονοούνται μετά τις ακόλουθες εντολές OpenMP: end parallel end do (except when nowait is used) end sections (except when nowait is used) end critical end single (except when nowait is used) Flush υπονοείται μετά τις ακόλουθες εντολές OpenMP: barrier critical, end critical end do end parallel end sections end single ordered, end ordered #31

32 Συναρτήσεις Βιβλιοθήκης Συναρτήσεις locks omp_init_lock(), omp_set_lock(), omp_unset_lock(), omp_test_lock() Συναρτήσεις περιβάλλοντος χρόνου εκτέλεσης: Αλλαγή/Έλεγχος του αριθμού των νημάτων omp_set_num_threads(), omp_get_num_threads(), omp_get_thread_num(), omp_get_max_threads() Ενεργοποίηση/απενεργοποίηση εμφωλευμένου παραλληλισμού και dynamic mode omp_set_nested(), omp_set_dynamic(), omp_get_nested(), omp_get_dynamic() Έλεγχος εκτέλεσης σε παράλληλο τμήμα omp_in_parallel() Αριθμός επεξεργαστών στο σύστημα omp_num_procs() #32

33 Συναρτήσεις βιβλιοθήκης Για να ελεγχθεί ο αριθμός των νημάτων που εκτελούν ένα πρόγραμμα αρχικά απενεργοποιείται το dynamic mode και κατόπιν καθορίζεται ο αριθμός των νημάτων. #include <omp.h> void main() { omp_set_dynamic(0); omp_set_num_threads(4); #pragma omp parallel { int id=omp_get_thread_num(); do_lots_of_stuff(id); #33

34 Μεταβλητές Περιβάλλοντος Έλεγχος scheduling των loops εφόσον έχει καθοριστεί omp for schedule(runtime). OMP_SCHEDULE schedule[, chunk_size] Καθορισμός του default αριθμού νημάτων. OMP_NUM_THREADS int_literal Ενεργοποίηση/απενεργοποίηση dynamic mode OMP_DYNAMIC TRUE FALSE Ενεργοποίηση/απενεργοποίηση παράλληλης εκτέλεσης εμφωλευμένων παράλληλων τμημάτων OMP_NESTED TRUE FALSE #34

35 Χρήση Κώδικας OpenMP #include <omp.h> #include <stdio.h> void main() { #pragma omp parallel { printf( Hello world from thread %d of %d\n, omp_get_thread_num(), omp_get_num_threads(); Παραγωγή εκτελέσιμου αρχείου: $ ompicc o hello hello.c $ gcc fopenmp o hello hello.c $ icc openmp o hello hello.c $ suncc xopenmp=parallel o hello hello.c Εκτέλεση : $ export OMP_NUM_THREADS=4 $./hello Hello world from thread 0 of 4 Hello world from thread 2 of 4 Hello world from thread 1 of 4 Hello world from thread 3 of 4 $ export OMP_NUM_THREADS=1 $./hello Hello world from thread 0 of 1 #35

36 Πίνακας επί πίνακα (4 CPUs) for (i = 0; i < Ν; i++) { for (j = 0; j < Ν; j++) for (k = sum = 0; k < N; k++) sum += Α[i][k]*B[k][j]; C[i][j] = sum; #pragma omp parallel for for (i = 0; i < Ν; i++) { for (j = 0; j < Ν; j++) for (k = sum = 0; k < N; k++) sum += Α[i][k]*B[k][j]; C[i][j] = sum; Χρόνος: 130msec Χρόνος: 700msec #pragma omp parallel for private(j,k,sum) for (i = 0; i < Ν; i++) { for (j = 0; j < Ν; j++) for (k = sum = 0; k < N; k++) sum += Α[i][k]*B[k][j]; C[i][j] = sum; Χρόνος: 40msec #36

37 OpenMP 3.0 & Tasks Στο OpenMP 3.0 ξεκαθαρίστηκαν κάποιες λεπτομέρειες, προστέθηκαν κάποιες νέες συναρτήσεις που μπορούν να κληθούν από τα προγράμματα (π.χ. εύρεση του nesting level). Το βασικότερο όμως ήταν η προσθήκη των tasks! #37

38 OpenMP Tasks Γενική ιδέα: «ορισμός» μιας δουλείας που πρέπει να γίνει από κάποιο thread, κάποια στιγμή (και όχι οπωσδήποτε άμεσα από το νήμα που την όρισε) Βολεύει πολύ στην παραλληλοποίηση πολλών εφαρμογών Επίσης με αυτό τον τρόπο μπορεί σε αρκετές περιπτώσεις να αποφευχθεί η χρήση εμφωλευμένων παράλληλων περιοχών που δεν τις χειρίζονται καλά οι περισσότεροι compilers #38

39 Απλή εφαρμογή: παραλληλοποίηση λειτουργιών σε συνδεδεμένη λίστα Πώς παραλληλοποιείται στο OpenMP 2.5? Πρώτα ένα πέρασμα για να βρεθεί το πλήθος των επαναλήψεων Στην συνέχεια #pragma omp parallel for Θα πρέπει να φυλάμε επίσης έναν πίνακα με όλους τους pointers #39

40 Με tasks #40

41 OpenMP tasks Ένα task έχει: Κώδικα που πρέπει να εκτελεστεί: #pragma omp task { κώδικας Μεταβλητές πάνω στις οποίες θα δουλέψει Αφού θα εκτελεστεί πιθανώς αργότερα, θα πρέπει να «κουβαλάει» μαζί του και τις τιμές των μεταβλητών που υπήρχαν κατά τον ορισμό του Ένα καθορισμένο νήμα Που θα το εκτελέσει τον κώδικα Όχι όμως πάντα προ-καθορισμένο. #41

42 OpenMP tasks Δύο φάσεις: (α) ορισμός/πακετάρισμα και (β) εκτέλεση To νήμα που συναντά το #pragma omp task πρέπει να δημιουργήσει μία δομή που περιέχει τον κώδικα αλλά και τα δεδομένα με τις τρέχουσες τιμές τους Κάποια στιγμή, κάποιο νήμα θα πάρει το «πακέτο» και θα το εκτελέσει (ο κόπος για το πακετάρισμα δεν χρειάζεται αν το νήμα που συναντά το #pragma omp task εκτελέσει απευθείας το task) #42

43 Γενική σύνταξη #43

44 Φράσεις Φράση if(συνθήκη) Αν η συνθήκη είναι false τότε το νήμα εκτελεί άμεσα το task Φράση untied Π.χ. αν το κόστος της δημιουργίας ενός task είναι μεγάλο σε σχέση με τους υπολογισμούς που περιλαμβάνει Ή π.χ. για να cache/memory affinity Κανονικά, ένα task είναι «δεμένο» ( tied ) με το νήμα που θα ξεκινήσει να το εκτελεί δηλαδή θα εκτελεστεί από το νήμα αυτό μέχρι τέλους Σε ένα ελεύθερο task ( untied ), η εκτέλεσή του μπορεί να διακόπτεται και να συνεχίζει την εκτέλεσή του άλλο νήμα, κλπ. Λεπτομέρειες: Το πρόγραμμα είναι όλο ένα task. Όταν ένα νήμα συναντά μία παράλληλη περιοχή, φτιάχνει Ν tasks (implicit): Είναι tied, ένα task σε κάθε ένα από τα N νήματα που θα δημιουργηθούν Ένα task που εκτελείται μπορεί να δημιουργήσει άλλα tasks #44

45 Συγχρονισμός των tasks Στο τέλος ενός barrier, όλα τα tasks που έχει δημιουργήσει μία ομάδα νημάτων θα έχουν ολοκληρωθεί. Το task που συναντάει task barrier (#pragma omp taskwait) μπλοκάρει μέχρι να ολοκληρωθούν όλα τα tasks που δημιούργησε #45

46 Γενική σύνταξη περιβάλλον δεδομένων Αν δεν υπάρχει το default(), τότε οι global μεταβλητές είναι κλασικά shared. Οι υπόλοιπες θεωρούνται shared μόνο αν είναι shared σε όλες τις περιβάλλουσες περιοχές του κώδικα μέχρι την πιο πρόσφατη παράλληλη περιοχή. Αλλιώς είναι firstprivate. #46

47 fibonacci #47

48 fibonacci #48

49 fibonacci #49

50 fibonacci #50

51 Διάσχιση λίστας #51

52 Διάσχιση λίστας #52

53 Διάσχιση λίστας #53

54 Γενικότερα προβλήματα στον προγραμματισμό συστημάτων κοινόχρηστης μνήμης

55 False sharing Οι caches δεν αποθηκεύουν 1 λέξη αλλά ένα ολόκληρο μπλοκ μνήμης σε κάθε γραμμή τους. Ας υποθέσουμε για παράδειγμα ότι έχουμε το παρακάτω πρόγραμμα και ότι κάθε γραμμή της cache χωράει 4 συνεχόμενες λέξεις. Έχουμε 4 νήματα (εκτελούνται σε 4 επεξεργαστές) και το νήμα i (i = 0, 1, 2, 3) εκτελεί: 1. sum = a[0]+a[1]+a[2]+a[3]; /* Όλος ο a[] στην cache */ 2. a[i] = a[i] + i; Μετά την πρώτη εντολή, στις cache των 4 επεξεργαστών υπάρχει ολόκληρος ο πίνακας a[]. #55

56 False sharing II #56

57 False sharing III Παρότι τα νήματα αλλάζουν διαφορετικά στοιχεία, υπάρχει πρόβλημα μιας και οι caches θεωρούν ότι άλλαξε η γραμμή που φυλάνε και εκκινούν τους μηχανισμούς συνέπειας! ΔΙΔΑΓΜΑ: υπάρχει κίνδυνος καθυστερήσεων ακόμα και όταν τα νήματα δεν τροποποιούν κάτι κοινό Λύση; Τα δεδομένα να έχουν μέγεθος όσο και η γραμμή της cache και Να είναι στοιχισμένα σε θέσεις μνήμης που είναι ακέραια πολλαπλάσια του μεγέθους της γραμμής. #57

58 NUMA & συνέπειες Όλοι οι επεξεργαστές έχουν caches. Τι γίνεται αν κάποια στιγμή ο επεξεργαστής φέρει ένα δεδομένο από έναν άλλο επεξεργαστή; Το δεδομένο θα πάει στην cache Το πρόβλημα της συνέπειας πώς λύνεται σε αυτή την περίπτωση (αφού δεν υπάρχει δίαυλος να «παρακολουθείται»); Δύο λύσεις: ΑΠΑΓΟΡΕΥΕΤΑΙ τα απομακρυσμένα δεδομένα να μπαίνουν στην cache (π.χ. Cray T3D) ή ΕΠΙΤΡΕΠΕΤΑΙ, αλλά επιπλέον χρησιμοποιούνται νέα πρωτόκολλα συνοχής, βασισμένα σε καταλόγους (ccnuma cache coherent NUMA) Directory-based cache coherence #58

59 Τοποθέτηση δεδομένων / νημάτων Το false sharing έχει ακόμα μεγαλύτερες επιπτώσεις Βασικό μέλημα το πού θα τοποθετηθούν τα νήματα και πού τα δεδομένα Αν τα δεδομένα που χρησιμοποιεί πιο συχνά ένα νήμα πάνε σε άλλον επεξεργαστή από ότι το νήμα, τότε θα έχουμε καθυστερήσεις (NUMA factor) Συνήθης τακτική στα λειτουργικά συστήματα: First touch (όποιο νήμα προσπελάσει πρώτο κάποιο δεδομένο, τότε «τραβάει» το δεδομένο αυτό στην μνήμη του επεξεργαστή που το εκτελεί. Το δεδομένο δεν μετακινείται από εκεί και πέρα). ΔΙΔΑΓΜΑ??? Θέλει προσοχή στις αρχικοποιήσεις. Δεν μπορεί τις αρχικοποιήσεις να τις κάνει μόνο ένα νήμα!! #59

Προγραμματισμός με το OpenMP Β. Δημακόπουλος

Προγραμματισμός με το OpenMP Β. Δημακόπουλος ΠΛE006 Παράλληλη Επεξεργασία Προγραμματισμός με το OpenMP Β. Δημακόπουλος Shared address space / shared variables Τι χρειάζεται κανείς για να προγραμματίσει σε αυτό το μοντέλο: Οντότητες εκτέλεσης (νήματα,

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

Μέρος IΙ: OpenMP Κεφάλαιο 4 (νέο βιβλίο)

Μέρος IΙ: OpenMP Κεφάλαιο 4 (νέο βιβλίο) ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κοινόχρηστος χώρος διευθύνσεων Μέρος IΙ: OpenMP Κεφάλαιο 4 (νέο βιβλίο) Shared address space / shared variables Τι χρειάζεται κανείς για να προγραμματίσει σε αυτό το μοντέλο: Οντότητες

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

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Διαμοίραση έργου και συγχρονισμός στο OpenMP Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Παράλληλες Περιοχές Καθορίζονται

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

Ορολογία. Παράδειγµα 3. Εξισορρόπηση Εργασίας. Ε-85: Ειδικά Θέµατα Λογισµικού. E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Συστήµατα Παράλληλης Επεξεργασίας. OpenMP

Συστήµατα Παράλληλης Επεξεργασίας. OpenMP OpenMP Προγραµµατισµός σε µοιραζόµενη µνήµη void thread1(int *shared_var) int i; for (i=0; i

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

OpenMP. Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων. Αθήνα, Νοέµβριος /11/2004 Εισαγωγή στο OpenMP 1

OpenMP. Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων. Αθήνα, Νοέµβριος /11/2004 Εισαγωγή στο OpenMP 1 OpenMP Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων Αθήνα, Νοέµβριος 2004 29/11/2004 Εισαγωγή στο OpenMP 1 1 Παράλληλες αρχιτεκτονικές Αρχιτεκτονική κατανεµηµένης µνήµης (distributed

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

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

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

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

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

Υ07 Παράλληλα Συστήματα /3/2018 Προγραμματισμός συστημάτων κοινόχρηστης μνήμης (IΙ) Υ07 Παράλληλα Συστήματα 2017-18 27/3/2018 Προγραμματισμός συστημάτων κοινόχρηστης μνήμης (IΙ) Shared address space / shared variables Τι χρειάηεται κανείσ για να προγραμματίςει ςε αυτό το μοντζλο: Οντότθτεσ

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

Εισαγωγή στον Προγραµµατισµό Πολυεπεξεργαστικών Συστηµάτων Κοινής Μνήµης µε...

Εισαγωγή στον Προγραµµατισµό Πολυεπεξεργαστικών Συστηµάτων Κοινής Μνήµης µε... Εισαγωγή στον Προγραµµατισµό Πολυεπεξεργαστικών Συστηµάτων Κοινής Μνήµης µε... Λογισµικό & Προγραµµατισµός Συστηµάτων Υψηλής Επίδοσης Εργαστήριο Πληροφοριακών Συστηµάτων Υψηλών Επιδόσεων Τοµέας Λογικού

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

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

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

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

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

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

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

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:12 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

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

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

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

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

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

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

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

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

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

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

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

Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Παραδείγματα με openmp Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Παραδείγματα με openmp Γκόγκος Χρήστος Παράδειγμα

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

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

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

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

Αποδοτική εκτέλεση προγραμμάτων OpenMP σε συστάδες Η/Υ

Αποδοτική εκτέλεση προγραμμάτων OpenMP σε συστάδες Η/Υ Πτυχιακή Εργασία Σιταράς Φώτιος Αύγουστος 2009 Αποδοτική εκτέλεση προγραμμάτων OpenMP σε συστάδες Η/Υ Επιβλέπων: Βασίλειος Δημακόπουλος 1 2 Περιεχόμενα Κεφάλαιο 1: Εισαγωγή...6 1.1 Η εξέλιξη των Η/Υ...6

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

Προγραµµατισµός Νηµάτων. Αρχικοποίηση µιας Φοράς pthread_once_t once_block = PTHREAD_ONCE_INIT; pthread_mutex_t mutex;

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

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

Υλοποίηση cancellation στον παραλληλοποιητικό μεταφραστή OMPi. Εμμανουήλ Φελουτζή. με Α.Μ: 1579 ΔΙΠΛΩΜΑΤΟΣ

Υλοποίηση cancellation στον παραλληλοποιητικό μεταφραστή OMPi. Εμμανουήλ Φελουτζή. με Α.Μ: 1579 ΔΙΠΛΩΜΑΤΟΣ Υλοποίηση cancellation στον παραλληλοποιητικό μεταφραστή OMPi από τον Εμμανουήλ Φελουτζή με Α.Μ: 1579 ως μέρος των Υποχρεώσεων για τη λήψη του ΔΙΠΛΩΜΑΤΟΣ ΤΟΥ ΤΜΗΜΑΤΟΣ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΡΤΙΟΣ

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

Κατανεμημένος και Παράλληλος Προγραμματισμός

Κατανεμημένος και Παράλληλος Προγραμματισμός Κατανεμημένος και Παράλληλος Προγραμματισμός Ηλίας Κ. Σάββας Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας Email: savvas@teilar.gr Παράλληλος προγραμματισμός OpenMP (2) Παραλληλοποίηση των βρόγχων

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

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

26/3/2012 Προγραμματισμός συστημάτων κοινόχρηστης μνήμης (Ι) Β. Δημακόπουλος Υ07 Παράλληλα Συστήματα 2011-12 26/3/2012 Προγραμματισμός συστημάτων κοινόχρηστης μνήμης (Ι) Β. Δημακόπουλος Από τα εισαγωγικά για να εκμεταλλευτούμε πολλαπλούς επεξεργαστές, έχουμε δύο βασικές τεχνικές:

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

ΥΛΟΠΟΙΗΣΗ ΣΥΝΤΑΚΤΙΚΟΥ ΑΝΑΛΥΤΗ ΓΙΑ ΤΟΝ ΠΑΡΑΛΛΗΛΟΠΟΙΗΤΙΚΟ ΜΕΤΑΦΡΑΣΤΗ OMPI Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙ ΙΚΕΥΣΗΣ. Υποβάλλεται στην

ΥΛΟΠΟΙΗΣΗ ΣΥΝΤΑΚΤΙΚΟΥ ΑΝΑΛΥΤΗ ΓΙΑ ΤΟΝ ΠΑΡΑΛΛΗΛΟΠΟΙΗΤΙΚΟ ΜΕΤΑΦΡΑΣΤΗ OMPI Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙ ΙΚΕΥΣΗΣ. Υποβάλλεται στην ΥΛΟΠΟΙΗΣΗ ΣΥΝΤΑΚΤΙΚΟΥ ΑΝΑΛΥΤΗ ΓΙΑ ΤΟΝ ΠΑΡΑΛΛΗΛΟΠΟΙΗΤΙΚΟ ΜΕΤΑΦΡΑΣΤΗ OMPI Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙ ΙΚΕΥΣΗΣ Υποβάλλεται στην ορισθείσα από την Γενική Συνέλευση Ειδικής Σύνθεσης του Τµήµατος Πληροφορικής

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

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

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

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

Κατανεμημένος και Παράλληλος Προγραμματισμός

Κατανεμημένος και Παράλληλος Προγραμματισμός Κατανεμημένος και Παράλληλος Προγραμματισμός Ηλίας Κ. Σάββας Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας Email: savvas@teilar.gr Παράλληλος προγραμματισμός OpenMP (3) Critical vs. Single Η

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

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

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

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

Λ10 Παράλληλος & Κατανεμημένος Προγραμματισμός 2009

Λ10 Παράλληλος & Κατανεμημένος Προγραμματισμός 2009 Λ10 Παράλληλος & Κατανεμημένος Προγραμματισμός 2009 Μάθημα 3 ο 3/11/2009 Μάθημα 4 ο 10/11/2009 Προγραμματισμός με το OpenMP Β. Δημακόπουλος Δφο ακόμα κζματα με τα νιματα Πϊσ μπορϊ να εξαςφαλίςω ότι κάτι

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

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

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

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

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:20 OpenMP Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

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

Ανάλυση ροής δεδομένων και autoscoping στον παραλληλοποιητικό μεταφραστή OMPi

Ανάλυση ροής δεδομένων και autoscoping στον παραλληλοποιητικό μεταφραστή OMPi Πτυχιακή Εργασία Μουρελής Άγγελος Σεπτέμβριος 2013 Ανάλυση ροής δεδομένων και autoscoping στον παραλληλοποιητικό μεταφραστή OMPi Επιβλέπων: Βασίλειος Δημακόπουλος Περιεχόμενα Κεφάλαιο 1 Εισαγωγή 5 1.1

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

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα

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

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

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

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

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

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

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

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

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

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

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

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

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

Κατανεμημένος και Παράλληλος Προγραμματισμός

Κατανεμημένος και Παράλληλος Προγραμματισμός Κατανεμημένος και Παράλληλος Προγραμματισμός Ηλίας Κ. Σάββας Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας Email: savvas@teilar.gr Παράλληλος προγραμματισμός - OpenMP Παράλληλες αρχιτεκτονικές

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

Κατανεμημένος και. Ηλίας Κ. Σάββας Αναπληρωτής Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας

Κατανεμημένος και. Ηλίας Κ. Σάββας Αναπληρωτής Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας Κατανεμημένος και Παράλληλος Προγραμματισμός Ηλίας Κ. Σάββας Αναπληρωτής Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας Email: savvas@teilar.gr Παράλληλος προγραμματισμός - OpenMP Παράλληλες

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

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

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

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

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

Εκφωνήσεις ασκήσεων εργαστηρίου 2 (pthreads) Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Γκόγκος Χρήστος Εκφωνήσεις ασκήσεων εργαστηρίου

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

5/3/2012. Εισαγωγή στα Παράλληλα Συστήµατα (Οργάνωση-Προγραµµατισµός) Β. Δημακόπουλος Α. Ευθυμίου

5/3/2012. Εισαγωγή στα Παράλληλα Συστήµατα (Οργάνωση-Προγραµµατισµός) Β. Δημακόπουλος Α. Ευθυμίου 5/3/2012 Εισαγωγή στα Παράλληλα Συστήµατα (Οργάνωση-Προγραµµατισµός) Β. Δημακόπουλος Α. Ευθυμίου Τι περιλαμβάνει το σημερινό μάθημα; Εισαγωγή στα παράλληλα συστήματα Τι είναι; Πώς φτάσαμε ως εδώ; Τι σημαίνει

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

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

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

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

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

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

Υ07 Παράλληλα Συστήματα & 29/3/2016 Προγραμματισμός συστημάτων κοινόχρηστης μνήμης (Ι) Υ07 Παράλληλα Συστήματα 2015-16 22 & 29/3/2016 Προγραμματισμός συστημάτων κοινόχρηστης μνήμης (Ι) Από τα εισαγωγικά για να εκμεταλλευτούμε πολλαπλούς επεξεργαστές, έχουμε δύο βασικές τεχνικές: Πολλαπλές

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

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

Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ: ΕΡΓΑΣΤΗΡΙΟ Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής

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

Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης

Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης Αρης Ευθυμίου Λειτουργία μνήμης Η μνήμη είναι ένας πίνακας αποθήκευσης Οταν διαβάζουμε μια θέση, περιμένουμε να πάρουμε την τελευταία τιμή που έχει

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

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

Προγραμματισμός με Κοινόχρηστο Χώρο Διευθύνσεων 4 Προγραμματισμός με Κοινόχρηστο Χώρο Διευθύνσεων 4 Με το κεφάλαιο αυτό, αλλάζουμε θεματολογία και μπαίνουμε στον χώρο του προγραμματισμού των παράλληλων συστημάτων. Σε αντίθεση με τους κλασικούς σειριακούς

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

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

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

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

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

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

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 7 η Πίνακες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου

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

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

Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Παραδείγματα με pthreads Γκόγκος Χρήστος Παράδειγμα

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

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

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

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

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

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

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

QuakeTM: Parallelizing a Complex Sequential Application Using Transactional Memory (Gajinov et al., 2009)

QuakeTM: Parallelizing a Complex Sequential Application Using Transactional Memory (Gajinov et al., 2009) Quake I QuakeTM: Parallelizing a Complex Sequential Application Using Transactional Memory (Gajinov et al., 2009) Είναι όντως χρήσιμη η transactional memory σε μεγάλες εφαρμογές; Παράλληλη υλοποίηση μιας

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

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:10 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

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

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ. ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗΣ ΤΟΥΡΙΣΤΙΚΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΕΩΝ ΦΙΛΟΞΕΝΙΑΣ Πληροφορική I "Προγραμματισμός" B. Φερεντίνος

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

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

Προγραμματισμός Ι. Πολλαπλά Αρχεία. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Πολλαπλά Αρχεία Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Πολλαπλά Αρχεία Όταν γράφουμε μεγάλα προγράμματα θέλουμε να έχουμε ανεξάρτητα κομμάτια κώδικα

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

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

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

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

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

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

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

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

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

Υ07. Διδάσκων: ΠΑΡΑΛΛΗΛΑ ΣΥΣΤΗΜΑΤΑ. Β. Δημακόπουλος.

Υ07. Διδάσκων: ΠΑΡΑΛΛΗΛΑ ΣΥΣΤΗΜΑΤΑ. Β. Δημακόπουλος. Υ07 ΠΑΡΑΛΛΗΛΑ ΣΥΣΤΗΜΑΤΑ Διδάσκων: Β. Δημακόπουλος dimako@cse.uoi.gr Υ07 Παράλληλα Συστήματα 2015-16 23/2/2016 Εισαγωγή στα Παράλληλα Συστήματα (Οργάνωση-Προγραμματισμός) Οργάνωση του μαθήματος Διδάσκων:

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

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

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

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

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

Βασικές Αρχές Προγραμματισμού

Βασικές Αρχές Προγραμματισμού Βασικές Αρχές Προγραμματισμού Κεφάλαιο 2 ΗγλώσσαC Ιστορική Αναδρομή ΗανάπτυξητηςC ξεκίνησε το 1972 στα εργαστήρια Bell από τον Dennis Ritchie με σκοπό την ανάπτυξη ενός λειτουργικού συστήματος για τον

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

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

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

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

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

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού Μάθημα 2ο Aντώνης Σπυρόπουλος v2_061015 Οροι που

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

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

Προγραμματισμός Συστημάτων MYY502 Προγραμματισμός Συστημάτων Β. Δημακόπουλος dimako@cse.uoi.gr http://www.cse.uoi.gr/~dimako Εργαστήρια Μάλλον (!) ξεκινούν την επόμενη εβδομάδα Εγγραφές στο εργαστήριο 2 βάρδιες, 15:00 17:00 και

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

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

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

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

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

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

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

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

Κεφάλαιο VΙΙ (λίγο διαφορετικό)

Κεφάλαιο VΙΙ (λίγο διαφορετικό) Κοινόχρηστος χώρος διευθύνσεων Κεφάλαιο VΙΙ (λίγο διαφορετικό) «Οντότητες» εκτέλεσης κώδικα Σειριακό πρόγραμμα για υπολογισμό του π = 3.141592 #define N 512 float pi = 0.0, W = 1.0/Ν; main() int i; for

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

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

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

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

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C Τεχνολογία και Προγραμματισμός Υπολογιστών Η γλώσσα προγραμματισμού C Με μια ματιά Τύπος Πίνακα Μεταβλητές με ενδείκτη Αλφαριθμητικά - Πίνακες Δισδιάστατος Πολυδιάστατος Πίνακας 2 2 Τύπος Πίνακα Σύνθετος

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

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Νήματα & Συγχρονισμός Μεταβλητές κλειδιά Φράγματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Συγχρονισμός μεταξύ νημάτων

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

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

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

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

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

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

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

Μέρος Ι: νήματα POSIX Κεφάλαιο 4 (νέο βιβλίο) Κεφάλαιο 7 (παλιές σημειώσεις)

Μέρος Ι: νήματα POSIX Κεφάλαιο 4 (νέο βιβλίο) Κεφάλαιο 7 (παλιές σημειώσεις) ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κοινόχρηστος χώρος διευθύνσεων Μέρος Ι: νήματα POSIX Κεφάλαιο 4 (νέο βιβλίο) Κεφάλαιο 7 (παλιές σημειώσεις) Βιβλίο Β. Δημακόπουλος Παράλληλα Συστήματα και Προγραμματισμός 2016 Αποθετήριο

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πίνακες Πίνακες (arrays) Πολύ συχνά είναι απαραίτητο το πρόγραμμα μας να χειριστεί

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

Διαδικαστικός Προγραμματισμός

Διαδικαστικός Προγραμματισμός Διαδικαστικός Προγραμματισμός Ενότητα 3: Εντολές ελέγχου επανάληψη Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό,

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

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

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

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

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

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

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

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

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

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

Ατομική Διπλωματική Εργασία ΠΡΟΣΟΜΟΙΩΣΗ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΠΑΡΑΛΛΗΛΩΝ ΑΛΓΟΡΙΘΜΩΝ ΣΤΟ ΠΕΡΙΒΑΛΛΟΝ XMT. Ελένη Παντελή ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Ατομική Διπλωματική Εργασία ΠΡΟΣΟΜΟΙΩΣΗ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΠΑΡΑΛΛΗΛΩΝ ΑΛΓΟΡΙΘΜΩΝ ΣΤΟ ΠΕΡΙΒΑΛΛΟΝ XMT. Ελένη Παντελή ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Ατομική Διπλωματική Εργασία ΠΡΟΣΟΜΟΙΩΣΗ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΠΑΡΑΛΛΗΛΩΝ ΑΛΓΟΡΙΘΜΩΝ ΣΤΟ ΠΕΡΙΒΑΛΛΟΝ XMT Ελένη Παντελή ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Μάιος 2010 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΣΟΜΟΙΩΣΗ

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

Κεφάλαιο 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 (); Πρότυπο ( ήλωση) Συνάρτησης (

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

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

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

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19) Κεφάλαιο 8.7 Πολυδιάστατοι Πίνακες (Διάλεξη 19) Πολυδιάστατοι πίνακες Μέχρι τώρα μιλούσαμε για Μονοδιάστατους Πίνακες. ή π.χ. int age[5]= {31,28,31,30,31; για Παράλληλους πίνακες, π.χ. int id[5] = {1029,1132,1031,9991,1513;

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

Ατομική Διπλωματική Εργασία. Dataflow Υλοποίηση της εφαρμογής OCEAN με την χρήση πλατφόρμας TFlux. Έλση Πραιτωρίτη ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ

Ατομική Διπλωματική Εργασία. Dataflow Υλοποίηση της εφαρμογής OCEAN με την χρήση πλατφόρμας TFlux. Έλση Πραιτωρίτη ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Ατομική Διπλωματική Εργασία Dataflow Υλοποίηση της εφαρμογής OCEAN με την χρήση πλατφόρμας TFlux Έλση Πραιτωρίτη ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Μάιος ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Τίτλος

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

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός Δομές Ακολουθίας- Επιλογής - Επανάληψης Δομημένος Προγραμματισμός 1 Βασικές Έννοιες αλγορίθμων Σταθερές Μεταβλητές Εκφράσεις Πράξεις Εντολές 2 Βασικές Έννοιες Αλγορίθμων Σταθερά: Μια ποσότητα που έχει

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