Επιμερισμός δεδομένων



Σχετικά έγγραφα
Κατανεμημένος και Παράλληλος Προγραμματισμός MPI. MPI Απλές εντολές 03/13/2016. Οδηγίες αποστολής / παραλαβής μηνυμάτων, Υπολογισμός του π (

Σωληνωτή επεξεργασία

Εμπειρική αποτίμηση παράλληλων προγραμμάτων

Παραλληλισμός δεδομένων ή Φυσικός παραλληλισμός

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

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

Ταξινόμηση με συγχώνευση Merge Sort

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Εργαστήριο 2: Πίνακες

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

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

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1

Πληροφορική 2. Αλγόριθμοι

Κατανεμημένος και Παράλληλος Προγραμματισμός. Εισαγωγή στο MPI. Εγκατάσταση MPICH σε ένα ΗΥ 10/3/2017

που θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η

Διάλεξη 04: Παραδείγματα Ανάλυσης

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

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

ύο μηχανισμοί απαιτούνται: 1. Μία μέθοδος για τη δημιουργία διεργασιών

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Διδάσκων: Παναγιώτης Ανδρέου

Η βασική συνάρτηση προγράμματος main()

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

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

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

Περιεχόμενα. Πρόλογος... 17

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

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

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

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

Αναδρομικοί Αλγόριθμοι

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

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

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

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

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

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

Διδάσκων: Παναγιώτης Ανδρέου

Εργαστηριακή Άσκηση 1

Εργαστήριο 6: Αναζήτηση, Ανάλυση Πολυπλοκότητας

Εκφωνήσεις ασκήσεων εργαστηρίου 1

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

Προγραµµατισµός. Αναδροµή (1/2)

Αλγόριθμοι και πολυπλοκότητα Ταχυταξινόμηση (Quick-Sort)

Δοµές Δεδοµένων. 10η Διάλεξη Ταξινόµηση. E. Μαρκάκης

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

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

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

Εισαγωγή στην Ανάλυση Αλγορίθμων

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

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

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

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

Αλγόριθμοι Ταξινόμησης Μέρος 1

Κατανεμημένος και Παράλληλος Προγραμματισμός MPI. Γρήγορος οδηγός αναφοράς 1/4/2017

Αναδρομή Ανάλυση Αλγορίθμων

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

Ηβασικήσυνάρτηση προγράμματος main()

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Κεφάλαιο : Επαναλήψεις (for, do-while)

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

Network Algorithms and Complexity Παραλληλοποίηση του αλγορίθμου του Prim. Αικατερίνη Κούκιου

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

Αλγόριθμοι και πολυπλοκότητα Διαίρει και Κυρίευε

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

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

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

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ

Σημειώσεις δεύτερης εβδομάδας

Συναρτήσεις. Εισαγωγή

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

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων

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

Πληροφορική 2. Δομές δεδομένων και αρχείων

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

2. Στοιχεία Αρχιτεκτονικής Παράλληλων Υπολογιστών... 45

Αλγόριθμοι και Πολυπλοκότητα

Περαιτέρω για Συναρτήσεις

2 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

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

Γλώσσα Προγραμματισμού C

Transcript:

Επιμερισμός δεδομένων Διαίρει και βασίλευε Κ.Γ. Μαργαρίτης προσαρμογή από το μάθημα του Barry Wilkinson ITCS 4145/5145 2006Cluster Computing Univ. of North Carolina at Charlotte

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

Παραδείγματα Πολλές περιπτώσεις: Πράξεις σε αριθμητικά συμβολικά ανύσματα Αλγόριθμοι ταξινόμησης - αναζήτησης Αριθμητική ολοκλήρωση Πρόβλημα N-σωμάτων 4.2

Άθροιση n αριθμών 4.3

Κατασκευή δένδρου 4.4

Διαίρεση λίστας σε υπο-λίστες 4.5

Μερικά αθροίσματα 4.6

Ταξινόμηση δοχείου (Bucket sort) Κάθε δοχείο συλλέγει αριθμούς σε κάποιο εύρος. Μέσα σε καθε δοχείο η ταξινόμηση είναι ακολουθιακή.. Πολυπλοκότητα ακολουθιακής ταξινόμησης: O(nlog(n/m). Δουλεύει καλά αν οι αταξινόμητοι αριθμοί είναι ομοιόμορφα κατανεμημένοι, ας πούμε στο διάστημα 0 to a - 1. 4.9

Απλή παραλληλοποίηση Ένα δοχείο για κάθε επεξεργαστή. 4.10

Περισσότερος παραλληλισμός Η αταξινόμητη ακολουθία διαιρείται σε p τμήματα. Κάθε επεξεργαστής ελέγχει ένα τμήμα. Κάθε επεξεργαστής έχει 1 μεγάλο δοχείο, για τη περιοχή του. Κάθε επεξεργαστής έχει p μικρά δοχεία, ένα για κάθε τμήμα. Κάθε επεξεργαστής τοποθετεί τους αριθμούς του τμήματός του στα μικρά δοχεία του. Τo i (i=1,..p) μικρό δοχείο κάθε επεξεργαστή αδειάζει στο μεγάλο δοχείο του i (i=1,..p) επεξεργαστή. Κάθε μεγάλο δοχείο ταξινομείται στον επεξεργαστή του. Τα ταξινομημένα δοχεία συντίθενται με τη σειρά του επεξεργαστή. 4.11

Περισσότερος παραλληλισμός (συν.) 4.12

all-to-all broadcast Μια συνάρτηση MPI που μπορεί να εφαρμοστεί σ' αυτή τη περίπτωση. Στέλενει ένα διαφοτερικό στοιχείο από κάθε διεργασία προς κάθε άλλη διεργασία. Αντιστοιχεί σε πολλαπλές συναρτήσεις διανομής (scatter). Καλύτερα all-to-all scatter?

From: http://www.mhpcc.edu/training/workshop/parallel_intro/main.html 4.14

Εφαρμογή all-to-all broadcast για το άδεισμα μικρών δοχείων στα μεγάλα Έστω 4 τμήματα και 4 επεξεργαστές Μικρό δοχείο Μεγάλο δοχείο 4.13

Το all-to-all broadcast μεταφέρει γραμμές πίνακα σε στήλες: Αναστροφή πίνακα. 4.14

Αριθμητική ολοκλήρωση Υπολογισμός επιφάνειας κάτω από μια καμπύλη. Επιμερισμός της επιφάνειας σε μικρά τμήματα (παραλληλισμός). Μπορεί να εφαρμοστεί και divide and conquer, δηλ. αναδρομικός επιμερισμός της επιφάνειας.

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

Αριθμητική ολοκλήρωση: κανόνας τραπεζίου Συγκρίσιμο με τη προηγούμενη μέθοδο, για μικρό βήμα. 4.16

Προσαρμοστικός τετραγωνισμός Το βήμα προσαρμόζεται στη κλήση της καμπύλης. Γίνεται χρήση τριών επιφανειών, A, B, και C. Τερματισμός για max(a, B) ~ min(a, B) + C ή C ~ 0. 4.17

Εσφαλμένος τερματισμός Προσοχή στο επιλεγόμενο βήμα. Μπορεί να οδηγήσει σε εσφαλμένο τερματισμό (C = 0). 4.18

Πρόγραμμα MPI για τον υπολογισμό τού π 3.19

#include <math.h> #include <stdio.h> #include "mpi.h void printit(); /*include files*/ /*function prototypes*/ int main(int argc, char *argv[]) { double actual_pi = 3.141592653589793238462643; /*for comparison*/ int n, rank, num_proc, i; double temp_pi, calc_pi, int_size, part_sum, x; char response = 'y', resp1 = 'y'; MPI_Init(&argc, &argv); 4.20

MPI_Comm_size(MPI_COMM_WOLD, &num_proc); MPI_Comm_rank(MPI_COMM_WOLD, &rank); if (rank == 0) printit(); /*I am master, print out welcome*/ while (response == 'y') { if (resp1 == 'y') { if (rank == 0) { /*I am master*/ printf ("\nenter no. of intervals: (0 will exit)\n"; scanf("%d",&n); } } else n = 0; MPI_Bcast(&n, 1, MPI_INT, 0); /*broadcast n*/ if (n==0) break; /*check for quit condition*/ 4.21

else { int_size = 1.0/(double) n; part_sum = 0.0; /*interval size*/ for (i = rank + 1; i <= n; i += num_proc) { /* partial sums */ x = int_size * ((double)i - 0.5); part_sum += (4.0 / (1.0 + x*x)); } temp_pi = int_size * part_sum; /* collect all partial sums compute pi */ MPI_Reduce (&temp_pi, &calc_pi, 1, MPI_DOUBLE MPI_SUM, 0); 4.22

if (rank == 0) { /*I am master*/ printf ("\n pi is approximately %f", calc_pi); printf ("\n Error is %f", fabs(calc_pi - actual_pi); } } /* end else */ if (rank == 0) { /*I am master*/ printf ("\ncompute with new intervals? (y/n) :"); scanf ("%c",&resp1); } } /*end while*/ MPI_Finalize(); return 0; } /*end main*/ 4.23

/* functions */ void printit() { printf ( "\n********************************" ); printf ( "\nwelcome to the pi calculator!" ); printf ( "\nyou set the number of divisions" ); printf ( "\nfor estimating the integral:" ); printf ( "\n\tf(x)=4/(1+x^2)" ); printf ( "\n********************************" ); } /*end printit*/ 4.24

Πρόβλημα N-Σωμάτων Εύρεση θέσεων και κινήσεων ουρανίων σωμάτων που υφίστανται βαρυτικές έλξεις από άλλα σώματα, με χρήση των νόμων του Νεύτονα. 4.25

Εξισώσεις προβλήματος Ν-σωμάτων Η βαρυτική έλξη μεταξύ δύο σωμάτων με μάζες m a and m b είναι: όπου G η σταθερά της βαρύτητας και r η απόσταση μεταξύ των δύο σωμάτων. Σύμφωνα με το 2ο νόμο του Νεύτονα το κάθε σώμα κινείται με ταχύτητα που ορίζεται από: F = ma όπου m είναι η μάζα του σώματος, F η δύναμη που υφίσταται και α η επιτάχυνση που προκύπτει. 4.26

Λεπτομέρειες Έστω το χρονικό διάστημα Δt. Για σώμα μάζας m, η δύναμη είναι: Η νέα ταχύτητα: όπου v t+1 είναι η ταχύτητα τη χρονική στιγμή t + 1 και v t είναι η ταχύτητα τη χρονική στιγμή t. Στο χρονικό διάστημα Δt η θέση αλλάζει: όπου x t είναιs η θέση του σώματος τη χρονική στιγμή t. Μετά τη μετακίνηση των σωμάτων οι δυνάμεις αλλάζουν, άρα οι υπολογισμοί πρέπει να επαναληφθούν. 4.27

Ακολουθιακός κώδικας Overall gravitational N-body computation can be described by: /* for each time period */ for (t = 0; t < tmax; t++){ for (i = 0; i < N; i++) { /*for each body*/ F = Force_routine(i); /*force on body*/ v[i]new = v[i] + F * dt / m; /*velocity*/ x[i]new = x[i] + v[i]new * dt; /*position*/ } } for (i = 0; i < N; i++) { /* for each body */ x[i] = x[i]new; /*update position*/ v[i] = v[i]new; /*update velocity*/ } 3.28

Παράλληλος κώδικας Ο ακολουθιακός αλγόριθμος απαιτεί O(N 2 ) πράξεις (για κάθε επανάληψη) καθώς κάθε ένα από τα N σώματα επηρρεάζεται από τα άλλα N - 1 σώματα. Ο αλγόριθμος είναι αποδοτικός μόνο για σχετικά μικρά Ν αλλά στα ενδιαφέροντα προβλήματα το N είναι πολύ μεγάλο. 4.29

Ο φόρτος μπορεί να μειωθεί με την αντικατάσταση μιας συστοιχίας απομακρυσμένων σωμάτων από ένα μόνο σώμα με μάζα ίση με το άθροισμα των μαζών και θέση στο κέντρο μάζας της συστοιχίας: 4.30

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

Αλγόριθμος Barnes-Hut (συν.) Δημιουργεί οκταδικό δένδρο (octtree) κάθε κόμβος έχει μέχρι οκτώ κλάδους. Τα φύλλα είναι υπο-κύβοι του ενός σώματος. Η συνολική μάζα και το κέντρο μάζας κάθε υποκύβου αποθηκεύεται σε κάθε κόμβο. Ξεκινάμε από τα φύλλα και προχωρούμε προς τη ρίζα.. 4.32

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

Αναδρομική διαίρεση στις 2 διαστάσεις. 4.34

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