Αρχιµήδης ΙΙ Ενίσχυση Ερευνητικών Οµάδων του ΤΕΙ Κρήτης Τίτλος Υποέργου: Εφαρµογές Τεχνητής Νοηµοσύνης στην Τεχνολογία Λογισµικού και στην Ιατρική Επιστηµονικός Υπεύθυνος: ρ Εµµανουήλ Μαρακάκης ραστηριότητα 1: Εργαλεία Μετασχηµατισµού και Επαλήθευσης Προγραµµάτων Πακέτο Εργασίας 1.3 (ΠΕ 1.3): Αξιολόγηση του Συστήµατος Μετασχηµατισµών. Χρονική ιάρκεια : 1/12/05 µέχρι 28/2/06 Παραδοτέο: Π1.3 - Ερευνητική Μελέτη Αξιολόγησης του Συστήµατος Μετασχηµατισµού Λογικών Προγραµµάτων. Μέλη της ερευνητικής Οµάδας Ονοµατεπώνυµο Α. ρ Εµµανουήλ Μαρακάκης Υπογραφή Β. Χαρά Κουνάλη. Γ. Μαριάννα Σγουράκη Επιστηµονικός Υπεύθυνος Υποέργου "The Project ARXIMIDIS ΙΙ is co-funded by the European Social Fund and National Resources EPEAEK ΙΙ " 1
Περιεχόµενα Κατάλογος Προγραµµάτων... 2 Κατάλογος Πινάκων... 2 1. Εισαγωγή... 3 2. Αξιολόγηση του υποσυστήµατος «µετασχηµατισµού προγραµµάτων»... 4 3. Συµπεράσµατα και µελλοντικές βελτιώσεις και επεκτάσεις... 8 4. Βιβλιογραφία... 9 Κατάλογος Προγραµµάτων ΠΡΟΓΡΑΜΜΑ 2.1: ΚΑΤΗΓΟΡΗΜΑ PRINT_STATISTICS/7. 5 ΠΡΟΓΡΑΜΜΑ 2.2: ΚΑΤΗΓΟΡΗΜΑ TEST/2. 5 Κατάλογος Πινάκων ΠΙΝΑΚΑΣ 2.1 : ΣΥΓΚΡΙΣΗ ΑΡΧΙΚΟΥ ΚΑΙ ΜΕΤΑΣΧΗΜΑΤΙΣΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ 7 2
1. Εισαγωγή Αυτή η τεχνική αναφορά περιγράφει την αξιολόγηση του συστήµατος µετασχηµατισµού Λογικών Προγραµµάτων Φειδίας. Η αξιολόγηση στηρίζεται στη σύγκριση των αρχικών µε τα αντίστοιχα µετασχηµατισµένα προγράµµατα. Για το σκοπό αυτό έχει κατασκευαστεί το υποσύστηµα «Evaluate Programs» στο σύστηµα Φειδίας το οποίο αυτόµατα συγκρίνει το αρχικό µε το µετασχηµατισµένο πρόγραµµα. Τα κριτήρια και οι παράµετροι που χρησιµοποιούνται για την σύγκριση των αντίστοιχων προγραµµάτων παρουσιάζοναι στο δεύτερο κεφάλαιο αυτής της τεχνικής αναφοράς. Στο τρίτο κεφάλαιο γίνεται συζήτηση των αποτελεσµάτων της σύγκρισης και προτείνονται µελλοντικές βελτιώσεις του συστήµατος Φειδίας. 3
2. Αξιολόγηση του υποσυστήµατος «µετασχηµατισµού προγραµµάτων» Για την αξιολόγηση του υποσυστήµατος «µετασχηµατισµού προγραµµάτων» πρέπει να συγκρίνουµε τα αρχικά προγράµµατα µε τα µετασχηµατισµένα. Το υποσύστηµα «αξιολόγησης αρχικού µετασχηµατισµένου προγράµµατος» εκτελεί την σύγκριση του αρχικού και του αντίστοιχου µετασχηµατισµένου τρέχοντας και τα δυο µε τον ίδιο στόχο. Η σύγκριση του αρχικού µε το µετασχηµατισµένο πρόγραµµα γίνεται στα στοιχεία που αφορούν το µέγεθος του προγράµµατος και στην αποτελεσµατικότητα [Clocksin, 1997], [SICStus Prolog User s Manual, 2003], [Sterling and Shapiro, 1997]. Μέγεθος προγράµµατος. Το µέγεθος προγράµµατος εκφράζεται από το πλήθος των προτάσεων του προγράµµατος. Τα µετασχηµατισµένα προγράµµατα έχουν ίδιο ή µικρότερο πλήθος προτάσεων. Αποτελεσµατικότητα. Για την αποτελεσµατικότητα θα συγκριθεί ο χρόνος εκτέλεσης ίδιων στόχων και οι απαιτήσεις σε µνήµη. Χρόνος εκτέλεσης στόχων: Επειδή οι διαφορές των χρόνων εκτέλεσης είναι µικρές για να τις αποτυπώσουµε θα χρησιµοποιήσουµε 1000 εκτελέσεις του ίδιου στόχου από τα δύο προγράµµατα. Απαιτήσεις σε Μνήµη: Οι απαιτήσεις σε µνήµη κατά την εκτέλεση ενός προγράµµατος Prolog εκφράζεται από την µνήµη που χρησιµοποιείται για τις εξής δοµές της Prolog. 1) Global stack : Η σφαιρική στοιβάδα (global stack) είναι µια στοιβάδα στην οποία αποθηκεύονται οι σύνθετοι όροι του προγράµµατος. 2) Local stack : Η τοπική στοιβάδα (local stack) είναι µια στοιβάδα η οποία περιέχει το περιβάλλον (τοπικές µεταβλητές) από τις κλήσεις των αναδροµικών κατηγορηµάτων (υποπρογραµµάτων). 3) Trail : Η trail είναι µια περιοχή δεδοµένων στην οποία καταγράφονται εκείνες οι µεταβλητές οι οποίες πρέπει να γίνουν µη δεσµευµένες (unbound) όταν γίνεται οπισθοδρόµηση (backtracking) κατά την εκτέλεση του προγράµµατος. 4) Choice stack : Η στοιβάδα επιλογών (choice stack) είναι µια στοιβάδα στην οποία αποθηκεύεται η τρέχουσα κατάσταση υπολογισµών όταν η κλήση κάποιας διαδικασίας έχει εναλλακτικές προτάσεις ικανοποίησης της. ηλαδή όταν η διαδικασία που καλείται έχει περισσότερες από µια προτάσεις (clauses). Η κατάσταση υπολογισµών αποθηκεύεται για να χρησιµοποιηθεί στην οπισθοδρόµηση (backtracking). ηλαδή στην ικανοποίηση του στόχου µε κάποια άλλη πρόταση του κληθέντος κατηγορήµατος. Για την εύρεση αυτών των τιµών χρησιµοποιούµε το κατηγόρηµα της Sicstus Prolog statistics/2 [SICStus Prolog User s Manual, 2003]. Το κατηγόρηµα αυτό µας επιτρέπει να συλλέξουµε διάφορα στατιστικά στοιχεία κατά την εκτέλεση ενός προγράµµατος. Το κατηγόρηµα print_statistics/0, Πρόγραµµα 2.1, επιστρέφει τα στατιστικά στοιχεία που µας ενδιαφέρουν για την αξιολόγηση των προγραµµάτων. 4
print_statistics(v0,v1,v2,v3,v4,v5,v6) :- statistics(memory,v0), statistics(global_stack,v1), statistics(local_stack,v2), statistics(trail,v3), statistics(choice,v4), statistics(runtime,v5), statistics(garbage_collection,v6). Πρόγραµµα 2.1: Κατηγόρηµα print_statistics/7. Για να βρούµε τον χρόνο τρεξίµατος για κάθε πρόγραµµα χρησιµοποιούµε το κατηγόρηµα test/2, Πρόγραµµα 2.2, όπου test(g, N) όπου G είναι ο στόχος που τρέχουµε για N επαναλήψεις. Το κατηγόρηµα αυτό µας επιστρέφει τον χρόνο τρεξίµατος για τον κάθε στόχο. Για να συγκρίνουµε το αρχικό µε το µετασχηµατισµένο πρόγραµµα, τρέχουµε τον ίδιο στόχο και για τα δύο για 1000 επαναλήψεις (N = 1000). test(g,n) :- time(run(g,0,n),tp), time(run(true,0,n),td), Rtp is Tp - Td, write(time(rtp)). time(g,t) :- statistics(runtime,_), G, statistics(runtime,[_,t1]), T is T1/1000. Πρόγραµµα 2.2: Κατηγόρηµα test/2. Παράδειγµα Σύγκριση προγραµµάτων sum.pl και sum_transformed.pl Για να συγκρίνουµε τα δυο προγράµµατα τρέχουµε το στόχο sum([10,-5,99,0,-30],m). H Prolog για να µας επιστρέψει τιµές για τα global stack, local stack, trail και choice stack εκτελεί τον στόχο?- sum([10,-5,99,0,-30],m), print_statistics. Ενώ για να µας δώσει το χρόνο τρεξίµατος εκτελεί τον στόχο?- test(sum([10,-5,99,0,-30],m), 1000). 5
Τα αποτελέσµατα της σύγκρισης για ένα σύνολο προγραµµάτων που χρησιµοποιήσαµε στο σύστηµα Φειδίας φαίνονται στο πίνακα 7.1. Από τον πίνακα 7.1 παρατηρούµε τα εξής : 1. Πλήθος προτάσεων : Τα µετασχηµατισµένα προγράµµατα έχουν ίδιο ή µικρότερο αριθµό προτάσεων από τα αρχικά. 2. Χρόνος τρεξίµατος : Ο χρόνος τρεξίµατος των µετασχηµατισµένων προγραµµάτων είναι µικρότερος από τα αντίστοιχα αρχικά σ όλες τις περιπτώσεις. 3. Απαιτήσεις σε µνήµη : a) Τα µετασχηµατισµένα προγράµµατα απαιτούν λιγότερη µνήµη για την global stack από τα αντίστοιχα αρχικά. b) Τα µετασχηµατισµένα απαιτούν λιγότερη ή ίση local stack από τα αρχικά. c) Οι απαιτήσεις µνήµης για την choice stack και την περιοχή trail είναι περίπου ίδιες για το µετασχηµατισµένα και τα αρχικά προγράµµατα. Οι διαφορές είναι ανεπαίσθητες. 6
Αριθµός προτάσεων Χρόνος τρεξίµατος(1000 runs) Global stack Local stack Trail size Choice stack Program name sum 8 8 0.08 0.03 18300,8760 18172,8888 188,1654 188,1654 572,2153 572,2153 156,2153 156,2153 fac 6 6 0.07 0.04 17160,9900 17072,9988 188,1654 188,1654 556,2154 556,2154 156,2153 156,2153 max_seq 19 19 0.141 0.06 20108,6952 19764,7296 188,1654 188,1654 576,2150 576,2150 204,2150 204,2150 incrord 18 16 0.16 0.08 18796,8264 18204,8856 164,1656 68,1666 544,2154 544,2154 156,2154 156,2154 inssort 21 21 0.3 0.11 25964,1782 24464,1932 380,1634 380,1634 596,2135 596,2135 492,2135 492,2135 Πίνακας 2.1: Σύγκριση αρχικού και µετασχηµατισµένου προγράµµατος 7
3. Συµπεράσµατα και µελλοντικές βελτιώσεις και επεκτάσεις Η µέθοδος µετασχηµατισµού των λογικων προγραµµάτων του συστήµατος Φειδίας έχει αρκετά προτερήµατα τα οποία την κάνουν µια πολύ καλή και ιδιαίτερα εύχρηστη µέθοδο. Αυτά έχουν συζητηθεί στις τεχνικές αναφορές [Μαρακάκης, Κουνάλη και Σγουράκη, 2005α] και [Μαρακάκης, Κουνάληκαι Σγουράκη, 2005β]. Εδώ θα συζητήσουµε τα αποτελέσµατα από την σύγκριση των αντίστοιχων προγραµµάτων. Τα παραγόµενα προγράµµατα είναι πιο αποτελεσµατικά από τ αντίστοιχα αρχικά και σε µερικές περιπώσεις έχουν λιγότερες προτάσεις. Όµως οι βελτιώσεις δεν είναι τόσο µεγάλες ώστε να είναι αισθητές όταν τρέχουµε το αρχικό και το µετασχηµατισµένο πρόγραµµα. Θα πρέπει να γίνει άλλο ένα επίπεδο βελτιώσεων των µετασχηµατισµένων προγραµµάτων. Το σύστηµα Φειδίας θα πρέπει να επεκταθεί µε ένα εργαλείο µερικών υπολογισµών (partial evaluation) το οποίο θα γκρεµίσει όλη την δοµή του προγράµµατος. Παράλληλα οι δοµές δεδοµένων που είναι "εγκλωβισµένες" στους τελεστές των τύπων δεδοµένων (data types operations) θα µετακινηθούν προς την κορυφή του προγράµµατος. Με αυτό τον τρόπο τα προγράµµατα θα γίνουν ακόµα µικρότερα σε µέγεθος και ακόµα περισσότερο αποτελεσµατικά. Τέλος, αυτή η µεθοδολογία χρειάζεται να βελτιωθεί ώστε οι αλλαγές που γίνονται κατά τους µετασχηµατισµούς να απεικονίζονται και στους τύπους δεδοµένων των ορισµάτων (data types) των κατηγορηµάτων καθώς και στο mode κάθε ορίσµατος.
4. Βιβλιογραφία Ελληνόγλωσση βιβλιογραφία. [Μαρακάκης, Κουνάλη και Σγουράκη, 2005α] Μανόλης Μαρακάκης, Χαρά Κουνάλη, Μαριάννα Σγουράκη, Αυτόµατος Μετασχηµατισµός οµηµένων Λογικών Προγραµµάτων, Πρόγραµµα: Αρχιµήδης ΙΙ Ενίσχυση Ερευνητικών Οµάδων στο ΤΕΙ Κρητης Υποέργο: Εφαρµογές Τεχνητής Νοηµοσύνης στην Τεχνολογία Λογισµικού και στην Ιατρική, ραστηριότητα 1: Εργαλεία Μετασχηµατισµού και Επαλήθευσης Προγραµµάτων, Πακέτο εργασίας ΠΕ1.1, Παραδοτέο Π1.1. [Μαρακάκης, Κουνάλη και Σγουράκη, 2005β] Μανόλης Μαρακάκης, Χαρά Κουνάλη, Μαριάννα Σγουράκη, Φειδίας: Ένα Αυτόµατο Σύστηµα Μετασχηµατισµού Λογικών Προγραµµάτων, Πρόγραµµα: Αρχιµήδης ΙΙ Ενίσχυση Ερευνητικών Οµάδων στο ΤΕΙ Κρητης Υποέργο: Εφαρµογές Τεχνητής Νοηµοσύνης στην Τεχνολογία Λογισµικού και στην Ιατρική, ραστηριότητα 1: Εργαλεία Μετασχηµατισµού και Επαλήθευσης Προγραµµάτων, Πακέτο εργασίας ΠΕ1.2, Παραδοτέο Π1.2. Ξενόγλωσση βιβλιογραφία. [Clocksin, 1997] W. F. Clocksin, Clause and effect: Prolog ming for the working mer, Springer, 1997. [SICStus Prolog User s Manual, 2003] SICStus Prolog User s Manual, Intelligent Systems Laboratory, Swedish Institute of Computer Science, October 2003. [Sterling and Shapiro, 1997] L. Sterling, E. Shapiro, The Art of Prolog, Second Edition, The MIT Press, 1997. 9