zaterdag, mei 27, 2006
Shark
Την περασμένη εβδομάδα ξεκίνησα να κάνω ένα μικρό πρόγραμμα για την προσομοίωση ενός συστήματος νευρώνων (εξωφρενικά μακριά από τα συνηθισμένα ερευνητικά ενδιαφέροντά μου). Έγραψα την πρώτη εκδοχή του προγράμματος με μόνο δύο νευρώνες σε Python. Αρχικά ήθελα απλώς να δω αν μια ιδέα που είχα για την υλοποίηση του αλγορίθμου ήταν σωστή και να παίξω λίγο με το σύστημα για να δω πώς εξελίσεται χρονικά. Χτες το πρωί αποφάσισα να τροποποιήσω το πρόγραμμα για αυθαίρετο αριθμό νευρώνων και σχεδόν ταυτόχρονα αποφάσισα να δομήσω τα πράγματα λίγο καλύτερα ορίζοντας τις σχετικές κλάσεις και ένα module για να το κάνω import σε διάφορα προγράμματα. Όλα καλά μέχρι εδώ.
Για την ακρίβεια σε αυτό το στάδιο η Python έδειξε τις αρετές της. Μπορούσα να κάνω όποια αλλαγή σκεφτόμουνα σε ελάχιστο χρόνο. Η ίδια αίσθηση με το να δουλεύεις με πλαστελίνη χωρίς όμως να κολλάει στα χέρια. Από την άλλη πλευρά, ένα πρόβλημα της Python είναι ότι είναι αργή σε σχέση με compiled γλώσσες όπως η C. Σε πολλές περιπτώσεις αυτό δεν είναι σημαντικό αλλά εδώ αποδείχτηκε τελικά ότι ήταν.
Χωρίς να μπω σε λεπτομέρειες, για να πάρω κάποιο αποτέλεσμα θα χρειαζόμουνα περίπου 3 ώρες. Αν αυτό γινόταν μόνο μία φορά δεν θα με ένοιαζε αλλά πρέπει να επαναλάβω τον υπολογισμό για πολλές τιμές των παραμέτρων του συστήματος. Γι' αυτόν τον λόγο αποφάσισα να ξαναγράψω τον κώδικα σε C++. Η «μετάφραση» δεν ήταν δύσκολη.
Μόνο που το compiled πρόγραμμα (χωρίς optimization) έτρεχε πιο αργά από ότι το πρόγραμμα στην Python! Με optimization (g++ -O6) το πρόγραμμα ήταν 3 φορές πιο γρήγορο από ότι σε Python. Περίμενα πολύ μεγαλύτερη βελτίωση και πρέπει να ομολογήσω ότι ήμουνα απογοητευμένος. Στην αρχή έριξα το φταίξιμο στο ότι χρησιμοποιούσα εκτεταμένα την STL για να έχω λίστες και vectors. Είχα διάφορες ιδέες για το που μπορεί να χάνεται χρόνος και ήταν όλες λανθασμένες. Ευτυχώς, το διαπίστωσα πριν χάσω χρόνο κάνοντας αλλαγές στο πρόγραμμα που δεν θα βελτίωναν σημαντικά την ταχύτητα και θα το έκαναν πολύ πιο μπερδεμένο.
Ξεκίνησα να κάνω profiling: g++ -pg και gprof. Δυστυχώς ο gprof έβγαζε βλακείες. Λίγο ψάξιμο στο Google επιβεβαίωσε ότι δεν έκανα τίποτα λάθος και ότι ο gprof στο Mac OS X έχει πρόβλημα. Και τότε θυμάμαι τον Shark. Είχα εγκαταστήσει πρόσφατα το CHUD και ήξερα ότι τον είχα κάπου αλλά δεν τον είχα χρησιμοποιήσει ποτέ. Ο Shark είναι ένας εκπληκτικός profiler και μπορείτε να τον χρησιμοποιήσετε για οτιδήποτε τρέχει στο Mac OS X. Δηλαδή τον ξεκινάτε και μπορείτε αν θέλετε να κάνετε profile ολόκληρο το σύστημα ή μόνο μια συγκεκριμένη διαδικασία. Έχει πάρα πολλές δυνατότητες και τις προσφέρει μέσα από ένα εύχρηστο γραφικό περιβάλλον. Αφού λοιπόν έτρεξα το πρόγραμμά μου μέσα από τον Shark και κοίταξα τα στατιστικά διαπίστωσα ότι το 90% του χρόνου πήγαινε σε μια sort.
Το πρόγραμμα είναι πολύ απλό. Υπάρχει μια μικρή λίστα (το μέγεθος κυμαίνεται από 3 έως 6 στοιχεία). Σε κάθε επανάληψη (από τις περίπου 500000) αφαιρώ ένα στοιχείο από την αρχή της λίστας, κάνω κάποιους υπολογισμούς, προσθέτω ένα-δύο στοιχεία στο τέλος της λίστας και ταξινομώ την λίστα. Για αυτήν την δομή χρησιμοποιούσα μια list με την λογική αφενός ότι αφού χρησιμοποιούσα list στην Python το ίδιο θα έκανα και στην C++ και αφετέρου ότι χρειαζόμουνα μια δομή στην οποία να μπορώ να προσθέτω και να αφαιρώ γρήγορα στοιχεία. Αυτό αποδεικνύει ότι το να προγραμματίζεις αργά το βράδυ δεν είναι καλή ιδέα. Είχα ξεχάσει εντελώς το θέμα της ταξινόμησης και κυρίως είχα ξεχάσει ότι οι λίστες δεν προσφέρονται για ταξινόμηση.
Συνειδητοποιώντας το πρόβλημα, άλλαξα την list σε vector (ίσως μια deque θα είναι ακόμα καλύτερη αλλά βαριέμαι να δοκιμάσω). Χωρίς optimization το πρόγραμμα έτρεχε 10 φορές πιο γρήγορα από ότι σε Python. Με -O6, 100 φορές πιο γρήγορα. Έτσι το πρόγραμμα που θα τελείωνε σε 3 ώρες τώρα τελειώνει σε 2 λεπτά. Τέλεια.
Και για να κλείσει ο κύκλος αποφάσισα να μετατρέψω το πρόγραμμα που ήταν γραμμένο σε C++ σε module που θα μπορούσα να το κάνω import σε Python. Χρησιμοποίησα το SWIG. Η διαδικασία ήταν (σχετικά) εύκολη παρά την έλλειψη πλήρους documentation.
Συμπεράσματα:
(1) Ποτέ μην βελτιστοποιείτε ένα πρόγραμμα χωρίς να κάνετε πρώτα profiling.
(2) Μην εμπιστεύεστε συγκρίσεις ταχύτητας μεταξύ διαφορετικών γλωσσών προγραμματισμού. Κάθε γλώσσα έχει τις δικές της ιδιαιτερότητες και για να πάρετε το μέγιστο χρειάζεται να ξέρετε καλά αυτές τις ιδιαιτερότητες. Αλλιώς βγάζετε συμπεράσματα του στυλ ότι η C++ είναι πιο αργή από την Python.
(3) Μην προγραμματίζετε αργά το βράδυ.
donderdag, mei 25, 2006
Gore
Μέσω του εξαιρετικού Presentation Zen.
Ο Al Gore από τότε που έχασε άδικα την προεδρία εξαιτίας ενός περίεργου εκλογικού συστήματος και όσων έγιναν στην Florida, έμεινε μακριά από την πολιτική. Συνεχίζει όμως να δίνει ομιλίες για θέματα που ο ίδιος θεωρεί σημαντικά, όπως οι κλιματικές αλλαγές. Πρόσφατα άρχισε να παίζεται στους κινηματογράφους στην Αμερική και εμφανίστηκε στις Κάννες η ταινία «An Inconvenient Truth» η οποία βασίζεται στην ομιλία που δίνει ο Gore πάνω στο θέμα των κλιματικών αλλαγών. Το trailer της ταινίας κινείται στο γνωστό, κακόγουστο στυλ που προσπαθεί να τρομάξει για να πουλήσει.
Δεν έχω δει την ταινία αλλά είδα σήμερα την ομιλία πάνω στην οποία βασίζεται η ταινία. Προτείνω ανεπιφύλακτα να δείτε την ομιλία (η οποία δεν έχει καμία σχέση με το trailer). Ο Gore είναι εκπληκτικός ομιλητής. Καταφέρνει να περάσει τα μηνύματα που θέλει και όχι μόνο δεν γίνεται κουραστικός αλλά ολόκληρη η ομιλία είναι απόλαυση.
Η ομιλία διαρκεί περίπου 70 λεπτά και αποτελείται από δύο κύρια μέρη των 30 λεπτών και έναν «επίλογο» 10 λεπτών. Στο πρώτο μέρος ο Gore δίνει με πειστικό τρόπο μερικά στοιχεία που οδηγούν στο συμπέρασμα ότι έχουμε μπροστά μας μια περίοδο ανθρωπογενών κλιματικών αλλαγών. Εδώ ο Gore διακρίνεται ως «δάσκαλος». Εξηγεί με σαφήνεια τα στοιχεία χωρίς όμως να γίνει ποτέ βαρετός.
Στο δεύτερο μέρος ο Gore βγάζει το καπέλο του δασκάλου και φοράει αυτό του πολιτικού. Επιτίθεται στην πολιτική της κυβέρνησης Bush σε περιβαλλοντικά θέματα. Αλλά δεν μένει εκεί. Αποκαλύπτει την απόλυτη ηθική χρεωκοπία της πλέον αντιδημοκρατικής (με κάθε έννοια της λέξης) Αμερικανικής κυβέρνησης. Είναι ένας υπέροχος, δυνατός πολιτικός λόγος.
Όσο μιλάει για πολιτική ο Gore είναι μόνος του απέναντι στο κοινό. Δεν είναι κρυμένος πίσω από κάποιο βήμα. Κινείται ελεύθερα πάνω στην σκηνή. Και αυτό προσδίδει φοβερή αμεσότητα στην παρουσίασή του. Δείτε τον Gore να μιλάει και φέρτε στο μυαλό σας την αντίστοιχη εικόνα από ομιλίες άλλων πολιτικών. Οι συγκρίσεις είναι συντριπτικές.
Ο Gore είναι ένας πολύ έξυπνος και μορφωμένος πολιτικός. Η δράση του ειδικά μετά την ήττα του 2000 δείχνει ότι είναι και ένας βαθύτατα ηθικός άνθρωπος. Ελπίζω ότι για το καλό των ΗΠΑ (και του υπόλοιπου κόσμου) το Δημοκρατικό κόμμα θα του δώσει το χρίσμα για να είναι υποψήφιος στις προεδρικές εκλογές του 2008. Ιδανικά, χωρίς να χρειαστούν καν προκριματικές εκλογές. Ο Gore είναι τόσο πάνω από όλους τους άλλους πιθανούς υποψηφίους των Δημοκρατικών που δεν αξίζει να φθαρεί σε μια διαδικασία προκριματικών εκλογών. Επιπλέον, η αποδοχή του ως υποψηφίου χωρίς εκλογές θα έδινε τρομερή δυναμική στην υποψηφιότητά του. Το μόνο πρόβλημα είναι ότι ο ίδιος ο Gore λέει ότι δεν θέλει να είναι υποψήφιος. Ελπίζω να αλλάξει γνώμη.
Και μην ξεχνάτε: δείτε την ομιλία και αν μπορείτε δείτε και την ταινία.
woensdag, mei 17, 2006
dinsdag, mei 16, 2006
Επιτελους
Πριν φύγω από το γραφείο για το σημερινό μάθημα κοιτάω το Apple Store Ολλανδίας. Το site ήταν offline, δηλαδή καινούρια προϊόντα, δηλαδή (με λίγη τύχη) καινούρια MacBook. Για μερικά δευτερόλεπτα σκέφτομαι να καθυστερήσω λίγο στο μάθημα αλλά μετά επικρατούν πιο ψύχραιμες σκέψεις.
Το σημερινό μάθημα ήταν από τα πιο δύσκολα. Ορισμοί επί ορισμών, που χρειάζονται πολύ χρόνο και αυτόνομη μελέτη για να τους αποκρυπτογραφήσει κανείς πλήρως. Τους άφησα 5 λεπτά πριν το τέλος, όχι τόσο γιατί τους κούρασα όσο γιατί το μυαλό μου ήταν αλλού.
Πηγαίνω (τρέχω) στο γραφείο. Και επιτέλους, τα MacBook ήταν πραγματικότητα. Περιττό να πω ότι σε ένα παράθυρο έκανα την παραγγελία και στο διπλανό παράθυρο κοιτούσα τα λεπτομερή τεχνικά χαρακτηριστικά. Παρήγγειλα το άσπρο MacBook με τον Core Duo των 2GHz με 1GB μνήμης. Συνολική τιμή 1315€ (με την έκπτωση για εκπαιδευτικούς και φοιτητές).
Το βασικό συμπέρασμα:
Σε αυτήν την κατηγορία τιμής, τα MacBook είναι με διαφορά οι καλύτεροι φορητοί με Core Duo που κυκλοφορούν.
Έχω γράψει παλιότερα τι περίμενα για το MacBook και σε ποια κατηγορία τιμής. Ευτυχώς έπεσα έξω. Τα MacBook που τελικά κυκλοφόρησαν είναι καλύτερα και φτηνότερα από ότι περίμενα. Έχουμε και λέμε στα θετικά (για το μοντέλο που παρήγγειλα):
(1) Core Duo στα 2GHz. Αυτό δεν το περίμενα με τίποτα. Αν σκεφτεί κανείς ότι στάνταρ πολιτική της Apple ήταν τα consumer μηχανήματα να τρεχουν σε αυστηρά μικρότερες συχνότητες από τα pro μηχανήματα, τότε το ότι το MacBook κυκλοφορεί στην ίδια συχνότητα ένα 15άρι MacBook Pro είναι σαφέστατη αλλαγή πολιτικής (προς το καλύτερο, επιτρέψτε μου να πω).
(2) Extended desktop δηλαδή μπορεί κανείς να χρησιμοποιεί μια εξωτερική οθόνη σαν επέκταση της οθόνης του MacBook και όχι σε mirroring. Στα iBook η Apple είχε «κόψει» αυτήν την δυνατότητα αν και η κάρτα γραφικών την υποστήριζε έτσι ώστε να τα διαφοροποιεί από τα PowerBook. Ακόμα μία αλλαγή πολιτικής.
(3) DVD recorder με υποστήριξη dual layer. Αν δώσατε πάνω από 2000€ για να αγοράσετε MacBook Pro μην κλαίτε.
(4) Σκληροί δίσκοι στάνταρ στις 5400rpm. Επιτέλους οι δίσκοι στις 4200rpm πέθαναν.
(5) Όλα τα άλλα που είναι πλέον στάνταρ στους Mac: Front Row, iSight, MagSafe (έχω σπάσει εγώ φορτιστές), Remote, Airport, Bluetooth. Και ας μην ξεχνάμε το iLife.
(6) Οθόνη widescreen 1280x800. Τόσα οριζόντια pixel όσο η 17άρα του γραφείου αλλά λιγότερα κατακόρυφα (800 αντί 1024). Πιο φωτεινή από την οθόνη του iBook η οποία είναι ήδη αρκετά φωτεινή στις περισσότερες περιπτώσεις.
Τα αρνητικά:
(1) Η μνήμη που είναι 2 σε modules των 256 MB.
(2) Τα integrated graphics. Με δεδομένο ότι δεν παίζω παιχνίδια δεν με ενοχλεί καθόλου αλλά φαντάζομαι κάποιοι άλλοι ίσως θέλουν κάτι περισσότερο.
(3) Η έλλειψη εσωτερικού modem.
Ο άγνωστος Χ:
(1) Το πληκτρολόγιο. Φαίνεται διαφορετικό και για να είμαι ειλικρινής όχι ποιοτικό. Θα πρέπει βέβαια να το δοκιμάσω για να μεταφέρω εντυπώσεις.
Και κάτι τελευταίο. Οι τιμές των MacBook Pro στην Ευρώπη μειώθηκαν. Τώρα μπορεί να αγοράσει κανείς ένα Pro με την εκπαιδευτική έκπτωση στα 1800€.
Αυτά προς το παρόν. Η (μεγάλη και δύσκολη) αναμονή τελείωσε.
maandag, mei 15, 2006
Μπερδέματα
Στο στούντιο του BBC περιμένουν τον κ. Kewney, editor του Newswireless.net, για να του πάρουν συνέντευξη για το θέμα της δίκης της Apple Computer με την δισκογραφική εταιρεία των Beatles. Ο floor manager τρέχει και βρίσκει κάποιον με μια ταμπελίτσα με το όνομα Kewney και τον πηγαίνει στο στούντιο για την συνέντευξη. Μόνο που ο «κ. Kewney» είναι (μάλλον) ένας ταξιτζής που περίμενε να πάρει τον πραγματικό κ. Kewney. Η συνέχεια στο βίντεο. Η έκφραση του «κ. Kewney» στην αρχή της συνέντευξης είναι όλα τα λεφτά.
Ολόκληρη η ιστορία εδώ.
zondag, mei 14, 2006
Χωρίς σχόλια
Από εδώ.
A group of Greek protesters known as the Hellenes have called on the Finnish government to intervene.Και κάτι εντελώς άσχετο. Έχει προσέξει κανείς από αυτούς που προτείνουν να καθιερωθεί το όνομα Hellas διεθνώς, ότι hélas στα Γαλλικά (ή helaas στα Ολλανδικά) σημαίνει «δυστυχώς»;
dinsdag, mei 02, 2006
Get a Mac (or don't)
Η Apple έβγαλε σήμερα μερικές νέες διαφημίσεις. Δεν ξέρω αν θα πιάσουν αλλά έχουν μια σχετική πλάκα. Ειδικά η "Restarting". Είναι "φειδωλές με την αλήθεια" όσον αφορά τις συγκρίσεις με τα PC* κάτι στο οποίο ο Jobs ήταν πάντα κορυφή.
Αν τώρα επηρεαστείτε από τις διαφημίσεις και θελήσετε να αγοράσετε έναν φτηνό (ή έστω μέσου κόστους) φορητό Mac με επεξεργαστή Intel, συγκρατηθείτε. Δεν υπάρχει τέτοιος Mac. Να δούμε πόσο ακόμα θα περιμένουμε τους γελοίους μέχρι να αποφασίσουν να τον βγάλουν.
* Αν δεν είναι σαφές, εννοώ ότι οι διαφημίσεις παρουσιάζουν τους Mac καλύτερους και τα PC χειρότερα από ότι είναι στην πραγματικότητα.
maandag, mei 01, 2006
Εγκεφαλικό
Το Ιράν βομβάρδισε θέσεις του PKK μέσα στο Ιράκ.
Σε άλλα νέα, δεκάδες χιλιάδες αριστεροί που προσπαθούν να αποφασίσουν ποιον να καταδικάσουν, γλυτώνουν την τελευταία στιγμή το εγκεφαλικό, αποφαινόμενοι ότι φταίει πάλι η Αμερική.
Abonneren op:
Posts (Atom)