ΕΠΙΣΤΗΜΟΝΙΚΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Ι Ευστράτιος Γαλλόπουλος Καθηγητής ΗΥ343 Τµήµα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήµιο Πατρών Φθινόπωρο 2011 c 2011, Ευστράτιος Γαλλόπουλος Προλεγόµενα Στο ϐιβλίο αυτό περιέχεται ύλη για τη διδασκαλία του Επιστηµονικού Υπολογισµού. ΄Οπως ϑα διαπιστώσετε, η πλειοψηφία των «επιστηµονικών υπολογισµών» ανάγονται σε προβλήµατα της υπολογιστικής γραµµικής άλγεβρας. ΄Ετσι η εισαγωγή στα ϑέµατα του επιστηµονικού υπολογισµού γίνεται χρησιµοποιώντας την περιοχή αυτή σαν όχηµα. Το µεγαλύτερο µέρος της ύλης που περιέχεται στο τεύχος αυτό καλύπτεται στο µάθηµα «Επιστηµονικός Υπολογισµός I» που διδάσκεται στο τρίτο έτος του τµήµατος Μηχανικών Η/Υ και Πληροφορικής του Πανεπιστηµίου Πατρών. Τα πιο εξειδικευµένα τµήµατά του έχουν επίσης χρησιµοποιηθεί στην Υπολογιστική Γραµµική ΄Αλγεβρα καθώς και σε παραδόσεις ειδικών ϑεµάτων Επιστηµονικού Υπολογισµού. Το µάθηµα στο ∆ιαδίκτυο Η ηλεκτρονική σελίδα http://scgroup.hpclab.ceid.upatras.gr/class/sc.html. είναι αναπόσπαστο τµήµα του µαθήµατος καθώς περιέχει απαραίτητα στοιχεια (περιεχόµενα διαλέξεων, ανακοινώσεις, ϐαθµολογία, προβλήµατα και ασκήσεις, παραδείγµατα, on-line πληροφορίες και πηγές, ϐιβλιογραφία, προγράµµατα, κλπ.) Η σελίδα ανανεώνεται συνεχώς. Για τη Γλώσσα Είναι γνωστό ότι η Πληροφορική δοκιµάζει την ευελιξία κάθε γλώσσας. Τα Ελληνικά δεν αποτελούν εξαίρεση. Στις σηµειώσεις αυτές προτίµησα να επιχειρήσω την µετάφραση των αγγλικών όρων και να περιλάβω την αγγλική ορολογία σε παρένθεση όταν ο ελληνικός όρος είναι αδόκιµος. Επίσης δεν µετέϕρασα τα καθιερωµένα αρκτικόλεξα (όπως RISC και SVD). Για τις µαθηµατικές συναρτήσεις χρησιµοποιούνται τα αγγλικά σύµβολα, π.χ. cos αντί για «συν»1 . Για τη δόκιµη µετάφραση των αγγλικών όρων χρησιµοποιήθηκαν τα παρακάτω λεξικά2 : Λ1 «Αγγλοελληνικό Λεξικό Μαθηµατικών ΄Ορων» των Α. Καλογεροπούλου, Μ. Γκίκα, ∆. Καραγιαννάκη και Μ. Λάµπρου (εκδ. Τροχαλία : Αθήνα 1992), Λ2 «Αγγλοελληνικόν Λεξικόν των Θεωρητικών και Εφηρµοσµένων Μαθηµατικών» του Μεµά Κολαΐτη (εκδ. Τεχνικού Επιµελητηρίου της Ελλάδος : Αθήνα, 1976). Επισηµαίνουµε εδώ ότι µεταφράζουµε τον όρο matrix ως «µητρώο» γιατί ϑεωρούµε ότι έτσι αποδίδει και µεταφέρει καλύτερα στον αναγνώστη τον αλγεβρικό λογισµό που επιτρέπουν µεταβλητές αυτού του τύπου. Η επιλογή αυτή είναι διαφορετική από τη συνηθισµένη, αλλά λανθασµένη, κατά την άποψή µας, πρακτική αρκετών συγγραφέων που χρησιµοποιούν τον όρο «πίνακας» και άθελά τους δηµιουργούν σύγχυση µε παραπλήσιους (αλλά διαφορετικούς από το µητρώο) όρους όπως array και table. ΄Αποψή µας είναι ότι µια πολύ πιο εύστοχη χρήση του όρου «πίνακας» είναι για τις δοµές δεδοµένων που χρησιµοποιούνται για τα µητρώα και τα διανύσµατα. Σηµειώνουµε ότι σε προηγούµενες εκδόσεις του ϐιβλίου χρησιµοποιούσαµε τον επίσης επιτυχηµένο, κατά τη γνώµη µας, νεολογισµό «µητρείο» του 1 Η πρακτική αυτή ακολουθείται και σε άλλα συγγράµµατα, ϐλ. για παράδειγµα τα συγγράµµατα των ∆ουγαλή-Ακρίβη και Strang που αναφέρονται πιο κάτω. 2 Με παχειά στοιχεία αναφέρεται η σύντµηση που χρησιµοποιείται στο κείµενο όταν αναφερόµαστε στα λεξικά αυτά. 4 Μ. Κολαΐτη3 . ∆είτε τη σχετική συζήτηση στον πρόλογο της ελληνικής µετάφρασης του ϐιβλίου του Alan Laub, «Ανάλυση µητρώων για επιστήµονες και Μηχανικούς», εκδ. Κλειδάριθµος, Αθήνα, 2009, όπου αποδεικνύεται από τις ιστορικές πηγές ότι το 1851, ο J.J. Sylvester εµπνεύσθηκε τον όρο matrix από τη «γονεϊκή µήτρα». Σχετικά µε την παρακολούθηση και τα «προαπαιτούµενα» Από τη ϕύση του, ο Επιστηµονικός Υπολογισµός στηρίζεται στην πρόοδο που έχει γίνει σε πολλούς τοµείς στην επιστήµη και στην τεχνολογία των Η/Υ. Εποµένως, για την πληρέστερη κατανόηση του µαθήµατος, ϑα ήταν χρήσιµη η εξοικείωσή σας µε τα ακόλουθα : α) ΗΥ110 (2ο εξ.): Γραµµική ΄Αλγεβρα, ϐ) ΗΥ240 (4ο εξ.): Αριθµητική Ανάλυση και Περιβάλλον Υλοποίησης. Χρησιµοποιούνται επίσης στοιχεία από το ΗΥ261 (3ο εξ.) (Αρχιτεκτονική Υπολογιστών) και το ΗΥ205 (Εισαγωγή στους Αλγόριθµους). Με τη σειρά του, το µάθηµα προσφέρει γνώσεις που ϑα είναι χρήσιµες σε όσους ϑελήσουν να ασχοληθούν µε το συ-σχεδιασµό και την αναπτύξη αλγορίθµων για υπολογισµούς µεγάλης κλίµακας και µε την υλοποίησή τους σε αξιόπιστα προγράµµατα σε σύγχρονες αρχιτεκτονικές. Εφόσον γνωρίζετε ήδη τα στοιχεία της Γραµµικής ΄Αλγεβρας, π.χ. στο επίπεδο του συγγράµµατος Εισαγωγή στη Γραµµική ΄Αλγεβρα του G. Strang, Εκδόσεις Παν/µιου Πατρών (2006) για το (ϐ) µπορείτε να συµβουλευτείτε το σύγγραµµα Εισαγωγή στην Αριθµητική Ανάλυση των Γ.∆. Ακρίβη και Β.Α. ∆ουγαλή, Παν/κές Εκδόσεις Κρήτης (1997) ή το «Αριθµητική Ανάλυση» του Μ.Ν. Βραχάτη, Εκδ. Ελληνικά Γράµµατα, Αθήνα, 2002. ΄Οπως ϑα διαπιστώσετε, η ϕύση του αντικειµένου είναι τέτοια που επιβάλλει την ταυτόχρονη διδασκαλία της ϑεωρίας µε την πειραµατική διαδικασία στο εργαστήϱιο. Οι εργαστηριακές ασκήσεις ϑα γίνουν χρησιµοποιώντας κατά κύριο λόγο το (εξαιρετικά διαδεδοµένο και δηµοφιλές) περιβάλλον MATLAB (έκδοση version 7). Χρήσιµο ϐοήθηµα για το εργαστήριο και τη σύνδεσή του µε την ύλη του µαθήµατος είναι το ϐιβλίο του εµπνευστή και σχεδιαστή της MATLAB, Cleve Moler Αριθµητικές Μέθοδοι µε το MATLAB, εκδ. Κλειδάριθµος, 2010. Πολλά εγχειρίδια και on-line tutorials για το µάθηµα ϑα ϐρείτε στο διαδίκτυο και ιδιαίτερα στην ιστοσελίδα της Mathworks. Σας προτείνω να δείτε κάποια από αυτά. Μπορείτε επίσης να κατεβάσετε και να πειραµατιστείτε µε αντίστοιχο λογισµικό που είναι δηµόσια διαϑέσιµο. Αναφέροµαι στο περιβάλλον Scilab που προσφέρει παρόµοιες λειτουργίες µε τη MATLAB, αλλά διατίθεται δωρεάν (από www.scilab.org/) καθώς και στο περιβάλλον Octave (δείτε στο http://www.gnu.org/software/octave/) που είναι «κλώνος» του MATLAB. Πηγές Πέραν της διεθνούς ϐιβλιογραφίας, ϐασικές πηγές µας για τα ϑέµατα αριθµητικής και υπολογισµών µε µητρώα είναι τα παρακάτω ϐιβλία : 1 N.J. Higham. Accuracy and Stability of Numerical Algorithms. SIAM, Philadelphia, 2002, 2nd. ed. 2) G. Golub and C. F. Van Loan. Matrix Computations. The Johns Hopkins University Press, Baltimore, third edition, 1996. 3) J. Demmel, Applied Numerical Linear Algebra, SIAM, 1997. Συνιστούµε επίσης και το C.W. Ueberhuber. Numerical Computation, volumes 1 and 2. Springer, Berlin, 1997, για µια εκτενέστερη παρουσίαση στο πνεύµα του µαθήµατος. Ασκήσεις Το τέλος κάθε κεφαλαίου περιλαµβανει και ένα τµήµα ασκήσεων, διαµορφωµένες σε τρεις ενότητες. Η πρώτη ενότητα περιέχει «ερωτήσεις αυτοα3 ∆είτε και τη σ. 1xvii της εισαγωγής του Λ2 σχετικά µε αυτήν την επιλογή. 5 ξιολόγησης» που συνήθως απαιτούν λίγο χρόνο και χώρο για να απαντηθούν. Η δεύτερη περιέχει προβλήµατα που απαιτούν πιο διεξοδικές απαντήσεις. Η τρίτη ενότητα περιέχει εργαστηριακές ασκήσεις. Σε µερικές περιπτώσεις, οι απαντήσεις δίδονται µόνο περιληπτικά ή υπό σε γενικές γραµµές ή αναφέρονται στο ϐιβλίο. Ορισµένες από τις ασκήσεις είναι άλυτες ενώ µερικές ϕορές οι απαντήσεις µπορεί να είναι µακρύτερες λόγω των επιπλέον σχολίων (συχνά σε µικρότερη γραµµατοσειρά). Πολλές από τις ασκήσεις προέρχονται από ϑέµατα εξετάσεων και εργαστηριακών ασκήσεων παλαιότερων ετών ενώ ορισµένες έχουν αντληθεί από τη διεθνή ϐιβλιογραφία. Ευχαριστώ ϑερµά όσους ϐοήθησαν στο σχεδιασµό αυτών των ασκήσεων µε τις υποδείξεις και διορθώσεις τους και ιδιαίτερα τους Λουκά Γεωργιάδη, ∆ηµήτρη Ζεϊµπέκη, Βασίλη Καλαντζή, ΄Εφη Κοκιοπούλου, Γιάννη Κουτή, Κώστα Μπέκα, Τάσο Σιδηρόπουλο και Γιώργο Τσιρογιάννη. Ευχαριστώ επίσης τους ϕοιτητές του µαθήµατος που µε τις απαντήσεις τους και παρατηρήσεις τους ορισµένες ϕορές ϐοήθησαν στην κατασκευή «αποτελεσµατικότερων» απαντήσεων. Η προετοιµασία των ασκήσεων υποστηρίχθηκε από ένα Επιχειρησιακό Πρόγραµµα Εκπαίδευσης και Αρχικής Επαγγελµατικής Κατάρτισης (ΕΠΕΑΕΚ). Ευχαριστίες Ευχαριστώ όλους τους ϕοιτητές που διάβασαν προηγούµενες εκδοχές και εκδόσεις του ϐιβλίου. Θέλω όµως να κάνω και ιδιαίτερη µνεία στους Α. Αναγνωστόπουλο, Γεώργιο Γερούτη, Σωτήρη Γκέκα, Γιάννη ∆αγκλή, Σ. Νικολάου, Απόστολο Παπαγεωργίου, Ανδρέα Παπαγεωργίου, Πέτρο Παπακωνσταντίνο, Ευστρατία Περγκαντή, Νικόλαο Πουλοκέφαλο, Τάσο Σιδηρόπουλο, Ευστράτιο Συκκά, ΄Αλκη Τσιλιµαντό και Αλεξία Τσουµάνη που µε εκτεταµένες γραπτές παϱατηρήσεις και διορθώσεις συνεισέφεραν σηµαντικά στη ϐελτίωση του κειµένου. Σηµαντική ήταν και η συµβολή των µεταπτυχιακών ϕοιτητών και διδασκόντων που έχουν προσφέρει επικουρικό έργο τα προηγούµενα χρόνια κατ΄ αρχήν τους ∆ηµήτρη Ζεϊµπέκη, Κώστα Μπέκα και Γιώργο Κόλλια, που στήριζαν το µάθηµα για πολλά χρόνια, καθώς και τους Γιώργο ∆ρακόπουλο, Βασίλη Καλοφωλιά, ΄Εϕη Κοκιοπούλου, Γιάννη Κουτή, Γιώργο Τσιρογιάννη, Κυριάκο Πετράκο και Ηλία Τσιγαρίδα για την πολύτιµη ϐοήθειά τους. Οι σηµειώσεις αυτές γράφτηκαν χρησιµοποιώντας το πακέτο ελληνικών του LaTEX καθώς και της συµβολοσειράς Kerkis που ανέπτυξε ο κ. Απόστολος Συρόπουλος τον οποίο και ευχαριστώ και για τις τις χρήσιµες συµβουλές του. Παράκληση Οι ϱαγδαίες επιστηµονικές και τεχνολογικές εξελίξεις που Ϲούµε στη σηµερινή εποχή αφορούν σε µεγάλο ϐαθµό και στον Επιστηµονικό Υπολογισµό. ΄Ετσι, αρκετά ϑέµατα που αναφέρονται στο παρόν ϐιβλίο αναθεωρούνται τακτικά. Επίσης, όσα σφάλµατα εντοπίζονται, διορθώνονται άµεσα και ανακοινώνονται µέσω της οικοσελίδας του µαθήµατος, όπου ϐρίσκεται πάντα και η πιο πρόσφατη εκδοχή του ϐιβλίου. Στη διαδικασία αυτή, οι υποδείξεις και παρατηρήσεις σας είναι πάντα ευπρόσδεκτες και χρήσιµες. Ε. Γαλλόπουλος Οκτώβριο 2011 Πάτρα Περιεχόµενα 1 Εισαγωγή 1.1 Οριοθετήσεις . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Εφαρµογές . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Αξιολόγηση . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 Περιβάλλον Υλοποίησης . . . . . . . . . . . . . . . . . . 1.4.1 Υλικό και Αρχιτεκτονική . . . . . . . . . . . . . . 1.4.2 Γλώσσες, µεταφραστές, και Περιβάλλοντα Επίλυσης µάτων . . . . . . . . . . . . . . . . . . . . . . . . 1.5 Αντί ανακεφαλαίωσης . . . . . . . . . . . . . . . . . . . 1.6 Ερωτήσεις αυτοαξιολόγησης . . . . . . . . . . . . . . . . 1.7 Προβλήµατα . . . . . . . . . . . . . . . . . . . . . . . . 1.8 Εργαστηριακές ασκήσεις και εργασίες . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . Προβλη. . . . . . . . . . . . . . . . . . . . . . . . . 3 . 3 . 5 . 8 . 13 . 13 . . . . . 15 16 18 19 20 2 ΠΕΡΙΕΧΟΜΕΝΑ Κεφάλαιο 1 Εισαγωγή 1.1 Οριοθετήσεις Είναι πλέον κοινός τόπος πως µετά τη Θεωρία και το Πείραµα, ο Υπολογισµός µε ΗΥ1 αποτελεί το τρίτο µεθοδολογικό εργαλείο στην έρευνα και στην ανάπτυξη της Επιστήµης και της Τεχνολογίας. Παραθέτουµε χαρακτηριστικά αποσπάσµατα από σχετικές αναφορές : Στα µέσα του 1980 συστήθηκε στις ΗΠΑ µία επιτροπή για να να εξετάσει τις τότε ανάγκες σε Υπολογιστικά Μαθηµατικά, Αλγόριθµους και Λογισµικό και να προσδιορίσει τρόπους µελλοντικής δράσης. Τα πορίσµατα της επιτροπής δηµοσιεύθηκαν στην έκθεση ‘‘Future Directions in Computational Mathematics, Algorithms and Scientific Software’’. Η έκθεση αρχίζει ως εξής : «The use of modern computers in scientific and engineering research and development over the last three decades has led to the inescapable conclusion that a third branch of scientific methodology has been created. It is now widely acknowledged that, along with the traditional theoretical and experimental methodologies, advanced work in all areas of science and technology has come to rely critically on the computational approach.» (Από το [31]). ‘‘It is becoming clear that dramatic increases in computing power are necessary but insufficient to making high-performance computing a reality. Necessary is also the construction of a large body of applications capable of using that computational power effectively’’ (Στο [4] από τους Alpern και Carter2 .) ‘‘It is essential to recognize the fact that computer experiments can both be a two-way bridge between Physical Experiments and Mathematical Models, as well as an independent source of physical understanding. Such experiments have a mind-bending potential for future explorations of nature’s secrets, which is only vaguely recognized today.’’ (Από το άρθρο 1 Επιλογισµός, δηλ. υπολογισµός µε ΗΥ σύµφωνα µέ το Λ2. Οι Bowen Alpern και Larry Carter ήταν Computer Scientists στα εργαστήρια της IBM στα Yorktown Heights. Ο Carter είναι τώρα καθηγητής στο University of California, San Diego (UCSD). 2 3 4 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ του Jackson3 [22]). Ο καθένας διατηρεί ασφαλώς την ανάµνηση των εργαστηριακών µαθηµάτων στο λύκειο : έπρεπε, µε ϐάση το προτεινόµενο πείραµα, να επαληθεύσουµε µετρήσεις, οι οποίες στη συνέχεια µεταφέρονταν σ΄ ένα διάγραµµα, επιτρέποντας έτσι να συµπεράνουµε το νόµο. Μ΄ αυτόν τον τρόπο, ελάχιστα δεδοµένα επέτρεπαν να καταλήξουµε σε σπουδαία αποτελέσµατα. Σήµερα, οι τεχνολογίες επαληθεύουν για µας τις παρατηρήσεις και τις µετρήσεις αυτών των παρατηρήσεων, αυτόµατα και σε πραγµατικό χρόνο, και στη συνέχεια καταγράφουν χωρίς περιορισµούς δυνατοτήτων αυτά τα δεδοµένα. Σε σηµείο που ένα πρόγραµµα συνίσταται στο να καλεί τους χρήστες υπολογιστών σ΄ ολόκληρο τον κόσµο για να συνδέσει περίπου δύο εκατοµµύρια µηχανήµατα και να µπορέσει έτσι να επεξεργαστεί τα δεδοµένα. Κατά συνέπεια, αλλάζουµε επίσης επιστηµονικό υπόδειγµα : η σηµερινή επιστήµη δεν έχει πλέον καµία σχέση µε εκείνη η οποία υπήρχε πριν από µερικές δεκαετίες. (Από άρθρο του Michel Serres4 [34]) Η διατµηµατικότητα του ΕΥ δυσκολεύει τη διατύπωση ενός ικανοποιητικού ορισµού για το πεδίο. Μερικοί τον εξισώνουν µε την αριθµητική ανάλυση, και άλλοι µε το δυσκολοµετάφραστο επίσης όρο computational science and engineering· ϐλ. επίσης τα σχόλια στο άρθρο «Computational Science and Engineering» [12]. Αναφέρουµε τον πλατύ ορισµό που έχει δοθεί από τους Golub και Ortega5 στο [14, σελ. 2]: ‘‘Scientific computing is the collection of tools, techniques, and theories required to solve on a computer mathematical models of problems in science and engineering’’. Θα λάβουµε την παρακάτω ϑέση : Στον Επιστηµονικό Υπολογισµό (ΕΥ) µας ενδιαφέρουν ο σχεδιασµός, η ανάπτυξη, και η χρήση αποδοτικών υπολογιστικών εργαλείων που ϐοηθούν στην πρακτική επίλυση των µαθηµατικών µοντέλων της επιστήµης και της τεχνολογίας. Η έµφαση στη λύση προβληµάτων που συνήθως προέρχονται από άλλες επιστήµες δεν πρέπει να µας ξενίζει. Αντιστοιχεί µάλιστα στην περιοχή του Mathematical Modelling που περιγράφεται ως «αντιµετώπιση ϱεαλιστικών προβληµάτων εκτός των Μαθηµατικών» [5, π. 220]. Ο σχεδιασµός και χρήση των εργαλείων του ΕΥ πρέπει να λαµβάνει υπόψη τη ϕυσική και τα µαθηµατικά του προβλήµατος καθώς και το περιβάλλον υλοποίησης (αρχιτεκτονική, λογισµικό, κλπ.) Στο µάθηµα του Γ΄ έτους ϑα µας απασχολήσουν κυρίως ο σχεδιασµός και η υλοποίηση επιστηµονικού λογισµικού. Θα εξετάσουµε επίσης τη δοµή σύγχρονων πακέτων επιστηµονικού υπολογισµού. 3 Ο Atlee Jackson είναι ϕυσικός και διευθύνει το Center for Complex Systems Research στο Beckmann Center του University of Illinois at Urbana-Champaign. Είναι επίσης µέλος του Santa Fe Insitute. 4 Ο Michel Serres είναι ϕιλόσοφος και µέλος της Γαλλικής Ακαδηµίας 5 Ο Gene Golub ήταν ο ιδρυτής του προγράµµατος του ΕΥ στο Stanford και ο James Ortega είνα καθηγητής στο University of Virginia. 5 1.2. ΕΦΑΡΜΟΓΕΣ Πίνακας 1.1: Αντιστοιχία εφαρµογών µε αριθµητικές µεθόδους· ϐασισµένη στον [26] 1 2 3 4 5 6 7 8 9 10 κβαντοχηµεία . . . * . . . * * * προσοµοίωση καιρού . . . . * * . . . . ϱευστοδυναµική * . * . * * * . . . γεωδαιτικά δίκτυα * * . . . . . . . . αντίστροφα προβλήµατα . * . . * . . . . . δοµική µηχανική * . * * . . . . . . προσοµοίωση ηλεκτρικών στοιχείων * . * . . * * . * . προσοµοίωση κυκλωµάτων * . * . . . . * . . ηλεκτροµαγνητισµός * * * * * * * . . . οικονοµία/παράγωγα * * * . . . . * * * ανάκτηση πληροφορίας * * . * . . . . . . επεξεργασία σήµατος κ. εικόνας * * * * * * * . . * αλγ. πρβλ. στο ∆ιαδίκτυο * . . * . . . . . . 1. 3. 5. 7. 9. γραµµικά συστήµατα µη γραµµικά συστήµατα ταχείς µετασχηµατισµοί (FFT, κλπ) πολυπλεγµατικές (=multigrid) µέθοδοι µέθοδοι Monte Carlo 1.2 2. γραµµ. συσ/µατα και πρβλ. ελαχ. τετραγ. 4. πρβλ. ιδιοτιµών για αραιά µητρώα 6. ταχείς ελλειπτικοί επιλυτές 8. άκαµπτες συνήθεις ∆Ε 10. ολοκληρωµατικοί µετασχηµατισµοί Εφαρµογές Οι πιο σηµαντικές κατηγορίες χρήσεων τεχνικών του ΕΥ είναι οι εξής : 1) η προσοµοίωση, 2) η ανάλυση δεδοµένων (εικόνα, ήχος), 3) η υπολογιστική υποστήριξη των γραφικών, και 4) οι εφαρµογές που απαιτούν ανταπόκριση σε πραγµατικό χρόνο. Η προσοµοίωση σε Η/Υ, για παράδειγµα, έχει καταστεί οµότιµος τρόπος επιστηµονικής έρευνας καθώς σε πάρα πολλές περιπτώσεις, τα πειράµατα δεν αποτελούν επιλογή π.χ. λόγω κόστους, επικινδυνότητας, καταστροφικών επιπτώσεων, κ.λπ. ∆είτε αν ϑέλετε για παράδειγµα τις αναφορές στο πρόγραµµα Scentific Discovery through Advanced Computing6 . Στον Πίνακα 1.1, µικρή παραλλαγή του οποίου δηµοσιεύθηκε στο άρθρο [26], παρουσιάζεται κατάλογος από σηµαντικές εφαρµογές από την επιστήµη και την τεχνολογία και τα υπολογιστικά προβλήµατα που πρέπει να λυθούν στις εφαρµογές αυτές. Αξίζει να σηµειωθεί ότι οι εφαρµογές που απαριθµούνται στον πίνακα επιλέχθηκαν επειδή απαιτούν σηµαντική υπολογιστική υποστήριξη. Οι συγγραφείς του [26] (όπου παρουσιάστηκε µια πρώτη µορφή του πίνακα) είχαν την ιδέα ότι για την αντιµετώπιση των µεγάλων υπολογιστικών προβληµάτων πρέπει πρώτα να αναλυθούν προσεκτικά οι υπάρχοντες κώδικες7 ώστε να ϕανεί ξεκάθαρα ποιά τµήµατα του κώδικα έχουν το µεγαλύτερο κόστος. ΄Οταν γίνει αυτό, µπορούµε να διακρίνουµε δύο κατηγορίες προβληµάτων. 1) Αυτά που επιταχύνονται ικανοποιητικά µέσω των ϐελτιστοποιήσεων που επιτυγχάνει ο µεταφραστής (restructuring compiler) αυτόµατα ή µε τη ϐοήθεια του προγραµµατιστή· και 2) αυτά τα οποία α6 http://science.energy.gov/ascr/research/scidac/ 7 Χαρακτηρίζονται ως «παραδοσιακοί» (= legacy) ή «σκονισµένοι» (= dusty-deck) κώδικες. 6 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ παιτούν την χρήση πληροφορίας «υψηλότερου επιπέδου» για την αποτελεσµατική τους επιτάχυνση· π.χ. µαθηµατικής πληροφορίας για την κατασκευή ταχύτερου αλγορίθµου. Προκύπτει ότι για να επιταχύνουµε τον κώδικα πρέπει να χρησιµοποιήσουµε 1. αποτελεσµατικότερους αλγόριθµους µέσω της αξιοποίησης της µαθηµατικής πληροφορίας, και 2. αποτελεσµατικότερη µετάφραση. Ο πίνακας 1.1 αναδεικνύει τις υπολογιστικές ανάγκες που µοιράζονται πολλές εφαρµογές. Εποµένως καθίσταται σηµαντική η ϐελτιστοποίηση αυτών των υπολογισµών, οι οποίοι ενίοτε αποκαλούνται χαρακτηριστικά και υπολογιστικοί πυρήνες (= computational kernels). Για παράδειγµα, πάρα πολλές εφαρµογές απαιτούν µετασχηµατισµούς Fourier ενώ άλλες απαιτούν τη λύση πολύ µεγάλων γραµµικών συστηµάτων. Στην πρώτη περίπτωση χρησιµοποιούνται αλγόριθµοι που υλοποιούν τον ταχύ µετασχηµατισµό Fourier (το περίφηµο FFT) ενώ στη δεύτερη αλγόριθµοι για την αριθµητική επίλυση γραµµικών συστηµάτων (η απαλοιφή Gauss είναι µία από τις µεθόδους που έχουµε στη διάθεσή µας). Οι κοινές ανάγκες των εφαρµογών αποτελούν κίνητρο για τη δηµιουργία ϐιβλιοθηκών επιστηµονικού λογισµικού. Η δηµιουργία τέτοιων ϐιβλιοθηκών (που να είναι αποτελεσµατικές και εύχρηστες) είναι από τα σηµαντικά ϑέµατα που απασχολούν την ευρύτερη περιοχή του επιστηµονικού υπολογισµού. Επισηµαίνουµε εδώ ότι οι έξι πρώτες κατηγορίες υπολογιστικών πυρήνων που απαριθµούνται στον πίνακα είναι ή ανάγονται σε προβλήµατα της γραµµικής άλγεβρας. Οι Επτά+ Νάνοι Περί το 2005, ο Phil Collela από το Berkeley έκανε την υπόϑεση ότι οι περισσότεροι αριθµητικές µέθοδοι µπορούν να ταξινοµηθούν σε έναν µικρό αριθµό (7, σε πρώτη προσέγγιση) από κλάσεις. Αυτές οι κλάσεις ονοµάστηκαν χαρακτηριστικά Νάνοι. Κάθε κλάση περιέχει υπολογισµούς που παρουσιάζουν παρόµοιο τύπο υπολογισµών και επικοινωνίας (ο κύριος στόχος, όπως και των ερευνητών που συνέταξαν τον πίνακα 1.1, ήταν η εύρεση µεθοδολογίας για παραλληλοποίηση). Οι κλάσεις αυτές επεκτάθηκαν αργότερα σε 13 [6]. Απαριθµούµε τις 7 πρώτες κλάσεις και πληροφορίες γι΄ αυτές. 1. Γραµµική ΄Αλγεβρα για Πυκνά Προβλήµατα Πυκνά δεδοµένα (µητρώα, διανύσµατα). Συνήθως η πρόσβαση στη µνήµη γίνεται µε διασκελισµό (stride) 1 για τις γραµµές και µεγαλύτερο για τις στήλες. ΄Οπως ϑα δούµε στο Κεφάλαιο ;;, τυπικά παραδείγµατα είναι τα BLAS-1 (πράξεις µεταξύ διανυσµάτων), BLAS-2 (πράξεις µεταξύ µητρώων και διανυσµάτων) και BLAS-3 (πράξεις µεταξύ µητρώων). 2. Γραµµική ΄Αλγεβρα για Αραιά Προβλήµατα Τα δεδοµένα περιέχουν πολλά µηδενικά και αποθηκεύονται σε συµπιεσµένη µορφή (π.χ. compressed sparse row) για να µειωθούν οι ανάγκες για µνήµη και επικοινωνία. Λόγω της συµπίεσης, η πρόσβαση στα δεδοµένα (LOAD, STORE) συνήθως γίνεται µε έµµεση δεικτοδότηση. 3. Φασµατικές Μέθοδοι Τα δεδοµένα είναι στο πεδίο συχνοτήτων. Συνήθως, οι ϕασµατικές µέθοδοι χρησιµοποιούν πολλαπλές ϕάσεις ‘πεταλούδας’ που συνδυάζουν πράξεις πολλαπλασιασµού-άθροισης και ειδικές µεταθέσεις, επικοινωνία µεταξύ όλων (all-to-all) για µερικές ϕάσεις και αυστηρά τοπική για άλλες. 1.2. ΕΦΑΡΜΟΓΕΣ 7 4. Μέθοδοι N -σωµάτων Εξαρτώντα από τις αλληλεπιδράσεις µεταξύ διακριτών σηµείων. Συµπεριλαµβάνουν µεθόδους particle-particle, όπου κάθε σηµείο εξαρτάται από όλα τα άλλα και οδηγούν σε υπολογισµούς πολυπλοκότητας O(N 2 ) καθώς και ιεραρχικές µεθόδους που συνδυάζουν δυνάµεις ή δυναµικά από πολλά σηµεία που οδηγούν σε πολυπλοκότητα O(N logN ) ή και O(N ). 5. ∆οµηµένα Πλέγµατα Αναπαρίστανται µε κανονικά πλέγµατα, όπου τα σηµεία ανανεώνονται ταυτόχρονα. ΄Εχουν µεγάλη τοπικότητα χώρου. Το πλέγµα µπορεί να διαιρεθεί σε πιο λεπτά πλέγµατα σε περιοχές ειδικού ενδιαφέροντος (προσαρµοσµένη εκλέπτυνση). Η µετάβαση µεταξύ πλεγµάτων διαφορετικής λεπτότητας µπορεί να γίνεται δυναµικά. 6. Αδόµητα Πλέγµατα Μη κανονικά πλέγµατα όπου οι ϑέσεις των σηµείων εξαρτώνται από το πρόβληµα. Η ϑέση των σηµείων και η συνδέσεις των γειτονικών σηµείων πρέπει προσδιορίζεται ϱητά. Τα σηµεία ανανεώνονται ταυτόχρονα αλλά απαιτεί συνήθως πολλά επίπεδα έµµεσης δεικτοδότησης καθώς χρειάϹεταιο πρώτα να καθοριστούν τα γειτονικά σηµεία και µετά να ϕορτωθούν οι τιµές τους. 7. Μόντε Κάρλο Οι υπολογισµοί είναι «προφανώς παράλληλοι» και εξαρτώνται από στατιστικές που προέρχονται από επαναλαµβανόµενες τυχαίες δοκιµές. Παρατήρηση 1.2.1. Αν σας εκπλήσσει ότι κατατάσσουµε ακόµα και τους (διακριτούς) µετασχηµατισµούς Fourier στη γραµµική άλγεβρα, λέµε από τώρα - αν δεν το ξέρετε ήδη - ότι πρόκειται για έναν πολλαπλασιασµό µητρώου µε διάνυσµα και ότι ο αποκαλούµενος ταχύς µετασχηµατισµός Fourier είναι ένας τρόπος για να επιταχύνουµε τον πολλαπλασιασµό εκµεταλλευόµενοι την ειδική δοµή του µητρώου. Περισσότερα για το ϑέµα αυτό ϑα δούµε στο Κεφάλαιο ;;. Για τους παραπάνω λόγους, µεγάλο µέρος του µαθήµατος του Επιστηµονικού Υπολογισµού το αφιερώνουµε στο σχεδιασµό µεθόδων για την αποτελεσµατική επίλυση προβληµάτων της γραµµικής άλγεβρας που παρουσιάζονται στις µεγάλες εφαρµογές. Για µια ενδιαφέρουσα περιγραφή εφαρµογών που απαιτούν υπολογισµούς µεγάλης κλίµακας (και που πολλές ϕορές αποκαλούνται «Μεγάλες Προκλήσεις της Υπολογιστικής Επιστήµης8 » ) ϐλ. [24, 32]. Σηµειώνουµε πως αν και οι περισσότερες εφαρµογές που αναφέρονται στον πίνακα 1.1 προέρχονται από µοντέλα των ϕυσικών επιστηµών και της τεχνολογίας, σηµαντικά προβλήµατα ΕΥ προκύπτουν και στις οικονοµικές και κοινωνικές επιστήµες καθώς ϐέβαια και στην άκρως διεπιστηµονική περιοχή που µελετά το ∆ιαδίκτυο, τον Παγκόσµιο Ιστό και όλα τα παρεµφερή ϑέµατα. Για παράδειγµα, µια τοπική ή εθνική οικονοµία µπορεί να µοντελοποιηθεί µε πίνακες που αναπαριστούν τις συνδιαλλαγές ανάµεσα στους τοµείς της· π.χ. το ποσό παραγωγής πετρελαίου, χάλυβα και µηχανολογικών εργαλείων σε µια ϐιοµηχανική οικονοµία σχετίζεται µε την παραγωγή αυτοκινήτων. Τυχούσες αυξοµείωσεις στην παραγωγή σε έναν τοµέα της οικονοµίας πρέπει να συνοδεύονται από αντίστοιχη αύξηση ή µείωση στην ανάπτυξη τοµέων που εξαρτώνται (καταρχήν άµεσα αλλά και έµµεσα) από αυτόν. Αυτές οι σχέσεις παριστώνται µε πίνακες 8 Grand Challenges of Computational Science [21]. 8 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ «εισόδου-εξόδου» (=input-output tables). Για την ανάλυση αυτών των πινάκων χρησιµοποιούνται µεθόδοι της αριθµητικής γραµµικής άλγεβρας 9 . Μεγάλο υπολογιστικό ενδιαφέρον συγκεντρώνει και η αριθµητική επίλυση των εξισώσεων που µοντελοποιούν και αποτιµούν εξειδικευµένα προϊόντα των χρηµαταγορών, όπως τα παράγωγα (= financial derivatives). 1.3 Αξιολόγηση Τα κύρια κριτήρια που χρησιµοποιούνται σήµερα για την αξιολόγηση των εργαλείων του επιστηµονικού υπολογισµού συνοψίζονται στις παρακάτω λέξεις : 1. Ακρίβεια 2. Ταχύτητα 3. Κόστος 4. Ενέργεια Ακρίβεια Πρώτα Ϲητούµε να υπολογίζονται «σωστές» απαντήσεις. Πέραν των γνωστών ϑεµελιωδών εµποδίων που υπάρχουν για την απόδειξη της πιστότητας κάθε προγράµµατος, στον ΕΥ εµφανίζονται και περαιτέρω δυσκολίες. Ενδεικτικός είναι και ο τίτλος µιας οµιλίας του John Rice (Purdue University)10 : ‘‘What is an Answer?’’ Εξηγούµε : Στην πλειοψηφία τους, τα προβλήµατα του ΕΥ έχουν σαν αφετηρία µαθηµατικά µοντέλα που περιγράφονται µε κάποιο συνδυασµό διαφοϱικών, ολοκληρωµατικών και αλγεβρικών εξισώσεων. Θεµελιώδη ϱόλο παίζει η συνέχεια, η οποία µόνο προσεγγιστικά µπορεί να µοντελοποιηθεί στον υπολογιστή. Εποµένως, συνήθως απαιτείται η διακριτοποιήση του προβλήµατος, δηλ. των εξισώσεων, του χώρου ορισµού και των οριακών συνθηκών. Στην καλύτερη περίπτωση, η λύση είναι µια «καλή» προσέγγιση της πραγµατικής λύσης του αρχικού µαθηµατικού προβλήµατος. Επιλύοντας το πρόβληµα στον υπολογιστή έχουµε να αντιµετωπίσουµε σφάλµατα που οφείλονται 1) στα δεδοµένα, 2) στη διακριτοποίηση των εξισώσεων, 3) στη διακριτοποίηση των πραγµατικών αριθµών µε αριθµούς κινητής υποδιαστολής (α.κ.υ) και στις περιορισµένης ακρίβειας, αριθµητικές πράξεις µε αυτούς τους αριθµούς. 4) Στον περιορισµό της «πεπερασµένης επανάληψης» στις επαναληπτικές µεθόδους για την εύρεση αποτελέσµατος, λ.χ. των ϱιζών µη γραµµικής εξίσωσης, των ιδιοτιµών ενός µητρώου, κλπ. Στις µεθόδους αυτές ϐασιζόµαστε στη «σύγκλιση», αλλά στον υπολογιστή είµαστε υποχρεωµένοι να σταµατήσουµε τις επαναλήψεις όταν κάποιος δείκτης µέτρησης σφάλµατος γίνει αρκετά µικρός. 5) Σε δεδοµένα ή ενδιάµεσα αποτελέσµατα τα οποία δεν έχουν προβλεφθεί από τη λογική της µεθόδου επίλυσης. Εφόσον είναι σχεδόν αδύνατο να αποφευχθούν τα σφάλµατα, πρέπει να έχουµε τη δυνατότητα να εκτιµήσουµε την επίδρασή τους στο τελικό αποτέλεσµα. Εφόσον δεν έχουµε απεριόριστους πόρους και χρόνο, στην αξιολόγηση και σύγκριση των αποτελεσµάτων πρέπει να συνυπολογίσουµε το κόστος µε το οποίο επιτυγχάνεται 9 Την µέθοδο αυτή την εισήγαγε ο Wassily Leontief (ϐραβείο Νόµπελ οικονοµικών) [28] και χρησιµοποιήθηκε εκτενέστατα στις ΗΠΑ και στην (πρώην) ΣΕ. 10 Στο πλαίσιο του συνεδρίου HERMIS, Αθήνα 1996. 1.3. ΑΞΙΟΛΟΓΗΣΗ 9 η ακρίβεια της λύσης. Σηµειώνουµε ότι δεν είναι λογικό να περιµένουµε απαντήσεις οι οποίες έχουν µεγαλύτερη ακρίβεια από αυτήν των στοιχείων εισόδου ή από αυτήν που µπορεί να µετρηθεί στο πλαίσιο της εφαρµογής. Σηµειώνουµε ότι η εκτίµηση των σφαλµάτων (στρογγύλευσης) τα οποία οφείλονται στην α.κ.υ. ήταν από τα πρώτα προβλήµατα που απασχόλησαν τους πρωτοπόρους ερευνητές του ΕΥ. Τα αρχικά τους συµπεράσµατα ήταν απογοητευτικά και παραπλανητικά, π.χ. η αρχική µελέτη του σφάλµατος στην απαλοιφή Gauss από τον Hotelling [19], έδειχνε ότι αν επιλύσουµε n εξισώσεις, το σφάλµα στην τελική απάντηση µπορεί να είναι ίσο µε 4n επί το σφάλµα µιας στρογγύλευσης. Αυτό οδήγησε τον John von Neumann και την οµάδα του να απορρίψουν αρχικά µια µέθοδο που σήµερα ϑεωρείται η πιο σηµαντική για την επίλυση γραµµικών συστηµάτων11 . Αντιγράφουµε τη σχετική παράγραφο από το [7]: In the elimination method a series of n compound operations is performed each of which depends on the proceeding. An error at any stage affects all succeeding results and may become greatly magnified; this explains roughly why instability should be expected. It should be noticed that at each step a division is performed by a number whose size cannot be estimated in advance and which might be so small that any error in it would be greatly magnified by division... για την οποία ελέχθη αργότερα από τον «πατέρα» της µοντέρνας ανάλυσης σφαλµάτων, John Wilkinson, ότι ‘‘almost every statement in it is either wrong or misleading’’. Ευτυχώς όµως, η πρακτική εµπειρία από την χρήση της απαλοιφής ερχόταν σε αντίθεση µε την απαισιόδοξη πρόβλεψη των αρχικών µελετών. ΄Οπως µας πληροφορεί ο στενός συνεργάτης του von Neumann, Herman Goldstine, αυτή η σοβαρή αντίθεση, οδήγησε τον von Neumann και άλλους (συµπεριλαµβανοµένου και του Turing), να εξετάσουν το πρόβληµα από διαφορετική σκοπιά, και να επιβεβαιώσουν τελικά την αξία της απαλοιφής Gauss [13]· ϐλ. επίσης [17]. Λέµε επίσης (παραφράζοντας τον Oscar Wilde) ότι Το µόνο χειρότερο από το να µην πάρουµε καµµία απάντηση είναι να πάρουµε λανθασµένη απάντηση. Με άλλα λόγια, τα εργαλεία µας κρίνονται από το κατά πόσο µας ενηµερώνουν για την ποιότητα των απαντήσεων, π.χ. αν µας προειδοποιούν ότι τα σφάλµατα των απαντήσεων υπερβαίνουν κάποια επιτρεπτά όρια. Εδώ ϐλέπουµε το παράδοξο και τη δυσκολία του εγχειρήµατος : Πως δηλαδή να διεξάγουµε τέτοιες µελέτες όταν δεν γνωρίζουµε την πραγµατική λύση (αν την ξέραµε δεν ϑα είχαµε λόγο να προχωρήσουµε στην αριθµητική επίλυση !) Προφανώς πρέπει να αποφασίσουµε να εγκαταλείψουµε τις ελπίδες για την εύρεση του πραγµατικού σφάλµατος, και να αρκεστούµε σε ϕράγµατα, όπως στην εύρεση άνω ϕράγµατος για το µέγιστο λάθος. 11 «Μετρίου» µεγέθους. 10 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ Ταχύτητα As soon as an Analytical Engine exists, it will necessarily guide the future course of science. Whenever any result is sought by its aid, the question will then arise - By what course of calculation can these results be arrived at by the machine in the shortest time? .... του Charles Babbage, [Passages from the Life of a Philosopher, 1864] Αναζητούµε µεθόδους που λύνουν τα προβλήµατα στον ελάχιστο δυνατό χρόνο. Προσέξτε ότι δεν διασαφηνίζουµε τι εννοοείται ως χρόνος επίλυσης. Για παράδειγµα, ϑα µπορούσε να είναι ο χρόνος που αναµένουµε µέχρι να επιστραφούν (time to solution). τα τελικά αποτελέσµατα ή το cpu time. Ο χρόνος επίλυσης καθορίζει επίσης την αποδοτικότητα της µεθόδου και του υπολογιστικού συστήµατος. Αναφέρουµε εξαρχής ότι η πρόοδος που έχει επιτευχθεί στη δραµατική µείωση του χρόνου επίλυσης µεγάλων προβληµάτων και η δυνατότητα αντιµετώπισης σήµερα ολοένα και πιο σύνθετων, πολύ µεγάλης κλίµακας, είναι αποτέλεσµα της συνέργειας πολλών παραγόντων που αγγίζουν όλες τις πλευρές (υλικό, λογισµικό, ϑεωρία και εφαρµογές) της επιστήµης και τεχνολογίας των Η/Υ12 . Για παράδειγµα, είναι λάθος ο ισχυρισµός ότι η πρόοδος στην επίλυση µεγάλων προβληµάτων έχει επιτευχθεί αποκλειστικά επειδή «οι υπολογιστές έγιναν γρηγορότεροι». Για παράδειγµα, χωρίς κατάλληλο λογισµικό υποστήριξης (µεταφραστή και Λ/Σ), δεν ϑα ήταν αποτελεσµατική η αξιοποίηση των πόρων του συστήµατος και ϑα το υποχρησιµοποιούσαµε. Για να χρησιµοποιήσουµε την αναλογία µε τα αυτοκίνητα, δεν αρκεί να έχεις µια Φόρµουλα Ι. Για να αξιοποιήσεις τις δυνατότητές της, πρέπει να ξέρεις να την κουµαντάρεις. Παρόµοια, ένας αλγόριθµος χαµηλής πολυπλοκότητας δεν είναι πρακτικά χρήσιµος ωσότου υπάρξει υλοποίησή του σε πρόγραµµα που µπορεί να αξιοποιήσει τους πόρους του συστήµατος. Για παράδειγµα (όπως ϑα δούµε και σε επόµενο κεφάλαιο) υπάρχουν αλγόριθµοι για τον πολλαπλασιασµός µητρώων µεγέθους n × n που χρειάζονται µόνον O(n2.376 ) αριθµητικές πράξεις (ο αλγόριθµος των Coppersmith και Winograd) όµως δεν χρησιµοποιείται ποτέ στην πράξη ! Παραθέτουµε ενδεικτικά έναν ενδιαφέροντα πίνακα 1.2 µε στοιχεία που αϕορούν στους παράγοντες που συµβάλλουν στην επιτάχυνση της επίλυσης προϐληµάτων του Επιστηµονικού Υπολογισµού13 Αν και ορισµένους όρους που αναφέρονται ϑα τους µάθετε σε επόµενα κεφάλαια, και παρόλη την «ηλικία» του, ϑεωρούµε ότι ο πίνακας είναι αρκετά αποκαλυπτικός. Το λογισµικό του ΕΥ πρέπει να σχεδιάζεται µε τρόπο που να συνδυάζει τις επιταχύνσεις που προσφέρει το κάθε επίπεδο ϐελτιστοποίησης. Μια δυσκολία στο εγχείρηµά µας αυτό είναι η ποικιλία και γρήγορη εξέλιξη των αρχιτεκτονικών ΗΥ. Για παράδειγµα, συµβαίνει ένας αλγόριθµος που ϑεωρείται αργός ή µη πρακτικός σε µια αρχιτεκτονική, να είναι ο αλγόριθµος που ϑα επιλέξουµε για µια άλλη. Εποµένως, δεν πρέπει να προκαλεί έκπληξη το γεγονός ότι η µελέτη διαφορετικών αρχιτεκτονικών ΗΥ (π.χ. διανυσµατική επεξεργασία, παραλληλία) αποτέλεσε έναυσµα για τον σχεδιασµό νέων υπολογιστικών εργαλείων και για την επανεξέταση των ήδη υπαρχόντων15 . Σηµαντικό εµπόδιο στις 12 Τα πολλά, σχετικά, προαπαιτούµενα του µαθήµατος είναι ενδεικτικά αυτής της απαραίτητης συνέργειας 13 Τα στοιχεία προέρχονται από την µελέτη ‘‘The Federal High Performance Computing Program’’ που έγινε για λογαριασµό του προέδρου των ΗΠΑ το 1989. 14 Οι Alpern και Carter χρησιµοποιούν και τον όρο performance programming [4]. 15 Για το ϑέµα αυτό αξίζει να διαβαστεί το εµπνευσµένο άρθρο του Beresford Parlett [29]. 11 1.3. ΑΞΙΟΛΟΓΗΣΗ Είδος υλικό λογισµικό υλοποίηση14 (αλγ. + λογισµ. + αρχιτ.) αρχιτεκτονική αλγόριθµος Παράδειγµα ταχύτητα επεξεργαστή µεταφραστές (vectorizing compilers) BLAS1 → BLAS3 παραλληλία FFT Τάξη επιτάχυνσης O(1) ϐάθος pipe Ο(1) Ο(αριθµ. επεξ.) Ο(n/ log n) Πίνακας 1.2: Συµβολή στην επιτάχυνση επίλυσης προβληµάτων αναλύσεις είναι και η έλλειψη πρακτικά αποδεκτών µοντέλων για τις νέες αρχιτεκτονικές : π.χ. τα µοντέλα RAM και PRAM δεν µπορούν να δώσουν ικανοποιητικές αναλύσεις των αλγορίθµων. Αξίζει να σηµειωθεί ότι προϊόντα του ΕΥ χρησιµοποιούνται ευρέως και σαν µετροπρογράµµατα (benchmarks) για την αξιολόγηση συστηµάτων ΗΥ. Αναφερόµαστε εκτενέστερα στο ϑέµα αυτό στο τέλος του Κεφαλαίου ;;. Κόστος ΄Ενα άλλο σηµαντικό κριτήριο είναι το κόστος µε το οποίο εννοούµε ϐασικά τις δαπάνες σε χρόνο και χρήµατα για το σχεδιασµό και την ανάπτυξη της µεϑόδου επίλυσης, για την προµήθεια ειδικού υλικού και λογισµικού, στο χρόνο που δαπανήθηκε για την εκσφαλµάτωση, κ.λπ. Επισηµαίνουµε ότι αυτά τα κόστη δεν είναι πάντα εύκολο να προβλεφτούν αν και έχουν µεγάλη σηµασία για την πορεία και ολοκλήρωση ενός έργου επιστηµονικού υπολογισµού. Επίσης, καθώς οι πόροι είναι συνήθως περιορισµένοι, η χρήση τους έρχεται µε κόστος το οποίο πρέπει να ληφθεί υπόψη στην επιλογή των εργαλείων και των µεθόδων. ΣχεδιάϹοντας µεθόδους που έχουν γενική χρήση και που είναι ανοικτές και επεκτάσιµες έχουµε ταχύτερη απόσβεση του κόστους και µειώνουµε το κόστος προσαρµογής της µεθόδου σε νέες ανάγκες. Αξίζει να σηµειωθεί πως µεγάλος αριθµός από προγράµµατα υψηλής ποιότητας και πιστότητας, λ.χ. η συλλογή των αλγορίθµων της ACM, το πακέτο LAPACK, κ.ά. διατίθενται ελεύθερα. Ενέργεια Energy aware algorithms are the wave of the future .... από το άρθρο των Bekas και Curioni στο [8] Σήµερα ϑεωρείται σκόπιµο να συµπεριλαµβάνονται στα κριτήρια και η ενεργειακή απόδοση των εργαλείων του ΕΥ. Είναι προφανής η σηµασία που έχει το υλικό χαµηλής κατανάλωσης για σωρεία συσκευών. Είναι ϕυσικό εποµένως να επιζητούµε το ίδιο και από τα εργαλεία λογισµικού. Σηµειώνουµε ότι µόλις πριν λίγα χρόνια, αυτό το ϑέµα τράβηξε την προσοχή του κοινού µε δηµοσιογραφικές επικεφαλίδες του τύπου Google and you’ll damage the planet (µετέφεραν µε χονδροκοµµένο τρόπο ευρήµατα ερευνών του ∆ρ. Alex Wissner-Gross σχετικά µε το ενεργειακό αποτύπωµα της αναζήτησης πληροφοριών από τον Παγκόσµιο Ιστό). Πάντως, είναι γεγονονός ότι γίνονται σηµαντικές προσπάθειες πλέον για τη µέτρηση των ενεργειακών απαιτήσεων των µεγάλων υπολογισµών και για την αξιολόγηση τους µε ϐάση αυτές. ΄Ενας τρόπος να γίνει αξιολόγηση είναι µε ϐάση την απόδοση (συνήθως σε mflop/s) ανά µονάδα ισχύος (συνήθως σε watt) (δηλ. performance per watt. Για παράδειγµα, συνηθίζεται να µετρώνται flops/watt, 12 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ δηλ. ποιά απόδοση σε flop/s επιτυγχάνεται ανά watt ισχύος (αν ενδιαφέρεστε, δείτε τα άρθρα [8, 11].). Ανακεφαλαίωση Συνοψίζουµε λέγοντας : Η αξιολόγηση των µεθόδων και των εργαλείων του ΕΥ, γίνεται µε ϐάση την ακρίβεια των αποτελεσµάτων, την ταχύτητα των υπολογισµών, το κόστος της συνολικής διαδικασίας και την ενεργειακή τους απόδοση. Σηµειώνουµε ότι η σηµασία που αναλογεί σε κάθε κριτήριο εξαρτάται από τις συνθήκες του προβλήµατος. Προφανώς ϑέλουµε τον ταχύτερο αλγόριθµο που είναι επίσης ο πιο ακριβής, ϕθηνός στο σχεδιασµό και στην υλοποίηση και µε τη µέγιστη απόδοση (υπολογιστική και ενεργειακή) σε όλα τα υπολογιστικά συστήµατα. ∆υστυχώς, τις πιο πολλές ϕορές, τα παραπάνω κριτήρια συγκρούονται µεταξύ τους και δεν είναι δυνατόν σχεδιάσουµε αλγορίθµους που τα ϐελτιστοποιούν όλα ταυτόχρονα. Εποµένως, η πρόκληση είναι να διερευνηθούν συµβιβαστικές επιλογές (trade-offs). Σε πολλές περιπτώσεις, η ακρίβεια και ο αριθµός των πράξεων µπορεί να συνδέονται µε µία αντίστροφη σχέση. Στην ακραία περίπτωση, µπορεί ορισµένοι αλγόριθµοι χαµηλής πολυπλοκότητας από τη ϑεωρία του υπολογισµού, απορρίπτονται ως µη πρακτικοί στον ΕΥ. Απαριθµούµε µερικούς από τους λόγους : 1. Η αριθµητική τους συµπεριφορά µπορεί να είναι υποδεέστερη (ϑα δούµε περισσότερα γι΄ αυτό σε επόµενα κεφάλαια). 2. Για να γίνει εµφανής η υποσχόµενη επιτάχυνση του αλγορίθµου το µέγεθος του προβλήµατος πρέπει να γίνει απαγορευτικά µεγάλο. 3. Η πολυπλοκότητα έχει υπολογισθεί µε ϐάση κάποιο ιδεατό µοντέλο προγραµµατισµού (π.χ. RAM) αλλά η υλοποίησή του αλγορίθµου οδηγεί σε σηµαντικό επιπλέον κόστος. Παράδειγµα 1.3.1. Ο ταχύς µετασχηµατισµός Fourier οδήγησε σε αλγόριθµο χαµηλότερης πολυπλοκότητας (από Ο(n2 ) σε Ο(n log n) ) ο οποίος δεν πάσχει από τα προαναφερθέντα προβλήµατα : η επιτάχυνση ήταν εµφανής για µικρό σχετικά n, η αριθµητική συµπεριφορά του αλγορίθµου ήταν ικανοποιητική και η υλοποίηση δεν εισήγαγε επιπρόσθετα προβλήµατα, µε αποτέλεσµα να χρησιµοποιείται ευρύτατα πολύ σύντοµα µετά την «ανακάλυψή» του. Παράδειγµα 1.3.2. ΄Οπως ϑα δούµε σε επόµενο κεφάλαιο ο υπερταχύς πολλαπλασιασµός µητρώων µε την µέθοδο Strassen, επιτυγχάνει πολυπλοκότητα Ο(nlog2 7 ) αντί του συνηθισµένου O(n3 ), αλλά χρησιµοποιείται σπάνια γιατί παρουσιάζει πολλές από τις αδυναµίες που περιγράψαµε. Η πραγµατικότητα όµως είναι ακόµα πιο ενδιαφέρουσα : µετά από εκτεταµένες προσπάθειες των ερευνητών, µέθοδοι τύπου Strassen έχουν αποδειχθεί πρακτικές και χρήσιµες σε ορισµένες κατηγορίες προϐληµάτων και ΗΥ ! ΄Ετσι η πρόκληση για τους ερευνητές είναι πολύ πιο ενδιαφέρουσα από την απλή ταξινόµηση των µεθοδων σε «πρακτικές» και «µη πρακτικές». Από την άλλη, µέθοδοι που είναι ακόµα πιο γρήγορες (όπως η µέθοδος των Coppersmith και Winograd) έχουν µόνον ϑεωρητικό ενδιαφέρον (δείτε π.χ. [33]). Παράδειγµα 1.3.3. 1.4. ΠΕΡΙΒΑΛΛΟΝ ΥΛΟΠΟΙΗΣΗΣ 1.4 13 Περιβάλλον Υλοποίησης Αναφέραµε από την αρχή ότι στον σχεδιασµό υπολογιστικών εργαλείων πρέπει να λαµβάνεται υπόψη το περιβάλλον υλοποίησης. Παραθέτουµε µερικά στοιχεία της σύγχρονης τεχνολογίας ΗΥ τα οποία έχουν καθοριστική επίδραση στον ΕΥ. 1.4.1 Υλικό και Αρχιτεκτονική Η µεγάλη πρόοδος στην τεχνολογία υλικού οδήγησε σε µεγάλη αύξηση της ταχύτητας των επεξεργαστών και της χωρητικότητας αποθήκευσης που παρέχεται από τα συστήµατα ΗΥ. ΄Ετσι έχουµε την δυνατότητα να αποθηκεύσουµε και να λύσουµε προβλήµατα πολύ µεγαλύτερα από αυτά που λύναµε πριν µερικά χρόνια. ΄Οπως ϑα δούµε, οι εξελίξεις στην αρχιτεκτονική των ΗΥ έχουν καθοριστική επίδραση στην ανάπτυξη και εξέλιξη του επιστηµονικού υπολογισµού. Χαρακτηϱιστικά αναφέρουµε : 1. Την αρχιτεκτονική RISC µε τα συγκεκριµένα χαρακτηριστικά : αρχεία καταχωρητών (register files), οργάνωση ϕόρτωσης-αποθήκευσης LOAD-STORE, έντονη χρήση pipelining)· ϐλ. [9] για µια διασκεδαστική και ενδιαφέρουσα παρουσίαση του προγραµµατισµού των αρχιτεκτονικών RISC. Η συγκεκριµένη παρουσίαση έχει µεγάλο επιπρόσθετο ενδιαφέρον γιατί ϐρίσκεται ακριβώς στο πνεύµα που διέπει το µάθηµα του Επιστηµονικού Υπολογισµού. 2. Την ιεραρχική οργάνωση του συστήµατος αποθήκευσης (καταχωρητές, κρυϕή µνήµη, κύρια µνήµη, δευτερεύουσα µνήµη/δίσκος). Η ιεραρχική οργάνωση απαντάται σε όλα σχεδόν τα σύγχρονα συστήµατα ΗΥ (παράλληλα και µη), και χρησιµοποιείται για την αντιµετώπιση των προβληµάτων που δηµιουργεί η άνιση ανάπτυξη της ταχύτητας των επεξεργαστών σε σχέση µε τον ϱυθµό µεταφοράς στοιχείων µεταξύ µνήµης και επεξεργαστή. Παραδείγµατος χάριν, ενώ είναι δυνατή η κατασκευή ενός επεξεργαστού σε ένα chip (single-chip processor), ο αριθµός των pins του chip και εποµένως ο ϱυθµός µεταφοράς στοιχείων από την µνήµη στον επεξεργαστή παραµένουν περιορισµένοι µε αποτέλεσµα οι σύγχρονοι single-chip επεξεργαστές να έχουν σχετικά µικρό εύρος επικοινωνίας16 ΄Ενας τρόπος να αντιµετωπισθεί αυτό το πρόβληµα είναι να διατεθεί µέρος του εµβαδού του chip για αποθήκευση. Το πλεονέκτηµα είναι ότι η on-chip µνήµη είναι προσπελάσιµη µε ϱυθµούς πολύ πιο γρήγορους από την µνήµη που είναι off-chip. Παραδείγµατα on-chip µνήµης είναι : (Αρχεία) καταχωρητών (register files). Κρυφή µνήµη εντολών (instruction cache). Κρυφή µνήµη στοιχείων (data cache). Βέβαια, το µέγεθος της µνήµης που µπορεί να τοποθετηθεί on chip είναι περιορισµένο. Για τη µείωση του κόστους των µεταφορών, ϑέλουµε να µειώσουµε ή να καλύψουµε όσο γίνεται τις αναφορές στις πιο αποµακρυσµένες µνήµες κατά την εκτέλεση των προγραµµάτων. Μερικοί τρόποι που χρησιµοποιούνται είναι η προσφόρτωση, η διαφύλλωση της µνήµης, η επικάλυψη των µεταφορών µε άλλες πράξεις· δείτε τον Πίνακα 1.3 και διαβάστε πάλι 16 Λέγεται πως οι single-chip επεξεργαστές είναι pin-bandwidth limitated. 14 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ επικάλυψη µεταφορών ϐελτίωση της απόδοσης της µνήµης αξιοποίηση τοπικότητας προφόρτωση (prefetching) διαφύλλωση (interleaving) επαναχρησιµοποίηση από την cache µεταφορά ανά cache line Πίνακας 1.3: Μέθοδοι κάλυψης του κόστους µεταφορών το ϑέµα της ιεραρχικής µνήµης από προηγούµενα µαθήµατα (π.χ. Αρχιτεκτονική Υπολογιστών) και σχετικά ϐιβλία, όπως το κλασικό σύγραµµα των Hennessy και Patterson [16]. ΄Οπως ϑα διαπιστώσετε, µέρος του µαθήµατος του ΕΥ αφορά σε τεχνικές που γίνονται στο επίπεδο του σχεδιασµού του αλγορίθµου και της υλοποίησής του σε πρόγραµµα για να αξιοποιηθεί όσο γίνεται η τοπικότητα στις αναφορές που εµπεριέχουν (π.χ. ελαχιστοποιώντας τις αστοχίες στις αναφορές στην κρυφή µνήµη). Υπενθυµίζουµε 3 είδη τοπικότητας (το τελευταίο ίσως το ϐλέπετε για πρώτη ϕορά) που µπορεί να παρουσιάζονται σε ένα πρόγραµµα : Χωρική τοπικότητα Αν Ϲητηθεί στοιχείο από τη ϑέση s, σύντοµα ϑα Ϲητηϑεί στοιχείο από παραπλήσια ϑέση. Χρονική τοπικότητα Αν Ϲητηθεί στοιχείο από τη ϑέση s, σύντοµα ϑα Ϲητηθεί πάλι το ίδιο στοιχείο Αλγοριθµική τοπικότητα ΄Οταν ένα πρόγραµµα αναφέρεται κατ΄ επανάληψη σε ορισµένα στοιχεία ή εκτελεί κάποιο τµήµα κώδικα και τα στοιχεία ή τµήµατα αυτά είναι κατανεµηµένα σε αρκετή απόσταση µεταξύ τους στους χώρους µνήµης. Για παράδειγµα, όταν απαντάται αλγοριθµική τοπικότητα, µπορούµε να προβλέψουµε τη συµπεριφορά του προγράµµατος (π.χ. ποιά ϑα είναι ή και τι ϑα Ϲητηθεί στην επόµενη εντολή) παρόλο που αυτά τα στοιχεία µπορεί να µην είναι γειτονικά (δηλ. δεν ισχύει χωρική ή χρονική τοπικότητα). ∆εν ϑα αναφερθούµε περισσότερο σε αυτό το ϑέµα, παραπέµπουµε όµως στο [23] για περισσότερες πληροφορίες. Συνοψίζοντας µπορούµε να πούµε ότι µια από τις µεγαλύτερες προκλήσεις που πρέπει να αντιµετωπίσουµε όταν σχεδιάζουµε συστήµατα υψηλής απόδοσης είναι η µετακίνηση των πληροφοριών (δεδοµένων και εντολών) µεταξύ της µνήµης και του επεξεργαστή µε ικανοποιητικό ϱυθµό. ΄Οπως ανέφερε εδώ και µια 35ετία ένας από τους σηµαντικούς ερευνητές στον χώρο του ΕΥ : ‘‘... the operation count is not necessarily an adequate figure– of–merit in comparing theoretically the value of algorithms in numerical analysis [ . . . ] Other factors, such as [ . . . ] the pattern in which memory banks of the computer are referenced, may be as important as the operation count in determining the speed of a program... ’’ [18] Σήµερα ϕαίνεται ότι αυτό ισχύει πολύ περισσότερο. ΄Οπως ανέφερε χαρακτηριστικά η καθηγήτρια Kathy Yelick του Berkeley στην παρουσίαση How HPC Hardware and Software are Evolving Towards Exascale17 το 2010 17 (δείτε http://hipacc.ucsc.edu/Lecture%20Slides/Yelick-Exascale-Astro-SD.pdf) 1.4. ΠΕΡΙΒΑΛΛΟΝ ΥΛΟΠΟΙΗΣΗΣ 15 Counting flops is irrelevant, only data movement matters 3. Την ευρύτερη διάδοση και χρήση παράλληλων συστηµάτων και άλλων αρχιτεκτονικών δοµών για αυξηµένη απόδοση, όπως οι υπερβαθµωτοί (superscalar) επεξεργαστές, οι συστάδες επεξεργαστών (= clusters), η κατανεµηµένη επεξεργασία επί δικτύων, οι τεχνολογίες Πλέγµατος (Grid) και Νέφους (Cloud) και ιδιαίτερα οι ϱαγδαίες εξελίξεις στην περιοχή των πολυπύρηνων επεξεργαστών (multicore και manycore computing) και στην τεχνολογία των συστηµάτων ειδικού σκοπού, όπως τα Graphics Processing Units (GPU) και των Field Programmable Gate Arrays (FPGA) που υποστηρίζουν πλέον πολλές εφαρµογές µε επιστηµονικούς υπολογισµούς. Πολλά από αυτά τα ϑέµατα ϑα τα διδαχθείτε σε µαθήµατα (επιλογής) του ∆΄ και Ε΄ έτους. Αξίζει να σηµειωθεί ότι πολλές από τις τεχνικές που αναπτύχθηκαν για την αποδοτική χρήση παραλληλων (και διανυσµατικών) Η/Υ, αποδείχτηκαν χρήσιµες και στο πλαίσιο των απλούστερων, µη παραλληλων, συστηµάτων που χρησιµοποιούµε καθηµερινά (π.χ. χρήση τεχνικών αναπτυγµένων για διανυσµατικούς Η/Υ σε συστήµατα ¨αρχιτεκτονικής RISC, και η αντιστοιχία παραλληλισµού µε ανταλλαγή µηνυµάτων και ιεραρχία µνήµης). Είναι σαφές επίσης πλέον ότι η παραλληλία εξελίχθηκε και από ‘ακριβή εξωτική τεχνολογία’ είναι πλέον διαθέσιµη σε όλους - σε σηµείο που σε πολλά πανεπιστήµια, η διδασκαλία του προγραµµατισµού και των αλγορίθµων συνδυάζεται από την αρχή µε τις έννοιες του παράλληλου υπολογισµού. 1.4.2 Γλώσσες, µεταφραστές, και Περιβάλλοντα Επίλυσης Προϐληµάτων ∆εν πρέπει να έχουµε αυταπάτες. Οι χρήστες επιστηµονικού και άλλου λογισµικού, κατά κανόνα, αντιµετωπίζουν τον προγραµµατισµό σαν αναγκαία ενόχληση. Αντίθετα, για αυτούς που αναπτύσσουν λογισµικό, ο σχεδιασµός έξυπνων προγραµµάτων (ϑάπρεπε να) αποτελεί µια πρόκληση για ανάπτυξη και υλοποίηση τεχνικών που µπορούν αργότερα να εφαρµοστούν και σε ευρύτερο κύκλο προβληµάτων. Η ανάπτυξη νέων µεθοδολογιών προγραµµατισµού που εφαρµόζονται σε γενικότερα προβλήµατα και όχι µόνον στις ειδικές συνθήκες ενός προβλήµατος είναι αυτό που επικυρώνει την τεχνολογία λογισµικού σαν περιοχή της επιστήµης των υπολογιστών. Από την άλλη, οι χρήστες συνήθως έχουν µικρό ενδιαφέρον να αναπτύξουν γενικές µεθοδολογίες, ή ακόµα και στις περιπτώσεις που ενδιαφέρονται, έχουν λίγο χρόνο για να το κάνουν. Είναι εποµένως αναµενόµενο, ο χρήστηςεπιστήµονας ή µηχανικός να εύχεται να είχε στη διάθεσή του κάποιο σύστηµα που µειώνει το σηµερινό «σηµαντικό χάσµα» (= semantic gap) µεταξύ των γλωσσών προγραµµατισµού και των µαθηµατικών συµβόλων. Θα ήθελε, για παράδειγµα, ένα σύστηµα που «καταλαβαίνει» τα µαθηµατικά σύµβολα που χρησιµοποιούνται στη διατύπωση των µαθηµατικών µοντέλων και που επιλύουν τα αντίστοιχα προβλήµατα. Το ϑέµα αυτό απασχόλησε τους ερευνητές από πολύ νωρίς και ϐρίσκεται στο κέντρο της περιοχής των αποκαλούµενων «Περιβαλλόντων Επίλυσης Προβληµάτων» (ΠΕΠ) (= Problem Solving Environments) (ϐλ. [20]). Σήµερα, πάρα πολλοί επιστήµονες και µηχανικοί χρησιµοποιούν περιβάλλοντα προγραµµατισµού πολύ υψηλού επιπέδου που προσφέρουν πολλά από τα στοιχεία που αναζητά κανείς στα ΠΕΠ. Κατ΄ αρχήν, η MATLAB [2], ένα σύστηµα που χρησιµοποιείται ευρύτατα από επιστήµονες και µηχανικούς καθώς και στο εργαστήριο του µαθήµατος. Αναφέρουµε, για παράδειγµα, το MATLAB [2], ένα σύστηµα που χρησιµοποιείται 16 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ ευρύτατα από επιστήµονες και µηχανικούς καθώς και στο εργαστήριο του µαθήµατος, το Mathematica [1], το Maple [3], και το Scilab [15]). Αξίζει επίσης να αναφερθεί και η πολύ µεγάλη ανάπτυξη γλωσσών scripting18 όπως η Python [27] που προσφέρουν σηµαντική υποστήριξη για τη γρήγορη ανάπτυξη κώδικα αλλά και για τη συγγραφή προγραµµάτων υψηλού επιπέδου που µπορεί να απαρτίζονται από υποπρογράµµατα γραµµένα σε διαφορετικές γλώσσες και µε διαφορετικά χαρακτηριστικά [25]. ΄Ενα σηµαντικό ερευνητικό πρόβληµα που τίθεται στην κατασκευή τέτοιων συστηµάτων είναι πως ϑα επιτευχθεί η Ϲητούµενη ευκολία προγραµµατισµού συγχρόνως µε την καλή επίδοση ; Το πρόβληµα ϐέβαια δεν είναι καινούργιο. ΄Εχει τεθεί από τότε που αντικαταστάθηκε ο προγραµµατισµός σε γλώσσα µηχανής µε προγράµµατα σε γλώσσες υψηλού επιπέδου. Χρειάστηκαν χρόνια έρευνας ώσπου να ϕθάσουµε σε αποτελεσµατικούς µεταφραστές. Αντίστοιχα, περιµένουµε ότι η έρευνα ϑα οδηγήσει σε αποτελεσµατικούς τρόπους µετάφρασης προγραµµάτων που αναπτύχθηκαν σε ΠΕΠ. Προς το παρόν πάντως, η συντριπτική πλειοψηφία των υπολογιστικών εργαλείων είναι γραµµένα σε Fortran και σε C (και παράγωγά της, π.χ. C++), σε MATLAB και σε Java. Σχετικά µε τη Fortran, έχει ενδιαφέρον του John Backus (19242007), διακεκριµένου ερευνητή, σχεδιαστή της γλώσσας καθώς και συνεφευρέτη της BNF, πως I don’t know what the technical characteristics of the standard language for scientific and engineering computation in the year 2000 will be ... but I know it will be called Fortran. Για κάθε ΗΥ, οι περισσότεροι αλγόριθµοι επιδέχονται πολλών υλοποιήσεων, ο καθένας από τους οποίους µπορεί να οδηγεί σε διαφορετική ταχύτητα επίλυσης. Για παράδειγµα, η διάταξη των εµφωλευµένων ϐρόχων επηρεάζει σε σηµαντικό ϐαθµό την ταχύτητα εκτέλεσης. Μεγάλο µέρος της έρευνας στην τεχνολογία των µεταφραστών εξετάζει µεθόδους για την αυτόµατη και ϐέλτιστη αναδιοργάνωση των ϐρόχων των προγραµµάτων ώστε να επιτυγχάνονται υψηλές επιδόσεις. Στα επόµενα κεφάλαια ϑα εξετάσουµε αρκετά τέτοια παραδείγµατα. Σε µερικές περιπτώσεις, ο µεταφραστής είναι σε ϑέση να µετατρέψει το πρόγραµµα σε µορφή που οδηγεί σε πολύ καλύτερη επίδοση19 . Οι σύγχρονοι µεταφραστές χρησιµοποιούν τεχνικές του ΕΥ για την αύξηση της αποτελεσµατικότητάς τους. Τέλος πρέπει να σηµειωθούν και οι προσπάθειες να συνεργαστεί και το λειτουργικό σύστηµα µε το µεταφραστή για την καλύτερη εκµετάλλευση των πόρων του συστήµατος. 1.5 Αντί ανακεφαλαίωσης ∆είχνουµε στο Σχήµα 1.1 τις διαφορές στους χρόνους του πολλαπλασιασµού µητρώου µεγέθους n × n µε διάνυσµα, δηλ. y ← Ax, για n = 100, 200, . . . , 2000. Οι χρονοµετρήσεις έγιναν κάτω από τις παρακάτω συνθήκες : 18 Μεταφράζεται ως «γλώσσα συγγραφής σεναρίων» ή ως το (κακόηχο) «σεναριογλώσσα». Οι µετατροπές που γίνονται συνήθως από τους µεταφραστές είναι πολύ απλές. Η κατασκευή αποτελεσµατικών µεταφραστών είναι σηµαντικό πεδίο έρευνας. Για παραδείγµατα πολύπλοκων µετασχηµατισµών ϐλ. [30, 10]. 19 1.5. ΑΝΤΙ ΑΝΑΚΕΦΑΛΑΙΩΣΗΣ 17 Σύστηµα Intel Atom N270 @ 1.6 GHz, RAM 1.48 GB, caches: level 1, 32KB; level 2, 512KB cache (write-back). Οι πληροφορίες µέσω του προγράµµατος winaudit.exe. Λογισµικό Windows XP Pro, MATLAB 7.11 (R2010b) Μετρήσεις Λήφθηκαν µε τις εντολές tic, toc. Ο πρώτος κώδικας είναι προγραµµατισµένος για πρόσβαση στα στοιχεία του A κατά γραµµές, ο δεύτερος κατά στήλες και ο τελευταίος χρησιµοποιεί την ενδογενή πράξη της MATLAB: Listing 1.1: MV κατά γραµµές 1 2 3 4 5 function [y] = mulr(A,x); [m,n]=size(A); for i=1:m y(i) = A(i,:)*x; end Listing 1.2: MV κατά στήλες 1 2 3 4 5 6 function [y] = mulc(A,x); [m,n]=size(A); y = A(:,1)*x(1); for j=2:n y = y + A(:,j)*x(j); end Listing 1.3: ενδογενής 1 2 function [y] = mulmv(A,x); y = A*x; % y = mtimes(A,x); Σχήµα 1.1: Χρόνοι για τον υπολογισµό του γινοµένου µητρώο µε διάνυσµα 18 1.6 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ Ερωτήσεις αυτοαξιολόγησης ΄Ασκηση 1.6.1. Ποιός είναι ο σκοπος του γνωστικού αντικείµενου που ονοµάϹουµε «Επιστηµονικός Υπολογισµός»; Απάντηση 1.6.1 (Βιβλίο, εν. 1.1). Στον ΕΥ µας ενδιαφέρουν ο σχεδιασµός, η ανάπτυξη, και η χρήση αποδοτικών υπολογιστικών εργαλείων που ϐοηθούν στην πρακτική επίλυση των µαθηµατικών µοντέλων της επιστήµης και της τεχνολογίας. ΄Ασκηση 1.6.2. Τι ονοµάζουµε «υπολογιστικούς πυρήνες»; Να δώσετε 3 παραδείγµατα τέτοιων πυρήνων. Απάντηση 1.6.2 (Βιβλίο, εν. 1.1). ∆ιαδικασίες (που µπορεί να είναι υποπρογράµµατα ή τµήµατα προγράµµατος που - συνήθως - αντιστοιχούν σε συγκεκριµένες µαθηµατικές διεργασίες ή υπολογισµούς) στις οποίες αναλώνεται σηµαντικό ποσοστό του χρόνου εκτέλεσης του προγράµµατος εφαρµογής που µελετούµε. Για το λόγο αυτό, ένα σηµαντικό ϐήµα στη µείωση του χρόνου εκτέλεσης ενός προγράµµατος εφαρµογής είναι η εύρεση των υπολογιστικών πυρήνων του και η επιτάχυνση της εκτέλεσής τους (π.χ. µε χρήση καλύτερου αλγορίθµου, κ.λπ.) Παραδείγµατα : α) Πολλαπλασιασµός µητρώου µε διάνυσµα, ϐ) ταχύς µετασχηµατισµός Fourier, γ) γεννήτρια τυχαίων αριθµών. ΄Ασκηση 1.6.3. Με ϐάση ποια κριτήρια αξιολογούνται τα εργαλεία του Επιστηµονικού Υπολογισµού ; Απάντηση 1.6.3 (Βιβλίο, εν. 1.3). Τα κύρια κριτήρια που χρησιµοποιούνται για την αξιολόγηση των εργαλείων του επιστηµονικού υπολογισµού είναι α) ακρίβεια, ϐ) ταχύτητα, γ) κόστος, δ) ενεργειακές ανάγκες. ΄Ασκηση 1.6.4. Να αναφέρετε τις πέντε κύριες πηγές σφαλµάτων στον επιστηµονικό υπολογισµό. Απάντηση 1.6.4 (Βιβλίο, εν. 1.3). Επιλύοντας το πρόβληµα στον υπολογιστή έχουµε να αντιµετωπίσουµε σφάλµατα που οφείλονται 1) στα δεδοµένα, 2) στη διακριτοποίηση των εξισώσεων, 3) στη διακριτοποίηση των πραγµατικών αριθµών µε αριθµούς κινητής υποδιαστολής (α.κ.υ) και στις περιορισµένης ακρίβειας, αριθµητικές πράξεις µε αυτούς τους αριθµούς. 4) Στον περιορισµό της «πεπερασµένης επανάληψης» στις επαναληπτικές µεθόδους για την εύρεση αποτελέσµατος, λ.χ. των ϱιζών µη γραµµικής εξίσωσης, των ιδιοτιµών ενός µητρώου, κλπ. Στις µεθόδους αυτές ϐασιζόµαστε στη «σύγκλιση», αλλά στον υπολογιστή είµαστε υποχρεωµένοι να σταµατήσουµε τις επαναλήψεις όταν κάποιος δείκτης µέτρησης σφάλµατος γίνει αρκετά µικρός. 5) Σε δεδοµένα ή ενδιάµεσα αποτελέσµατα τα οποία δεν έχουν προβλεφθεί από τη λογική της µεθόδου επίλυσης. ΄Ασκηση 1.6.5. Να αναφέρετε ένα σηµαντικό µετροπρόγραµµα για υπολογιστές υψηλής επίδοσης που προέρχεται από τον επιστηµονικό υπολογισµό. Απάντηση 1.6.5 (Βιβλίο, εν. 1.3). Τα προγράµµατα εκείνα της ϐιβλιοθήκης και LAPACK που αποσκοπούν στην επίλυση γενικού γραµµικού συστήµατος µεγέθους n. Συνηθισµένη τιµή του n είναι το 1000. ΄Ασκηση 1.6.6. Να αναφέρετε τρία σηµαντικά χαρακτηριστικά/τάσεις στις σύγχρονες αρχιτεκτονικές που έχουν επιδράσει άµεσα στο σχεδιασµό των αλγόριθµων για τον επιστηµονικό υπολογισµό. Απάντηση 1.6.6 (Βιβλίο, εν. 1.4). Είναι α) η αρχιτεκτονική RISC, ϐ) η ιεραρχική µνήµη, γ) οι παράλληλες, δικτυακές και πολυπύρηνες αρχιτεκτονικές. 19 1.7. ΠΡΟΒΛΗΜΑΤΑ 1.7 Προβλήµατα Pn−1 ΄Ασκηση 1.7.1. ΄Εστω το πολυώνυµο p(x) = j=0 αj xj όπου αn−1 6= 0. α) Να δείξετε ότι ο υπολογισµός των τιµών του σε m σηµεία ζ1 , ..., ζm µπορεί να εκφραστεί σαν πολλαπλασιασµός µητρώου V µε διάνυσµα a. Ειδικότερα, να γράψετε τα V και a. ϐ) Να γράψετε αλγόριθµο τύπου Horner, π.χ. γραµµένο σε MATLAB, που να υπολογίζει το γινόµενο V a χωρίς να κατασκευάζει άµεσα το V . γ) ΄Οταν n = m, και κάτω από ορισµένες συνθήκες (που αφορούν τα δεδοµένα και όχι την υπολογιστική πλατφόρµα) το κόστος του πολλαπλασιασµού V a είναι O(n log n) πράξεις α.κ.υ. Να αναφέρετε ακριβώς ποιες είναι οι συνθήκες αυτές ; Υποθέτουµε ότι τα V και a δεν είναι τετριµµένα (δηλαδή, οι τιµές των ζj και τα αj δεν είναι µηδέν). Απάντηση 1.7.1. α) Το µητρώο Vandermonde ορίζεται ως εξής : 1 ζ1 ζ12 V = ... ζ1n−1 1 ζ2 ζ22 1 ζ3 ζ32 ... ... ... ... ... .. ζ2n−1 ζ3n−1 ... 1 ζm 2 ζm ... . n−1 ζm Ο υπολογισµός της τιµής του πολυωνύµου στα m σηµεία ζ1 , ζ2 , . . . , ζm µπορεί να γίνει µε τον πολλαπλασιασµό του αναστρόφου µητρώου Vandermonde µε το διάνυσµα : a= α0 α1 α2 ... αn−1 > ϐ) Παρακάτω δίνεται ο Ϲητούµενος αλγόριθµος σε MATLAB µε τις κατάλληλες τροποποιήσεις στους δείκτες (η MATLAB απαιτεί ϑετικούς δείκτες). Ειδικότερα, σε κάθε a(i) αποθηκεύουµε το αντίστοιχο αi−1 . Listing 1.4: Κατασκευή µητρώου Vandermonde 1 2 3 4 g = a(n)*ones(m, 1); for i=n-1:-1:1, g=g.*z + a(i)*ones(m, 1); end γ) Ο διακριτός µετασχηµατισµός Fourier του διανύσµατος x ορίζεται από τα n αθροίσµατα y(j) = n−1 X x(k)e−i2kjπ/n , j = 0, ..., n − 1. k=0 ΄Οταν το µητρώο Vandermonde ορίζεται από το διάνυσµα : z = ζ1 = 1 ζ2 ζ3 e−i2(1)π ... ζm e−i2(2)π > ... e−i2(n−1)π > ο πολλαπλασιασµός V a δίνει σαν αποτέλεσµα το διακριτό µετασχηµατισµό Fourier του διανύσµατος a, του οποίου το κόστος είναι O(n log n). 20 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ Pn−1 j ΄Ασκηση 1.7.2. ΄Εστω, όπως πριν, το πολυώνυµο p(z) = j=0 αj x όπου αn−1 6= 0, επιλεγµένο έτσι ώστε ο πολλαπλασιασµός V a να µπορεί να εκτελεστεί µε ειδικό αλγόριθµο που χρησιµοποιεί µόνον 8n log n πράξεις α.κ.υ και ότι αυτός έχει υλοποιηθεί σε κάποιο υπολογιστικό σύστηµα που ονοµάζουµε lyes-mach, ΄Εστω επίσης ότι σε ένα άλλο υπολογιστικό σύστηµα, έστω lno-mach, δεν υπάρχει η υλοποίηση αυτού του αλγόριθµου, και δεν έχουµε το χρόνο και αρκετές γνώσεις για να τον υλοποιήσουµε. Εποµένως, στην lno-mach, είµαστε αναγκασµένοι να χρησιµοποιήσουµε τον κλασικό αλγόριθµο πολλαπλασιασµού V a, που στοιχίζει 2n2 πράξεις. Να εξετάσετε κάτω από ποιές συνθήκες (π.χ. για το µέγεθος του προϐλήµατος και την ταχύτητα εκτέλεσης των πράξεων σε κάθε σύστηµα) αληθεύει το επιχείρηµα ότι το πρόβληµα ϑα λυθεί πιο γρήγορα στο σύστηµα lno-mach. 1.8 Εργαστηριακές ασκήσεις και εργασίες ΄Ασκηση 1.8.1. Ο διακριτός µετασχηµατισµός Fourier του διανύσµατος x ορίϹεται από τα n αθροίσµατα y(j) = n−1 X x(k)e−i2kjπ/n , j = 0, ..., n − 1. k=0 Είδαµε επίσης ότι αυτό ισοδυναµεί µε τον πολλαπλασιασµό του αναστρόφου ενός µητρώου Vandermonde µε το διάνυσµα x. α) Να γράψετε ή να ϐρείτε συνάρτηση η οποία κατασκευάζει το µητρώο Vandermonde που αντιστοιχεί στο µετασχηµατισµό Fourier και να την χρησιµοποιήσετε για µία συνάρτηση που δοθέντος ενός διανύσµατος υπολογίζει τον µετασχηµατισµό Fourier χρησιµοποιώντας πολλαπλασιασµό µητρώου µε διάνυσµα. ϐ) Να συγκρίνετε συστηµατικά την επίδοση του αλγορίθµου µε τη συνάρτηση fft της MATLAB ως εξής : Προετοιµάζοντας γραφικές παραστάσεις για το χρόνο και τα flops τους για τιµές του n=128:4:512. ∆είτε τις συναρτήσεις toc, toc, cputime. Τι διακυµάνσεις παρατηρείτε ; Ελέγξτε κατά πόσο οι παραπάνω τιµές συµφωνούν µε την αναµενόµενη ασυµπτωτική πολυπλοκότητα O(n2 ) και O(n log n). Προσοχή όµως γιατί αν δουλεύετε σε πολύ ταχύ σύστηµα, είναι σχεδόν σίγουρο ότι ο χρόνος δεν ϑα µπορεί να υπολογισθεί αξιόπιστα παρά µόνον αν επαναλάβετε τη µέτρηση πολλές ϕορές και µετά υπολογίσετε το µέσο χρόνο. Να εξηγήσετε πώς γίνονται οι εκτιµήσεις του χρόνου. Απάντηση 1.8.1. α) Η παρακάτω συνάρτηση MATLAB υπολογίζει το Ϲητούµενο µητρώο Vandermonde. 1 function V=vand_fft(n) 2 3 4 5 6 7 for j=1:n, v(j, 1) = exp(-2*pi*sqrt(-1)*(j-1)/n); end V=zeros(n);V(:, 1)=ones(n, 1); for i=2:n, V(:, i)=V(:, i-1).*v; end ΄Ασκηση 1.8.2. Εκτελέστε τους κώδικες που παρουσιάζονται στον πίνακα 1.4 1.8. ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ ΚΑΙ ΕΡΓΑΣΙΕΣ tic;n=20000;rand(’state’,0); figure; for k=1:1:n, A(k)=k; end for k=1:1:n, B(k)=round(rand(1)*n); end for k=1:1:n, C(k)=A(k)+B(k); end for k=1:1:n, plot(B(k),C(k),’.r’); hold on; end hold off;toc 21 tic;m=100;n=200;rand(’state’,0); figure; for j=1:1:n for i=1:1:m A(i,j)=rand(1); end end for i=1:1:m for j=1:1:n B(i,j)=rand(1); end end for i=1:1:m for j=1:1:n C(i,j) = A(i,j) + B(i,j); end end for i=1:1:m for j=1:1:n if C(i,j)>0.5, C(i,j)=1; elseif C(i,j)<0.5, C(i,j)=0; elseif C(i,j)==0, C(i,j)=-10; end end end for i=1:1:m, for j=1:1:n, if C(i,j)==-10, plot(i,j,’.k’); hold on; elseif C(i,j)==0, plot(i,j,’.y’); hold on; elseif C(i,j)==1, plot(i,j,’.m’); hold on; end end end title(’Given’);hold off;toc Πίνακας 1.4: Κώδικας προς ϐελτιστοποίηση για την άσκηση 1.8.2 22 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ tic;n=20000;rand(’state’,0); figure; A=(1:n); B=round(rand(1, n)*n); C=A+B; plot(B,C,’.r’); toc tic;m=100;n=200;rand(’state’,0); figure; A=rand(m, n); B=rand(n, m)’; C=A+B; C(find(C>0.5))=1; C(find(C==0))=-10; C(find(C<0.5 & C>0))=0; [i, j]=find(C==-10); plot(i,j,’.k’); hold on; [i, j]=find(C==0); plot(i,j,’.y’); hold on; [i, j]=find(C==1); plot(i,j,’.m’); hold on; title(’Given’);hold off;toc Πίνακας 1.5: Βελτιστοποιηµένος κώδικας για την άσκηση 1.8.2 και ελέγξτε την απόδοση τους (σε δευτερόλεπτα). Κατόπιν ϐελτιώστε τους κώδικες ώστε να εκτελούνται ταχύτερα. Να κάνετε χρήση των διανυσµατικών δυνατοτήτων της MATLAB ώστε να αποφύγετε τα for-loops όπου είναι δυνατό. Επίσης µπορείτε να χρησιµοποιήσετε τη δυνατότητα προ-ορισµού των µητρώων. Επιτάχυνση µπορεί να επιτευθεί και στην γραφική εκτύπωση των αποτελεσµάτων. Κάνετε χρήση της profile και να αντικαταστήσετε χρονοβόρα τµήµατα µε ενσωµατωµένες συναρτήσεις όπως η find. Να εκτελέσετε τους αρχικού άλλα και τους ϐελτιοµένους κώδικες για τιµές του n = 500 : 100 : 20000 για τον πρώτο κώδικα και για τιµές m = 50 : 50 : 200, n = 50 : 50 : 300 για τον δεύτερο κώδικα. Κατόπιν να κατασκευάσετε γραφικές παραστάσεις του χρόνου εκτέλεσης των προγραµµάτων σε συνάρτηση µε τα m, n. Ειδικά για τον δεύτερο κώδικα ϑα πρέπει να κατασκευάσετε τρισδιάσταση γραφική παράσταση. Τι παρατηρείτε στις γραφικές αυτές παραστάσεις· Απάντηση 1.8.2. Για τη ϐελτιστοποίηση των δύο τµηµάτων κώδικα χρησιµοποιούµε κατά κύριο λόγο διανυσµατικές εντολές. Με τον τρόπο αυτό µπορούµε να αποµακρύνουµε όλα τα for-loops στα οποία καταναλώνεται το µεγαλύτερο µέρος του χρόνου εκτέλεσης (όπως µπορούµε να δούµε χρησιµοποιώντας τη συνάρτηση profile). Οι ϐελτιωµένοι κώδικες δίνονται στον πίνακα 1.5. Επιπλέον µπορούµε να χρησιµοποιήσουµε και τη δυνατότητα προ-ορισµού των µητρώων. Στο σχήµα 1.2 δίνονται τα αποτελέσµατα από την εκτέλεση των αρχικών και των ϐελτιοµένων προγραµµάτων (για λόγους αξιοπιστίας, οι χρόνοι που δίνονται για τους ϐελτιωµένους κώδικες αποτελούν τους µέσους χρόνους που προέκυψαν από την εκτέλεση των προγραµµάτων 100 ϕορές για κάθε m, n). Από τα σχήµατα αυτά παρατηρούµε ότι η χρήση των διανυσµατικών εντολών της MATLAB ϐελτιώνει κατά πολύ το χρόνο εκτέλεσης των δύο προγραµµάτων. 23 1.8. ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ ΚΑΙ ΕΡΓΑΣΙΕΣ Execution time for code 1 Execution time for optimized code 1 20 0.02 0.018 0.016 time (sec) time (sec) 15 10 5 0.014 0.012 0.01 0.008 0 0 0.5 1 n 1.5 2 0 Execution time for code 2 1 n 1.5 2 4 x 10 Execution time for optimized code 2 0.1 time (sec) 60 time (sec) 0.5 4 x 10 40 20 0 400 200 n 0 50 100 m 150 200 0.05 0 400 200 n 0 50 100 m 150 200 Σχήµα 1.2: Χρόνοι εκτέλεσης για τους αρχικούς και τους ϐελτιωµένους κώδικες (άσκηση 1.8.2). 24 ΒΙΒΛΙΟΓΡΑΦΙΑ Βιβλιογραφία [1] http://www.wolfram.com/mathematica/. [2] MATLAB: The Language of Technical Computing. In http://www.mathworks.com/products/matlab/. [3] http://www.maplesoft.com/, 2007. [4] B. Alpern and L. Carter. Performance programming: A science waiting to happen. In U. Vishkin, editor, Developing a Computer Science Agenda for High-Performance Computing. ACM Press, New York, 1994. [5] R. Aris. Mathematical Modelling Techniques. Dover, Mineola, NY, 1994 (originally published in 1974). [6] K. Asanovic et al. The landscape of parallel computing research: A view from Berkeley. Technical report no. ucb/eecs-2006-183, University of California at Berkeley, Dec. 2006. http://www.eecs.berkeley.edu/ Pubs/TechRpts/2006/EECS-2006-183.html. [7] V. Bargmann, D. Montgomery, and J. von Neumann. Solution of linear systems of high order. In A.H. Taub, editor, John von Neumann Collected Works, volume V. Pergamon, Oxford, UK, 1963. [8] C. Bekas and A. Curioni. A new energy aware performance metric. Computer Science - Research and Development, 25:187–195, 2010. 10.1007/s00450-010-0119-z. [9] L. Carter. RISC from a performance programmer’s perspective. Invited talk at ‘‘RISC in 1995 Symposium’’, 1995. Available from URL http: //www-cse.ucsd.edu/users/carter/ppbib.html. [10] L. DeRose, K. Gallivan, E. Gallopoulos, B. Marsolf, and D. Padua. FALCON: A MATLAB Interactive Restructuring Compiler. In C.-H. Huang, et al., editor, Lecture Notes in Computer Science: Languages and Compilers for Parallel Computing, pages 269–288. Springer-Verlag, New York, 1995. [11] W.-C. Feng, X. Feng, and R. Ge. Green supercomputing comes of age. IEEE IT Professional Mag., Jan./Feb. 2008. [12] E. Gallopoulos and A.H. Sameh. CSE: Content and product. IEEE Computational Science & Engineering Mag., 4(2):39–43, 1997. [13] H.H. Goldstine. The Computer from Pascal to von Neumann. Princeton Univ. Press, Princeton, 5th edition, 1993. [14] G. Golub and J.M. Ortega. Scientific Computing: An Introduction with Parallel Computing. Academic Press, Inc., San Diego, CA, 1993. [15] Scilab Group. Scilab home http://www.scilab.org/index.php. page, 2007. Online at [16] J.L. Hennessy and D.A. Patterson. Οργάνωση και Σχεδίαση Υπολογιστών. Κλειδάριθµος, Αθήνα, 2010. ∆. Γκιζόπουλος, µτφρ. της 4ης έκδοσης. ΒΙΒΛΙΟΓΡΑΦΙΑ 25 [17] N.J. Higham. Accuracy and Stability of Numerical Algorithms. SIAM, Philadelphia, 2nd edition, 2002. [18] R. Hockney. Computers, compilers, and Poisson solvers. In U. Schumann, editor, Computers, Fast Elliptic Solvers, and Applications: Proc. GAMM Workshop, 1977. [19] H. Hotelling. Some new methods in matrix calculation. Ann. Math. Statist., 14(1):1–34, 1943. [20] E.N. Houstis, J.R. Rice, E. Gallopoulos, and R. Bramley, editors. Enabling Technologies For Computational Science: Frameworks, Middleware, and Enviroments. Kluwer, 2000. [21] Grand Challenges: High Performance Computing and Communications. A report by the committee on Physical, Mathematical, and Engineering Sciences. Office of Science and Technology Policy, 1991. [22] E. A. Jackson. A first look at the second metamorphosis of science. Technical Report Report CCSR-95-1, Santa Fe Institute, 1995. [23] B. Jacob, S.W. Ng, and D.T. Wang. Memory Systems: Cache, DRAM, Disk. Morgan Kaufmann, 2008. [24] W.J. Kaufmann III and L.L. Smarr. Supercomputing and the Transformation of Science. Scientific American Library, New York, 1993. [25] G. Kollias and E. Gallopoulos. Jylab: A system for portable scientific computing over distributed platforms. In E-SCIENCE ’06: Proceedings of the Second IEEE International Conference on e-Science and Grid Computing, page 97, Washington, DC, USA, 2006. IEEE Computer Society. [26] D.J. Kuck, E. S. Davidson, D. L. Lawrie, and A.H. Sameh. Parallel supercomputing today and the Cedar approach. Science, 231:967–974, February 1986. [27] H. P. Langtangen. Python Scripting for Computational Science. Springer, 2006. [28] W. Leontief. The Structure of the American Economy. 1945. [29] B. N. Parlett. Progress in numerical analysis. SIAM Rev., 20(3):443–455, July 1978. [30] C. Polychronopoulos, M. Girkar, M. Haghighat, C-L. Lee, B. Leung, and D. Schouten. Parafrase-2: An environment for parallelizing, synchronizing, and scheduling programs on multiprocessors. International J. High Speed Computing, 1(1), May 1989. [31] W. C. Rheinboldt. Computational Modeling and Mathematics Applied to the Physical Sciences. Washington DC, 1984. [32] J.R. Rice. Computational science and the future of computing research. IEEE Computational Science and Engineering Magazine, pages 35–41, Winter 1995. 26 ΒΙΒΛΙΟΓΡΑΦΙΑ [33] S. Robinson. Toward an optimal algorithm for matrix multiplication. SIAM News, 38(9), 2005. [34] M. Serres. Η επικοινωνία ενάντια στην κουλτούρα. Le Monde Diplomatique, (197), Nov. 2001. Αναδηµοσιευµένο στην εφηµερίδα ΕΛΕΥΘΕΡΟΤΥΠΙΑ.
© Copyright 2024 Paperzz