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

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

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

Transcript

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

2 Δφο ακόμα κζματα με τα νιματα Πϊσ μπορϊ να εξαςφαλίςω ότι κάτι κα γίνει από μόνο ζνα νιμα; Π.χ. Ζχουν ιδθ δθμιουργθκεί τα νιματα και κζλω να αρχικοποιιςω μία κοινι μεταβλθτι. Πϊσ μπορϊ να ζχω ιδιωτικζσ global μεταβλθτζσ ςτα νιματα; Π.χ. Θζλω να ζχω μία μεταβλθτι global ϊςτε να μθν τθν περνάω από ςυνάρτθςθ ςε ςυνάρτθςθ, αλλά δεν κζλω να είναι κοινι μεταξφ των νθμάτων. thread local storage - TLS #2

3 pthread_once: Εκτζλεςθ μιασ φοράσ pthread_once_t once_block = PTHREAD_ONCE_INIT pthread_mutex_t mutex; /* It is guaranteed that this will be called only once */ void routine(void) pthread_mutex_init(&mutex, NULL); /* Thread */ void *threadfunc(void *arg) pthread_once(&once_block, routine); /* Κλήςη ρουτίνασ */... int main() pthread_create(&t, NULL, threadfunc, NULL); /* Νέο νήμα */ pthread_once(&once_block, routine); /* Κλήςη ρουτίνασ */... #3

4 pthread specifics: Ιδιωτικά (Κακολικά) Δεδομζνα Νθμάτων Τρόποσ 1 οσ (εφκολοσ, γριγοροσ, όμωσ δουλεφει μόνο με οριςμζνουσ compilers και μόνο ςε ςυγκεκριμζνα λειτουργικά ςυςτιματα κλπ) thread int x; /* Global, but each thread has its own copy of the variable */ Τρόποσ 2 οσ (POSIX, portable): thread-specifics pthread_key_t key; main()... pthread_key_create(&key, NULL); /* Initialize the key - should be done once! */ pthread_create(&t, NULL, thread_routine,...); void *thread_routine(void *) long *value; mydata = malloc(sizeof(long)); /* Allocate space */ *mydata =...; pthread_setspecific(key, value); /* Store *my* data at this key */... mydata = pthread_getspecific(key); /* Get *my* data */ #4

5 OpenMP

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

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

8 Υπολογιςμόσ του π = 3,14 Αρικμθτικι ολοκλιρωςθ π x 2 4 3,5 3 2,5 2 1,5 1,5 1 0,5 0, ,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1 διάστημα i (π λάτος διαστημάτων x W = 0,1) N 1 i 0 1 4W ( i 1 2) W 2 #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); #8

9 Με νιματα, βελτιςτοποιθμζνο #include <pthread.h> #define NPROCS 2 /* dual core */ #define N /* Για ακρίβεια (ίδια με ςειριακό) */ #define WORK N/NPROCS double pi = 0.0, W = 1.0/N; pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; 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); 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); #9

10 Με OpenMP #include <omp.h> #define N double pi = 0.0, W = 1.0/N; main () int i; #define N #pragma omp parallel for reduction(+:sum) 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); #10

11 Ειςαγωγι ςτο OpenMP OpenMP: API για τθ ςυγγραφι πολυνθματικϊν εφαρμογϊν Σφνολο οδθγιϊν προσ τον μεταγλωττιςτι και ςυναρτιςεων βιβλιοκικθσ, διακζςιμο ςτον προγραμματιςτι παράλλθλων ςυςτθμάτων Διευκολφνει τθ ςυγγραφι πολυνθματικϊν προγραμμάτων ςε Fortran, C and C++ Πρότυπο που ςυγκεντρϊνει τθν εμπειρία αρκετϊν χρόνων ςε προγραμματιςμό πολυεπεξεργαςτικϊν ςυςτθμάτων #11

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

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

14 Τυπικι Χριςθ Το OpenMP ςυνικωσ χρθςιμοποιείται για τθν παραλλθλοποίθςθ loops: Βρεσ τα πιο χρονοβόρα loops. Μοίραςε τισ επαναλιψεισ μεταξφ νθμάτων. void main() double Res[1000]; for (int i=0;i<1000;i++) do_huge_comp(res[i]); Διαίπεσε αυτό το loop μεταξύ πολλαπλών νημάτων void main() double Res[1000]; #pragma omp parallel for for (int i=0;i<1000;i++) do_huge_comp(res[i]); Ακολουκιακό πρόγραμμα Παράλλθλο πρόγραμμα #14

15 Αλλθλεπίδραςθ Νθμάτων Πλεονζκτθμα: Απόκρυψθ πολλϊν «λεπτομερειϊν» από τον προγραμματιςτι Μειονζκτθμα: Απόκρυψθ πολλϊν «λεπτομερειϊν» από τον προγραμματιςτι To OpenMP είναι μοντζλο κοινισ μνιμθσ Τα νιματα επικοινωνοφν μζςω διαμοιραηόμενων μεταβλθτϊν Ακοφςια διαμοίραςθ δεδομζνων μπορεί να προκαλζςει races: race : Το αποτζλεςμα του προγράμματοσ αλλάηει με τυχαίο τρόπο αν τα νιματα εκτελεςτοφν με διαφορετικι ςειρά Εξάλειψθ races : Χριςθ ςυγχρονιςμοφ ςτα ςθμεία που χρειάηεται Ο ςυγχρονιςμόσ είναι «ακριβόσ», άρα: Αλλαγι τθσ δομισ του προγράμματοσ και τθσ οργάνωςθσ των δεδομζνων ϊςτε να μειωκοφν οι απαιτιςεισ ςυγχρονιςμοφ #15

16 Σφνταξθ Οδθγιϊν Οι περιςςότερεσ «εντολζσ» 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 #16

17 Δομθμζνα Τμιματα (blocks) Οι περιςςότερεσ «εντολζσ» OpenMP εφαρμόηονται ςε δομθμζνα τμιματα (blocks) κϊδικα. Δομθμζνο τμιμα: ζνα τμιμα κϊδικα με ζνα ςθμείο ειςόδου ςτθν κορυφι και ζνα ςθμείο εξόδου ςτο τζλοσ. Οι μόνεσ επιτρεπτζσ διακλαδϊςεισ είναι εντολζσ STOP τθσ Fortran και exit() τθσ C/C++. C$OMP PARALLEL 10 wrk(id) = garbage(id) res(id) = wrk(id)**2 if(conv(res(id)) goto 10 C$OMP END PARALLEL print *,id Δομθμζνο τμιμα C$OMP PARALLEL 10 wrk(id) = garbage(id) 30 res(id)=wrk(id)**2 if(conv(res(id))goto 20 go to 10 C$OMP END PARALLEL if(not_done) goto print *, id Μθ δομθμζνο τμιμα #17

18 Παράλλθλα Τμιματα Νιματα δθμιουργοφνται ςτο 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 #18

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

20 Μερικζσ Πρϊτεσ Λεπτομζρειεσ Dynamic mode (default): Ο αρικμόσ των νθμάτων που χρθςιμοποιοφνται για τθν εκτζλεςθ παράλλθλων τμθμάτων μπορεί να διαφζρει μεταξφ διαφορετικϊν τμθμάτων Ο οριςμόσ του αρικμοφ των νθμάτων αφορά τον μζγιςτο αρικμό νθμάτων και ενδεχομζνωσ θ εκτζλεςθ να γίνει με λιγότερα νιματα Non-dynamic mode: Ο αρικμόσ των νθμάτων είναι ςτακερόσ και μάλιςτα ακριβϊσ αυτόσ που κακορίηεται από τον προγραμματιςτι Το OpenMP υποςτθρίηει εμφωλευμζνα παράλλθλα τμιματα, όμωσ Ζνασ compiler ενδεχομζνωσ να επιλζξει να εκτελζςει ςειριακά όλα τα επίπεδα μετά το 1ο #20

21 Οδθγίεσ Διαμοίραςθσ Ζργου (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]; #21

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

23 Οδθγίεσ Διαμοίραςθσ Ζργου: 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 #23

24 Οδθγίεσ «Διαμοίραςθσ» Ζργου: single Η οδθγία διαμοίραςθσ ζργου single ανακζτει τον κϊδικα που ακολουκεί ςε ζνα και μοναδικό νιμα #pragma omp parallel... #pragma omp single calc();... Οποιοδιποτε από τα νιμα ςυναντιςει το single, μπορεί να το εκτελζςει ενϊ τα υπόλοιπα όχι. Εξ οριςμοφ υπονοείται barrier ςτο τζλοσ του omp single Για να αφαιρεκεί το barrier χρθςιμοποιοφμε τθ φράςθ nowait #24

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

26 Υπολογιςμόσ του π (μζχρι τϊρα) #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 critial pi += mysum; printf("pi = %.10lf\n", pi); #26

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

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

29 Φράςθ private Η private(var) δθμιουργεί ιδιωτικό αντίγραφο τθσ var για κάκε νιμα Η τιμι δεν είναι αρχικοποιθμζνθ Το ιδιωτικό αντίγραφο δεν ςυςχετίηεται (όςον αφορά τον χϊρο αποκικευςθσ) με το αυκεντικό program wrong IS = 1 C$OMP PARALLEL DO PRIVATE(IS) DO J=1,1000 IS = IS + J 1000 CONTINUE print *, IS Το IS δεν ζχει αρχικοποιθκεί μζςα ςτο loop Το IS ζχει ακακόριςτθ τιμι μετά το τζλοσ του loop μζχρι πζρυςι Από το V3.0 ιςχφει το λογικό (δθλ. ότι μετά τθν παράλλθλθ περιοχι, το IS κα ζχει τθν τιμι 1) #29

30 Φράςθ firstprivate firstprivate: ειδικι περίπτωςθ του private. To ιδιωτικό αντίγραφο κάκε νιματοσ αρχικοποιείται με την αντίςτοιχη τιμή του νήματοσ αρχηγοφ. program almost_right IS = 0 C$OMP PARALLEL DO FIRSTPRIVATE(IS) DO J=1, CONTINUE print *, IS IS = IS + J Κάκε νιμα ζχει ιδιωτικό αντίγραφο του IS με αρχικι τιμι 0 Παρά τθν αρχικοποίθςθ, το IS ζχει ακακόριςτθ τιμι ςε αυτό το ςθμείο μζχρι πζρυςι όπωσ είπαμε! #30

31 Φράςθ lastprivate Προωκεί τθν τιμι τθσ ιδιωτικισ μεταβλθτισ από τθν τελευταία επανάλθψθ που εκτελζςτθκε προσ τθν κακολικι μεταβλθτι program closer IS = 0 C$OMP PARALLEL DO FIRSTPRIVATE(IS) C$OMP+ LASTPRIVATE(IS) DO J=1,1000 IS = IS + J 1000 CONTINUE print *, IS Κάκε νιμα ζχει ιδιωτικό αντίγραφο του IS με αρχικι τιμι 0 Το IS ζχει τθν τιμι που είχε ςτθν τελευταία επανάλθψθ (δθλ. για J=1000) #31

32 Περιβάλλον Δεδομζνων Παράδειγμα με χριςθ των 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 Τι κα τυπωνόταν μετά το παράλλθλο τμιμα (πζρυςι)? 2, <τυχαία τιμι>, <τυχαία τιμι> Τι κα τυπωκεί μετά το παράλλθλο τμιμα (φζτοσ)? 2, 1, 1 #32

33 Φράςθ default Κανονικά, όλεσ οι μεταβλθτζσ πρζπει να προςδιοριςτοφν μζςα από κάποια φράςθ (shared, private, firstprivate κλπ) προκειμζνου να καταλάβει ο μεταφραςτισ πϊσ να τισ χειριςτεί Το OpenMP επιτρζπει να ΜΗΝ προςδιοριςτοφν. Όλεσ αυτέσ οι μεταβλητέσ θεωροφνται SHARED Εκτόσ και αν ζχει δοκεί θ φράςθ DEFAULT(NONE), οπότε όςεσ δεν ζχουν προςδιοριςτεί ρθτά από τον προγραμματιςτι προκαλοφν ςυντακτικό λάκοσ κατά τθ μετάφραςθ. #33

34 Παράδειγμα Είναι ςωςτόσ ο υπολογιςμόσ του π; Σωςτζσ επιλογζσ: #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 critial 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; #34

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

36 Παράδειγμα threadprivate Θεωριςτε 2 διαφορετικζσ ςυναρτιςεισ που καλοφνται εντόσ του ίδιου παράλλθλου τμιματοσ. Εξαιτίασ τθσ εντολισ threadprivate, κάκε νιμα που εκτελεί αυτζσ τισ ςυναρτιςεισ ζχει δικό του αντίγραφο του common block /buf/. subroutine poo parameter (N=1000) common/buf/a(n),b(n) C$OMP THREADPRIVATE(/buf/) do i=1, N B(i)= const* A(i) end do return end subroutine bar parameter (N=1000) common/buf/a(n),b(n) C$OMP THREADPRIVATE(/buf/) do i=1, N A(i) = sqrt(b(i)) end do return end #36

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

38 Υπολογιςμόσ του π #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); #38

39 Ορολογία Μια ομάδα νθμάτων ςτο OpenMP αποτελείται από το κφριο νιμα (master) και τουσ εργάτεσ (workers) Ζνα παράλλθλο τμιμα είναι ζνα κομμάτι κϊδικα που εκτελείται από όλα τα νιματα ταυτόχρονα Το κφριο νιμα ζχει πάντοτε ταυτότθτα 0 Ο οριςμόσ του μεγζκουσ τθσ ομάδασ νθμάτων, εφόςον επιτρζπεται, πραγματοποιείται πριν τθν ειςαγωγι ςε μια παράλλθλθ περιοχι Οι παράλλθλεσ περιοχζσ μπορεί να είναι εμφωλευμζνεσ, αλλά θ υποςτιριξθ τθσ εκτζλεςθσ εςωτερικϊν επιπζδων εξαρτάται από τθν υλοποίθςθ Μια δομι διαμοίραςθσ ζργου μοιράηει τθν εκτζλεςθ του κϊδικα που περιζχεται ςτο παράλλθλο τμιμα μεταξφ των μελϊν τθσ ομάδασ νθμάτων Επομζνωσ, χωρίηει κατάλλθλα τθ δουλειά #39

40 Παράδειγμα 1 #pragma omp parallel shared(n,x,y) private(i) num_threads(4) #pragma omp for for (i=0; i<n; i++) x[i] += y[i]; /*-- End of parallel region --*/ #40

41 Παράδειγμα 2 void mxv_row(int m,int n,double *a,double *b,double *c) int i, j; double sum; #pragma omp parallel for private(i, j, sum) shared(m, n, a, b, c) for (i=0; i<m; i++) sum = 0.0; for (j=0; j<n; j++) sum += b[i*n+j]*c[j]; a[i] = sum; /*-- End of parallel for --*/ #41

42 Παράδειγμα 3 #pragma omp parallel shared(n,a,b,c,d) private(i) #pragma omp for for (i=0; i<n-1; i++) b[i] = (a[i] + a[i+1])/2; #pragma omp for for (i=0; i<n; i++) nowait nowait d[i] = 1.0/c[i]; /*-- End of parallel region --*/ (implied barrier) #42

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

44 Οδθγία 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 #44

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

46 Αμοιβαίοσ αποκλειςμόσ και ςυγχρονιςμόσ To OpenMP ορίηει τισ ακόλουκεσ οδθγίεσ: atomic critical section barrier flush ordered master (ςτθν ουςία δεν είναι εντολι ςυγχρονιςμοφ) #46

47 Αμοιβαίοσ αποκλειςμόσ critical Μόνο ζνα νιμα μπορεί κάκε ςτιγμι να μπει ςτο 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); #47

48 Αμοιβαίοσ αποκλειςμόσ atomic To atomic είναι ειδικι περίπτωςθ του critical section που μπορεί να χρθςιμοποιθκεί για οριςμζνεσ απλζσ εντολζσ. Εφαρμόηεται μόνο για τθν τροποποίθςθ μίασ κζςθσ μνιμθσ (τθν ανανζωςθ του x ςτο ακόλουκο παράδειγμα) #pragma omp parallel private(b) b = doit(i); #pragma omp atomic x = x + b; #48

49 Συγχρονιςμόσ 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 */ #49

50 Συγχρονιςμόσ ordered Η εντολι ordered επιβάλει τθν ακολουκιακι ςειρά εκτζλεςθσ για ζνα τμιμα #pragma omp parallel private (res) #pragma omp for ordered for (i=0;i<n;i++) res = do_work(i); #pragma ordered printf( res = %d\n, res); #50

51 Συγχρονιςμόσ master Η εντολι master χαρακτθρίηει ζνα δομθμζνο block το οποίο εκτελείται μόνο από το νιμα αρχθγό (νιμα 0 τθσ ομάδασ). Τα υπόλοιπα νιματα το αγνοοφν (δεν υπάρχουν υπονοοφμενα barriers ι flushes). #pragma omp parallel private (tmp) do_many_things(); #pragma omp master exchange_boundaries(); #pragma barrier do_many_other_things(); #51

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

53 Υπονοοφμενοσ Συγχρονιςμόσ 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 #53

54 Συναρτιςεισ Βιβλιοκικθσ Συναρτιςεισ 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() #54

55 Προςταςία Πόρων με locks omp_lock_t lck; omp_init_lock(&lck); #pragma omp parallel private (tmp) id = omp_get_thread_num(); tmp = do_lots_of_work(id); omp_set_lock(&lck); printf( %d%d, id, tmp); omp_unset_lock(&lck); #55

56 Συναρτιςεισ βιβλιοκικθσ Για να ελεγχκεί ο αρικμόσ των νθμάτων που εκτελοφν ζνα πρόγραμμα αρχικά απενεργοποιείται το 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); #56

57 Μεταβλθτζσ Περιβάλλοντοσ Ζλεγχοσ 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 #57

58 Χριςθ Κϊδικασ 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(); Παραγωγι εκτελζςιμου αρχείου για OMPi, GNU GCC 4.2, Intel Compiler) $ ompicc o hello hello.c $ gcc fopenmp o hello hello.c $ icc openmp o hello hello.c #58

59 Χριςθ Εκτζλεςθ $ 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 #59

60 Βιβλιογραφία Links OpenMP consortium OpenMP community Intel Compilers The OMPi Compiler #60

61 Παράδειγμα 1 void a1(int n, float *a, float *b) int i; #pragma omp parallel for for (i=1; i<n; i++) /* i is private by default */ b[i] = (a[i] + a[i-1]) / 2.0; #61

62 Παράδειγμα 2 (τι κα τυπϊςει;) #include <stdio.h> #include <omp.h> int main() int x = 2; #pragma omp parallel num_threads(2) shared(x) if (omp_get_thread_num() == 0) x = 5; else printf("1: Thread# %d: x = %d\n", omp_get_thread_num(),x ); #pragma omp barrier if (omp_get_thread_num() == 0) printf("2: Thread# %d: x = %d\n", omp_get_thread_num(),x ); else printf("3: Thread# %d: x = %d\n", omp_get_thread_num(),x ); return 0; #62

63 Παράδειγμα 3 #include <stdio.h> int main() # ifdef _OPENMP printf("compiled by an OpenMP-compliant implementation.\n"); # endif return 0; #63

64 Παράδειγμα 4 #include <omp.h> void sub(float *x, int npoints) int iam, nt, ipoints, istart; #pragma omp parallel private(iam,nt,ipoints,istart) iam = omp_get_thread_num(); nt = omp_get_num_threads(); ipoints = npoints / nt; /* size of partition */ istart = iam * ipoints; /* starting array index */ if (iam == nt-1) /* last thread may do more */ ipoints = npoints - istart; subdomain(x, istart, ipoints); void main() float array[10000]; sub(array, 10000); void subdomain(float *x, int istart, int ipoints) int i; for (i = 0; i < ipoints; i++) x[istart+i] = ; #64

65 Παράδειγμα 5 #include <omp.h> int main() omp_set_dynamic(1); #pragma omp parallel num_threads(10) /* do work here at most 10 threads */ return 0; #65

66 Παράδειγμα 6 #include <math.h> void a8(int n, int m, float *a, float *b, float *y, float *z) int i; #pragma omp parallel #pragma omp for nowait for (i=1; i<n; i++) b[i] = (a[i] + a[i-1]) / 2.0; #pragma omp for nowait for (i=0; i<m; i++) y[i] = sqrt(z[i]); #66

67 Παράδειγμα 7 void XAXIS(); void YAXIS(); void ZAXIS(); void a9() #pragma omp parallel sections #pragma omp section XAXIS(); #pragma omp section YAXIS(); #pragma omp section ZAXIS(); #67

68 Παράδειγμα 8 #include <stdio.h> void work1() void work2() void a10() #pragma omp parallel #pragma omp single printf("beginning work1.\n"); work1(); #pragma omp single printf("finishing work1.\n"); #pragma omp single nowait printf("finished work1 and beginning work2.\n"); work2(); #68

69 Παράδειγμα 9 int dequeue(float *a); void work(int i, float *a); void a13(float *x, float *y) int ix_next, iy_next; #pragma omp parallel shared(x, y) private(ix_next, iy_next) #pragma omp critical (xaxis) ix_next = dequeue(x); work(ix_next, x); #pragma omp critical (yaxis) work(iy_next, y); iy_next = dequeue(y); #69

70 Παράδειγμα 10 int counter = 0; #pragma omp threadprivate(counter) int increment_counter() counter++; return(counter); int increment_counter_2() static int counter_2 = 0; #pragma omp threadprivate(counter_2) counter_2++; return(counter_2); #70

71 Παράδειγμα 11 void work(int i, int j) void good_nesting(int n) int i, j; #pragma omp parallel default(shared) #pragma omp for for (i=0; i<n; i++) #pragma omp parallel shared(i, n) #pragma omp for for (j=0; j < n; j++) work(i, j); #71

72 Πίνακασ επί πίνακα (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 #72

73 OpenMP tasks

74 OpenMP 3.0 Στο OpenMP 3.0 ξεκακαρίςτθκαν κάποιεσ λεπτομζρειεσ, προςτζκθκαν κάποιεσ νζεσ ςυναρτιςεισ που μποροφν να κλθκοφν από τα προγράμματα (π.χ. εφρεςθ του nesting level). Το βαςικότερο όμωσ ιταν θ προςκικθ των tasks! #74

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

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

77 Με tasks #77

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

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

80 Γενικι ςφνταξθ #80

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

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

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

84 fibonacci #84

85 fibonacci #85

86 fibonacci #86

87 fibonacci #87

88 Διάςχιςθ λίςτασ #88

89 Διάςχιςθ λίςτασ #89

90 Διάςχιςθ λίςτασ #90

Ορολογία. Παράδειγµα 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: Ε.Θ.Λ: Προγραµµατισµός

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

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

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

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

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

2/4/2012 Προγραμματισμός συστημάτων κοινόχρηστης μνήμης (ΙΙ) OpenMP Β. Δημακόπουλος Υ07 Παράλληλα Συστήματα 2011-12 2/4/2012 Προγραμματισμός συστημάτων κοινόχρηστης μνήμης (ΙΙ) OpenMP Β. Δημακόπουλος Shared address space / shared variables Τι χρειάζεται κανείς για να προγραμματίσει σε

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραµµατισµός Νηµάτων. Αρχικοποίηση µιας Φοράς 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: Ε.Θ.Λ: Προγραµµατισµός

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

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

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

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

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

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

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

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

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

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

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

Η γλώςςα προγραμματιςμού C Η γλώςςα προγραμματιςμού C Οι εντολζσ επανάλθψθσ (while, do-while, for) Γενικά για τισ εντολζσ επανάλθψθσ Συχνά ςτο προγραμματιςμό είναι επικυμθτι θ πολλαπλι εκτζλεςθ μιασ ενότθτασ εντολϊν, είτε για ζνα

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

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8 Δείκτεσ Διαχείριςθ Μνιμθσ Βαγγζλθσ Οικονόμου Διάλεξθ 8 Δείκτεσ Κάκε μεταβλθτι ςχετίηεται με μία κζςθ ςτθν κφρια μνιμθ του υπολογιςτι. Κάκε κζςθ ςτθ μνιμθ ζχει τθ δικι τθσ ξεχωριςτι διεφκυνςθ. Με άμεςθ

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

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

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

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

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

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

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

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

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

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

17. Πολυδιάςτατοι πίνακεσ

17. Πολυδιάςτατοι πίνακεσ Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων 17. Πολυδιάςτατοι πίνακεσ Ιωάννθσ Κατάκθσ Πολυδιάςτατοι πίνακεσ o Μζχρι τϊρα μιλοφςαμε για μονοδιάςτατουσ πίνακεσ ι int age[5]= 31,28,31,30,31; o Για παράλλθλουσ

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

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

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

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

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

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

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

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

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

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

Δομθμζνοσ Προγραμματιςμόσ. Βαγγζλθσ Οικονόμου Εργαςτιριο 9

Δομθμζνοσ Προγραμματιςμόσ. Βαγγζλθσ Οικονόμου Εργαςτιριο 9 Δομθμζνοσ Προγραμματιςμόσ Βαγγζλθσ Οικονόμου Εργαςτιριο 9 Συναρτιςεισ Αφαιρετικότθτα ςτισ διεργαςίεσ Συνάρτθςεισ Διλωςθ, Κλιςθ και Οριςμόσ Εμβζλεια Μεταβλθτών Μεταβίβαςθ παραμζτρων ςε ςυναρτιςεισ Συναρτιςεισ

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

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι Λογιςμικό (Software), Πρόγραμμα (Programme ι Program), Προγραμματιςτισ (Programmer), Λειτουργικό Σφςτθμα (Operating

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

Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα

Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα Περιεχόμενα Ζννοια δομισ Οριςμόσ δομισ Διλωςθ μεταβλθτϊν Απόδοςθ Αρχικϊν τιμϊν Αναφορά ςτα μζλθ μιασ δομισ Ζνκεςθ Δομισ Πίνακεσ Δομϊν Η ζννοια τθσ δομισ Χρθςιμοποιιςαμε

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

5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ

5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ 5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ Να γραφεί πρόγραμμα, το οποίο κα δίνει τισ τιμζσ 5 και 6 ςε δφο μεταβλθτζσ a και b και κα υπολογίηει και κα εμφανίηει το άκροιςμά τουσ sum. ΛΟΓΙΚΟ ΔΙΑΓΡΑΜΜΑ a 5 b 6 sum a+b sum ΑΛΓΟΡΙΘΜΟ

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

Ειςαγωγι ςτο Δομθμζνο Προγραμματιςμό. Βαγγζλθσ Οικονόμου

Ειςαγωγι ςτο Δομθμζνο Προγραμματιςμό. Βαγγζλθσ Οικονόμου Ειςαγωγι ςτο Δομθμζνο Προγραμματιςμό Βαγγζλθσ Οικονόμου Περιεχόμενα Πλθροφορίεσ Μακιματοσ Δομθμζνοσ Προγραμματιςμόσ (Οριςμοί, Γενικζσ Ζννοιεσ) Αλγόρικμοι και Ψευδοκϊδικασ Γλϊςςα προγραμματιςμοφ C Πλθροφορίεσ

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

16. Πίνακεσ και Συναρτήςεισ

16. Πίνακεσ και Συναρτήςεισ Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων 16. Πίνακεσ και Συναρτήςεισ Ιωάννθσ Κατάκθσ Σιμερα o Κλιςθ με τιμι o Κλιςθ με αναφορά o Πίνακεσ και ςυναρτιςεισ o Παραδείγματα Ειςαγωγι o Στισ προθγοφμενεσ

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

Ειςαγωγι ςτθν Επιςτιμθ Υπολογιςτϊν. Ειςαγωγι ςτθν Python

Ειςαγωγι ςτθν Επιςτιμθ Υπολογιςτϊν. Ειςαγωγι ςτθν Python Ειςαγωγι ςτθν Επιςτιμθ Υπολογιςτϊν Ειςαγωγι ςτθν Python Γ Μζροσ Modules, Αντικειμενοςτραφισ Προγραμματιςμόσ ςτθν Python, Classes, Objects, Αλλθλεπίδραςθ με αρχεία Ειςαγωγι αρκρωμάτων (modules): import

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

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

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

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

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν Τι είναι θ Γραμμι Εντολϊν (1/6) Στουσ πρϊτουσ υπολογιςτζσ, και κυρίωσ από τθ δεκαετία του 60 και μετά, θ αλλθλεπίδραςθ του χριςτθ με τουσ

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

ΡΟΓΑΜΜΑΤΙΣΤΙΚΟ ΡΕΙΒΑΛΛΟΝ MICRO WORLDS PRO

ΡΟΓΑΜΜΑΤΙΣΤΙΚΟ ΡΕΙΒΑΛΛΟΝ MICRO WORLDS PRO ΡΟΓΑΜΜΑΤΙΣΤΙΚΟ ΡΕΙΒΑΛΛΟΝ MICRO WORLDS PRO Το Micro Worlds Pro είναι ζνα ολοκλθρωμζνο περιβάλλον προγραμματιςμοφ. Χρθςιμοποιεί τθ γλϊςςα προγραμματιςμοφ Logo (εξελλθνιςμζνθ) Το Micro Worlds Pro περιλαμβάνει

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

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

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

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

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ ελιδοποίθςθ (1/10) Σόςο θ κατάτμθςθ διαμεριςμάτων ςτακεροφ μεγζκουσ όςο και θ κατάτμθςθ διαμεριςμάτων μεταβλθτοφ και άνιςου μεγζκουσ δεν κάνουν

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

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

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

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

ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal

ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ Κεφάλαιο 8 Η γλϊςςα Pascal Παράγραφοσ 8.2 Βαςικοί τφποι δεδομζνων Σα δεδομζνα ενόσ προγράμματοσ μπορεί να: είναι αποκθκευμζνα εςωτερικά ςτθν μνιμθ είναι αποκθκευμζνα εξωτερικά

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

3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while )

3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while ) 3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while ) Στα πιο πολλά προγράμματα απαιτείται κάποια ι κάποιεσ εντολζσ να εκτελοφνται πολλζσ φορζσ για όςο ιςχφει κάποια ςυνκικθ. Ο αρικμόσ των επαναλιψεων μπορεί να είναι

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Υπεφκυνοι αςκιςεων: Αν. Κακθγθτισ Δ. Σοφντρθσ Μεταδιδάκτορασ Λάηαροσ Παπαδόπουλοσ Αςκήςεισ ςτη Βελτιςτοποίηςη Δυναμικϊν Δομϊν Δεδομζνων (Dynamic Data Type Refinement

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

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

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

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

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ Ειρινθ Φιλιοποφλου Ειςαγωγι Ο Παγκόςμιοσ Ιςτόσ (World Wide Web - WWW) ι πιο απλά Ιςτόσ (Web) είναι μία αρχιτεκτονικι για τθν προςπζλαςθ διαςυνδεδεμζνων εγγράφων

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

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

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

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

Εγχειρίδιο Χριςθσ τθσ διαδικτυακισ εφαρμογισ «Υποβολι και παρακολοφκθςθ τθσ ζγκριςθσ Εκπαιδευτικών Πακζτων»

Εγχειρίδιο Χριςθσ τθσ διαδικτυακισ εφαρμογισ «Υποβολι και παρακολοφκθςθ τθσ ζγκριςθσ Εκπαιδευτικών Πακζτων» Εγχειρίδιο Χριςθσ τθσ διαδικτυακισ εφαρμογισ «Υποβολι και παρακολοφκθςθ τθσ ζγκριςθσ Εκπαιδευτικών Πακζτων» Το Πλθροφοριακό Σφςτθμα τθσ δράςθσ «e-κπαιδευτείτε» ζχει ςτόχο να αυτοματοποιιςει τισ ακόλουκεσ

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

Εργαςτιριο Πικανοτιτων Σθμειϊςεισ προγραμματιςμοφ: βαςικζσ γνϊςεισ ανάπτυξθσ εφαρμογϊν. Κϊςτασ Αρβανιτάκθσ

Εργαςτιριο Πικανοτιτων Σθμειϊςεισ προγραμματιςμοφ: βαςικζσ γνϊςεισ ανάπτυξθσ εφαρμογϊν. Κϊςτασ Αρβανιτάκθσ Εργαςτιριο Πικανοτιτων Σθμειϊςεισ προγραμματιςμοφ: βαςικζσ γνϊςεισ ανάπτυξθσ εφαρμογϊν Κϊςτασ Αρβανιτάκθσ Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του

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

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 8 θ Διάλεξθ Ιδεατι Μνιμθ Μζροσ Α

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 8 θ Διάλεξθ Ιδεατι Μνιμθ Μζροσ Α ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ 8 θ Διάλεξθ Ιδεατι Μνιμθ Μζροσ Α Βαςικι Ορολογία Ιδεατή Μνήμη: χιμα ανάκεςθσ αποκθκευτικοφ χϊρου, ςτο οποίο θ δευτερεφουςα μνιμθ μπορεί να διευκυνςιοδοτθκεί ςαν να ιταν μζροσ τθσ κφριασ

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

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 2 ο Εργαςτιριο Διαχείριςθ Διεργαςιϊν

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 2 ο Εργαςτιριο Διαχείριςθ Διεργαςιϊν ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ 2 ο Εργαςτιριο Διαχείριςθ Διεργαςιϊν Τπόβακρο (1/3) τουσ παλαιότερουσ υπολογιςτζσ θ Κεντρικι Μονάδα Επεξεργαςίασ (Κ.Μ.Ε.) μποροφςε κάκε ςτιγμι να εκτελεί μόνο ζνα πρόγραμμα τουσ ςφγχρονουσ

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

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι Παράςταςη κινητήσ υποδιαςτολήσ ςφμφωνα με το πρότυπο ΙΕΕΕ Δρ. Χρήστος Ηλιούδης το πρότυπο ΙΕΕΕ 754 ζχει χρθςιμοποιθκεί ευρζωσ ςε πραγματικοφσ υπολογιςτζσ. Το πρότυπο αυτό κακορίηει δφο βαςικζσ μορφζσ κινθτισ

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

Δομζσ Δεδομζνων Πίνακεσ

Δομζσ Δεδομζνων Πίνακεσ Δομζσ Δεδομζνων Πίνακεσ Διάλεξθ 2 Περιεχόμενα Πίνακεσ: Οριςμοί, Γενικζσ ζννοιεσ Αποκικευςθ πινάκων Ειδικζσ μορφζσ πινάκων Αλγόρικμοι Αναηιτθςθσ Σειριακι Αναηιτθςθ Δυαδικι Αναηιτθςθ Οριςμοί, Γενικζσ ζννοιεσ

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

Στα προθγοφμενα δφο εργαςτιρια είδαμε τθ δομι απόφαςθσ (ι επιλογισ ι ελζγχου ροισ). Ασ κυμθκοφμε:

Στα προθγοφμενα δφο εργαςτιρια είδαμε τθ δομι απόφαςθσ (ι επιλογισ ι ελζγχου ροισ). Ασ κυμθκοφμε: ΔΟΜΗ ΑΠΟΦΑΗ Στα προθγοφμενα δφο εργαςτιρια είδαμε τθ δομι απόφαςθσ (ι επιλογισ ι ελζγχου ροισ). Ασ κυμθκοφμε: Όταν το if που χρθςιμοποιοφμε παρζχει μόνο μία εναλλακτικι διαδρομι εκτζλεςθ, ο τφποσ δομισ

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

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο τησ Αριθμογραμμήσ

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο τησ Αριθμογραμμήσ Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο τησ Αριθμογραμμήσ Αυτζσ οι οδθγίεσ ζχουν ςτόχο να βοθκιςουν τουσ εκπαιδευτικοφσ να καταςκευάςουν τισ δικζσ τουσ δραςτθριότθτεσ με το μοντζλο τθσ Αρικμογραμμισ.

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

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 19. Αλφαριθμητικά II. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 19. Αλφαριθμητικά II. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων 19. Αλφαριθμητικά II Ιωάννθσ Κατάκθσ Αλφαρικμθτικά ςτθ C Ζνα string είναι μία ακολουκία αλφαρικμθτικϊν χαρακτήρων, ςθμείων ςτίξθσ κτλ. Π.χ. Hello How are you?

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

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 15. Πίνακεσ ΙI. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 15. Πίνακεσ ΙI. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων 15. Πίνακεσ ΙI Ιωάννθσ Κατάκθσ Σιμερα o Ειςαγωγι o Διλωςθ o Αρχικοποίθςθ o Πρόςβαςθ o Παραδείγματα Πίνακεσ - Επανάλθψθ o Στθν προθγοφμενθ διάλεξθ κάναμε μια

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

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

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

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

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

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2 Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2 Δρ. Χρήζηος Ηλιούδης Μθ Προςθμαςμζνοι Ακζραιοι Εφαρμογζσ (ςε οποιαδιποτε περίπτωςθ δεν χρειάηονται αρνθτικοί αρικμοί) Καταμζτρθςθ. Διευκυνςιοδότθςθ.

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

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

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

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

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

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

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

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 20. Αρχεία. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 20. Αρχεία. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων 20. Αρχεία Ιωάννθσ Κατάκθσ Aποκικευςθ Για να αποκθκεφςουμε δεδομζνα από ζνα πρόγραμμα, πρζπει να χρθςιμοποιιςουμε τθ δευτερεφουςα μνιμθ Aποκικευςθ Η πιο ςυνθκιςμζνθ

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

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν:

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν: Μζθοδος Simplex Η πλζον γνωςτι και περιςςότερο χρθςιμοποιουμζνθ μζκοδοσ για τθν επίλυςθ ενόσ γενικοφ προβλιματοσ γραμμικοφ προγραμματιςμοφ, είναι θ μζκοδοσ Simplex θ οποία αναπτφχκθκε από τον George Dantzig.

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

Ειδικά Θζματα Βάςεων Δεδομζνων

Ειδικά Θζματα Βάςεων Δεδομζνων Ειδικά Θζματα Βάςεων Δεδομζνων Ενότητα 11: Αντικειμενοςτραφήσ και αντικείμενοςχεςιακζσ βάςεισ Δρ. Τςιμπίρθσ Αλκιβιάδθσ Τμιμα Μθχανικϊν Πλθροφορικισ ΤΕ Άδειεσ Χρήςησ Το παρόν εκπαιδευτικό υλικό υπόκειται

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

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό.

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό. Κωδικοποιητές Ο κωδικοποιθτισ (nor) είναι ζνα κφκλωμα το οποίο διακζτει n γραμμζσ εξόδου και το πολφ μζχρι m = 2 n γραμμζσ ειςόδου και (m 2 n ). Οι ζξοδοι παράγουν τθν κατάλλθλθ λζξθ ενόσ δυαδικοφ κϊδικα

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

ΑΝΑΠΣΤΞΘ ΕΦΑΡΜΟΓΩΝ Ε ΠΡΟΓΡΑΜΜΑΣΙΣΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 3 ο ΓΕΝΙΚΟ ΛΤΚΕΙΟ Ν. ΜΤΡΝΘ- ΕΠΙΜΕΛΕΙΑ: ΠΤΡΙΔΑΚΘ Λ.

ΑΝΑΠΣΤΞΘ ΕΦΑΡΜΟΓΩΝ Ε ΠΡΟΓΡΑΜΜΑΣΙΣΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 3 ο ΓΕΝΙΚΟ ΛΤΚΕΙΟ Ν. ΜΤΡΝΘ- ΕΠΙΜΕΛΕΙΑ: ΠΤΡΙΔΑΚΘ Λ. Ερωτήςεισ Προβλήματα Α. Σημειώςτε δεξιά από κάθε πρόταςη το γράμμα Σ αν η πρόταςη είναι ςωςτή και το γράμμα Λ αν είναι λάθοσ. 1. Θ περατότθτα ενόσ αλγορίκμου αναφζρεται ςτο γεγονόσ ότι καταλιγει ςτθ λφςθ

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

Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων. 18. Αλφαριθμητικά. Ιωάννθσ Κατάκθσ. ΕΡΛ 032: Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων

Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων. 18. Αλφαριθμητικά. Ιωάννθσ Κατάκθσ. ΕΡΛ 032: Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων 18. Αλφαριθμητικά Ιωάννθσ Κατάκθσ Αλφαρικμθτικά o Ζνα string είναι μία ακολουκία χαρακτιρων, ςθμείων ςτίξθσ κτλ Hello How are you? 121212 *Apple#123*% Σιμερα

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

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Περιφέρειες)

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Περιφέρειες) Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Περιφέρειες) Ιούνιοσ 2013 Περιεχόμενα: Ειςαγωγή... 3 1. Περιφζρεια... 3 1.1 Διαχειριςτήσ Αιτήςεων Περιφζρειασ... 3 1.1.1. Είςοδοσ... 3 1.1.2. Αρχική

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

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα Αυτζσ οι οδθγίεσ ζχουν ςτόχο λοιπόν να βοθκιςουν τουσ εκπαιδευτικοφσ να καταςκευάςουν τισ δικζσ τουσ δραςτθριότθτεσ με το μοντζλο του Άβακα. Παρουςίαςη

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

Διαχείριςη Αριθμοδεικτών (v.1.0.7)

Διαχείριςη Αριθμοδεικτών (v.1.0.7) Διαχείριςη Αριθμοδεικτών (v.1.0.7) Περιεχόμενα 1. Μενοφ... 5 1.1 Αρικμοδείκτεσ.... 5 1.1.1 Δθμιουργία Αρικμοδείκτθ... 6 1.1.2 Αντιγραφι Αρικμοδείκτθ... 11 2. Παράμετροι... 12 2.1.1 Κατθγορίεσ Αρικμοδεικτϊν...

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

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

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

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

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

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

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

Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7)

Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7) Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων (v.1.0.7) 1 Περίληψη Το ςυγκεκριμζνο εγχειρίδιο δθμιουργικθκε για να βοθκιςει τθν κατανόθςθ τθσ διαδικαςίασ διαχείριςθσ ςτθλών βιβλίου Εςόδων - Εξόδων.

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

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ Φιλιοποφλου Ειρινθ Προςθήκη νζων πεδίων Ασ υποκζςουμε ότι μετά τθ δθμιουργία του πίνακα αντιλαμβανόμαςτε ότι ζχουμε ξεχάςει κάποια πεδία. Είναι ζνα πρόβλθμα το οποίο

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

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

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

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

Μάθημα 9 ο ΤΕΧΝΙΚΕΣ ΔΙΑΧΕΙΡΙΣΗΣ ΕΙΚΟΝΙΚΗΣ ΜΝΗΜΗΣ

Μάθημα 9 ο ΤΕΧΝΙΚΕΣ ΔΙΑΧΕΙΡΙΣΗΣ ΕΙΚΟΝΙΚΗΣ ΜΝΗΜΗΣ Μάθημα 9 ο ΤΕΧΝΙΚΕΣ ΔΙΑΧΕΙΡΙΣΗΣ ΕΙΚΟΝΙΚΗΣ ΜΝΗΜΗΣ Ειςαγωγό Όπωσ είδαμε, ο χϊροσ εικονικϊν διευκφνςεων μνιμθσ που χρθςιμοποιεί κάκε διεργαςία, είναι αρκετά μεγαλφτεροσ από το χϊρο των φυςικϊν διευκφνςεων.

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

Ονοματεπϊνυμο.. ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ

Ονοματεπϊνυμο.. ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ Ονοματεπϊνυμο.. ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ ΘΕΜΑ 1 Ο Α) Ερωτισεις τφπου ωστοφ-λάκους 1. Κάκε βρόχος Για μπορεί να μετατραπεί σε Όσο 2. Κάκε βρόχος που υλοποιείται με τθν εντολι Όσο...επανάλαβε μπορεί να γραφεί και

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

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ Αρχείο (File) Φάκελοσ (Folder) Διαχειριςτισ Αρχείων (File Manager) Τφποι Αρχείων Σε τι εξυπθρετεί θ οργάνωςθ των εργαςιϊν μασ ςτουσ υπολογιςτζσ; Πϊσ κα οργανϊςουμε

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

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 3 ο Εργαςτιριο υγχρονιςμόσ Διεργαςιϊν

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 3 ο Εργαςτιριο υγχρονιςμόσ Διεργαςιϊν ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ 3 ο Εργαςτιριο υγχρονιςμόσ Διεργαςιϊν Παράλλθλεσ Διεργαςίεσ (1/5) Δφο διεργαςίεσ λζγονται «παράλλθλεσ» (concurrent) όταν υπάρχει ταυτοχρονιςμόσ, δθλαδι οι εκτελζςεισ τουσ επικαλφπτονται

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΕΛΟΠΟΝΝΗΣΟΥ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΕΛΟΠΟΝΝΗΣΟΥ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Δίκτυα Επικοινωνιών ΙΙ Διδάςκων: Απόςτολοσ Γκάμασ (Διδάςκων ΠΔ 407/80) Βοθκόσ Εργαςτθρίου: Δθμιτριοσ Μακρισ Ενδεικτική Λύση 3

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

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

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

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

Ανάπτυξη Εφαρμογών με Σχεςιακέσ Βάςεισ Δεδομένων

Ανάπτυξη Εφαρμογών με Σχεςιακέσ Βάςεισ Δεδομένων Ανάπτυξη Εφαρμογών με Σχεςιακέσ Βάςεισ Δεδομένων Δρ. Θεοδώρου Παύλοσ theodorou@uoc.gr Περιεχόμενα Τι είναι οι Βάςεισ Δεδομζνων (DataBases) Τι είναι Σφςτθμα Διαχείριςθσ Βάςεων Δεδομζνων (DBMS) Οι Στόχοι

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

Α) Ενδεικτικϋσ απαντόςεισ των θεμϊτων

Α) Ενδεικτικϋσ απαντόςεισ των θεμϊτων Πανελλόνιεσ εξετϊςεισ Γ Τϊξησ 2011 Ανϊπτυξη Εφαρμογών ςε Προγραμματιςτικό Περιβϊλλον ΘΕΜΑ Α Α) Ενδεικτικϋσ απαντόςεισ των θεμϊτων Α1. Σ/Λ 1. Σωςτι 2. Σωςτι 3. Λάκοσ 4. Λάκοσ 5. Λάκοσ Α2. Σ/Λ 1. Σωςτι 2.

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

Modellus 4.01 Συ ντομοσ Οδηγο σ

Modellus 4.01 Συ ντομοσ Οδηγο σ Νίκοσ Αναςταςάκθσ 4.01 Συ ντομοσ Οδηγο σ Περιγραφή Σο είναι λογιςμικό προςομοιϊςεων που ςτθρίηει τθν λειτουργία του ςε μακθματικά μοντζλα. ε αντίκεςθ με άλλα λογιςμικά (π.χ. Interactive Physics, Crocodile

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

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

Λ10 Παράλληλος & Κατανεμημένος Προγραμματισμός 2009 Λ10 Παράλληλος & Κατανεμημένος Προγραμματισμός 2009 Μάθημα 2 ο 27/10/2009 Προγραμματισμός «κοινού χώρου διευθύνσεων» (κοινής μνήμης) Β. Δημακόπουλοσ Shared address space / shared variables Σι χρειάηεται

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

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

Προγραμματιςμόσ Συςτημάτων ΠΛΥ410 Προγραμματιςμόσ Συςτημάτων Διδάςκων: Β. Δημακόπουλοσ dimako@cs.uoi.gr Εργαςτιρια Ξεκινοφν τθν Τρίτη, 11/3 Από αφριο το πρωί εγγραφζσ: Καταςτάςεισ ςτον 2 ο όροφο, Γραφείο Β32 () Ομάδεσ των 2 Βοθκοί

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

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1 ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4. Να γίνει πρόγραμμα το οποίο να επιλφει το Διαγώνιο Σφςτθμα: A ι το ςφςτθμα : ι ςε μορφι εξιςώςεων το ςφςτθμα : Αλγόρικμοσ m(). Διαβάηουμε τθν τιμι του ( θ διάςταςθ του Πίνακα Α )..

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

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 9 θ & 10 θ Διάλεξθ Ιδεατι Μνιμθ Μζροσ Β

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 9 θ & 10 θ Διάλεξθ Ιδεατι Μνιμθ Μζροσ Β 1 ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ 9 θ & 10 θ Διάλεξθ Ιδεατι Μνιμθ Μζροσ Β 2 ελιδοποίθςθ με Χριςθ Ιδεατισ Μνιμθσ (1/5) Ο όροσ ιδεατή μνήμη ςυνικωσ ςχετίηεται με ςυςτιματα τα οποία εφαρμόηουν ςελιδοποίθςθ, παρόλο που

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

Ιςοηυγιςμζνα δζντρα και Β- δζντρα. Δομζσ Δεδομζνων

Ιςοηυγιςμζνα δζντρα και Β- δζντρα. Δομζσ Δεδομζνων Ιςοηυγιςμζνα δζντρα και Β- δζντρα Δομζσ Δεδομζνων Περιεχόμενα Ιςοηυγιςμζνα δζντρα Μζκοδοι ιςοηφγιςθσ δζντρων Μονι Περιςτροφι Διπλι Περιςτροφι Β - δζντρα Ιςοηυγιςμζνα δζντρα Η μορφι ενόσ δυαδικοφ δζντρου

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

Πωσ δθμιουργώ φακζλουσ;

Πωσ δθμιουργώ φακζλουσ; Πωσ δθμιουργώ φακζλουσ; Για να μπορζςετε να δθμιουργιςετε φακζλουσ ςτο χαρτοφυλάκιό ςασ ςτο Mahara κα πρζπει να μπείτε ςτο ςφςτθμα αφοφ πατιςετε πάνω ςτο ςφνδεςμο Mahara profiles από οποιοδιποτε ςελίδα

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

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο) Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο) Ιοφνιοσ 2013 Περιεχόμενα: Ειςαγωγή... 3 1.Εθνικό Τυπογραφείο... 3 1.1. Είςοδοσ... 3 1.2. Αρχική Οθόνη... 4 1.3. Διεκπεραίωςη αίτηςησ...

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

Virtualization. Στο ςυγκεκριμζνο οδηγό, θα παρουςιαςτεί η ικανότητα δοκιμήσ τησ διανομήσ Ubuntu 9.04, χωρίσ την ανάγκη του format.

Virtualization. Στο ςυγκεκριμζνο οδηγό, θα παρουςιαςτεί η ικανότητα δοκιμήσ τησ διανομήσ Ubuntu 9.04, χωρίσ την ανάγκη του format. Virtualization Στο ςυγκεκριμζνο οδηγό, θα παρουςιαςτεί η ικανότητα δοκιμήσ τησ διανομήσ Ubuntu 9.04, χωρίσ την ανάγκη του format. Το virtualization πρόκειται για μια τεχνολογία, θ οποία επιτρζπει το διαχωριςμό

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

Αρχέσ και λειτουργίεσ του OpenACC

Αρχέσ και λειτουργίεσ του OpenACC Πανεπιςτιμιο Δυτικισ Μακεδονίασ Σμιμα Μθχανικϊν Πλθροφορικισ & Σθλεπικοινωνιϊν Αρχέσ και λειτουργίεσ του OpenACC Παναγιωτίδου Παναγιϊτα ΑΜ:729 1 Επιβλζπων Κακθγθτισ: Δρ. Μθνάσ Δαςυγζνθσ Άδειεσ Χρήςησ Σο

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

Παράςταςη ςυμπλήρωμα ωσ προσ 1

Παράςταςη ςυμπλήρωμα ωσ προσ 1 Δρ. Χρήστος Ηλιούδης Θζματα διάλεξησ ΣΤ1 Προςθεςη αφαίρεςη ςτο ΣΤ1 2 ή ΣΤ1 Ονομάηουμε ςυμπλιρωμα ωσ προσ μειωμζνθ βάςθ R ενόσ μθ προςθμαςμζνου αρικμοφ Χ = ( Χ θ-1 Χ θ-2... Χ 0 ) R ζναν άλλον αρικμό Χ'

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

ΗΛΕΚΣΡΟΝΙΚΗ ΤΠΗΡΕΙΑ ΑΠΟΚΣΗΗ ΑΚΑΔΗΜΑΪΚΗ ΣΑΤΣΟΣΗΣΑ

ΗΛΕΚΣΡΟΝΙΚΗ ΤΠΗΡΕΙΑ ΑΠΟΚΣΗΗ ΑΚΑΔΗΜΑΪΚΗ ΣΑΤΣΟΣΗΣΑ ΗΛΕΚΣΡΟΝΙΚΗ ΤΠΗΡΕΙΑ ΑΠΟΚΣΗΗ ΑΚΑΔΗΜΑΪΚΗ ΣΑΤΣΟΣΗΣΑ Οδηγός Χρήσης Εφαρμογής Ελέγχου Προσφορών Αφοφ πιςτοποιθκεί ο λογαριαςμόσ που δθμιουργιςατε ςτο πρόγραμμα ωσ Πάροχοσ Προςφορϊν, κα λάβετε ζνα e-mail με

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΕΛΟΠΟΝΝΗΣΟΥ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΕΛΟΠΟΝΝΗΣΟΥ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Δίκτυα Επικοινωνιϊν ΙΙ Διδάςκων: Απόςτολοσ Γκάμασ (Διδάςκων ΠΔ 407/80) Βοθκόσ Εργαςτθρίου: Δθμιτριοσ Μακρισ Ενδεικτική Λύση 2

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

Μονάδες 6. Μονάδες ΓΑΨΕ Δεν υπάρχει ρίηα 2. ΑΝ Α>0 ΤΟΤΕ 3. ΤΕΛΟΣ_ΑΝ 4. ΑΛΛΙΩΣ 5. ίηα Τ_(Α)

Μονάδες 6. Μονάδες ΓΑΨΕ Δεν υπάρχει ρίηα 2. ΑΝ Α>0 ΤΟΤΕ 3. ΤΕΛΟΣ_ΑΝ 4. ΑΛΛΙΩΣ 5. ίηα Τ_(Α) 50 Χρόνια ΦΡΟΝΣΙΣΗΡΙΑ ΜΕΗ ΕΚΠΑΙΔΕΤΗ ΑΒΒΑΪΔΗ-ΜΑΝΩΛΑΡΑΚΗ ΠΑΓΚΡΑΣΙ : Φιλολάου & Εκφαντίδου 26 : Σηλ.: 2107601470 ΔΙΑΓΩΝΙΣΜΑ : ΑΝΑΡΤΥΞΗ ΕΦΑΜΟΓΩΝ ΣΕ ΡΟΓΑΜΜΑΤΙΣΤΙΚΟ ΡΕΙΒΑΛΛΟΝ Γϋ ΛΥΚΕΙΟΥ 2011 ΘΕΜΑ Α I. Η ςειριακι

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

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

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

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

Ιδιότθτεσ πεδίων Γενικζσ.

Ιδιότθτεσ πεδίων Γενικζσ. Οι ιδιότθτεσ των πεδίων διαφζρουν ανάλογα με τον τφπο δεδομζνων που επιλζγουμε. Ορίηονται ςτο κάτω μζροσ του παρακφρου ςχεδίαςθσ του πίνακα, ςτθν καρτζλα Γενικζσ. Ιδιότθτα: Μζγεκοσ πεδίου (Field size)

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