Βιομετρικοί Αλγόριθμοι στην Εποχή Παράλληλων Υπολογισμών

10/05/2013
Compartir!

Παραδοσιακά, η βιομηχανία ημιαγωγών υπήρξε ικανή να αυξήσει την ταχύτητα ρολογιού των συσκευών υπολογιστών, διπλασιάζοντας ταυτόχρονα και τον αριθμό των τρανζίστορ σε κάθε νέα γενιά. Δυστυχώς, λόγω των περιορισμών ισχύος, η αύξηση της συχνότητας των ρολογιών σταμάτησε την τελευταία δεκαετία και οι μεγάλοι κατασκευαστές μικροεπεξεργαστών άλλαξαν τα χαρτοφυλάκια των προϊόντων τους σε αρχιτεκτονικές πολλών πυρήνων. Οι σύγχρονες GPU προχωρούν ακόμη περισσότερο και ενσωματώνουν σήμερα εκατοντάδες απλούς πυρήνες με λογικό προϋπολογισμό ισχύος. Λόγω αυτού του γεγονότος, οι εταιρείες λογισμικού αγωνίζονται να προσαρμόσουν και να χαρτογραφήσουν τους παραδοσιακούς διαδοχικούς αλγόριθμους που σχεδιάστηκαν για σειριακή εκτέλεση σε αυτές τις νέες συσκευές. Αυτό το έργο παραλληλισμού δεν είναι τόσο εύκολο όσο μπορεί κάποιος να σκέφτεται. Γενικά, οι άνθρωποι τείνουν να σκέφτονται τις πράξεις τους φυσικά, με διαδοχικό τρόπο. Είστε σε θέση να αντιλαμβάνεστε γρήγορα εκατοντάδες ταυτόχρονες ενέργειες (μερικές από αυτές ακόμη και με αλληλεξαρτήσεις) παράλληλα; Τα περισσότερα από τα καλύτερα μυαλά και τους προγραμματιστές στον κόσμο δεν είναι. Και αυτό είναι λογικό. Στην καθημερινότητά μας, τείνουμε να αισθανόμαστε πνιγμένοι στη δουλειά, αν έχουμε να αντιμετωπίσουμε ταυτόχρονα εννέα ή δέκα σημαντικά πράγματα. Αλλά για να το θέσουμε απλά, φαίνεται ότι ο εγκέφαλός μας δεν έχει σχεδιαστεί για να ασχολείται με την ταυτόχρονη διεκπεραίωση πολλών εργασιών (multitasking). Όσα περισσότερα καθήκοντα σκοπεύουμε να κάνουμε παράλληλα (για παράδειγμα, απάντηση σε ένα μήνυμα ηλεκτρονικού ταχυδρομείου ενόσω απαντάτε σε ένα τηλεφώνημα), τόσο πιο πιθανό είναι να προκληθεί σφάλμα λόγω ανεπαρκούς προσοχής. Αυτός είναι ο λόγος για τον οποίο η εγγραφή βελτιστοποιημένου και κλιμακούμενου παράλληλου κώδικα που στοχεύει σε συσκευές, όπως οι GPU, είναι μια μακρά και κουραστική διαδικασία. Ο κώδικας εγγραφής για αυτές τις αρχιτεκτονικές είναι συνήθως επιρρεπής σε σφάλματα και είναι δύσκολο αυτά να εντοπιστούν. Δεν είναι ασυνήθιστο να χρειάζονται μήνες για να γραφτεί αποτελεσματικός παράλληλος κώδικας για μια συγκεκριμένη λειτουργία πυρήνα του οποίου η σειριακή έκδοση θα μπορούσε εύκολα να προγραμματιστεί και να δοκιμαστεί μέσα σε μερικές ημέρες.

Σε αυτή τη νέα εποχή του παράλληλου προγραμματισμού, αν μια εταιρεία θέλει να κυκλοφορήσει ένα προϊόν λογισμικού που εκμεταλλεύεται πλήρως τις δυνατότητες του πιο πρόσφατου παράλληλου υλικού (hardware) που διατίθεται στην αγορά, σίγουρα πρέπει να επενδύσει περισσότερα χρήματα και πόρους από ό,τι απαιτούνταν στο παρελθόν. Εμείς, στην Herta Security, ξεκινήσαμε να υιοθετούμε παράλληλο hqrdware από την αρχή στα προϊόντα μας και σύντομα συνειδητοποιήσαμε ότι οι βιομετρικοί αλγόριθμοι μπορούν να επωφεληθούν σε μεγάλο βαθμό από την λεπτομερή (fine-grain) παραλληλοποίηση και από τον παράλληλο προγραμματισμό φορέα δεδομένων. Πολλαπλά στάδια του παραδοσιακού βιομετρικού αγωγού, όπως η διαδικασία εξαγωγής χαρακτηριστικών, είναι εγγενώς παράλληλα. Ωστόσο, η πολυπλοκότητα των μοντέλων πρόσβασης μνήμης ορισμένων χαρακτηριστικών καθιστά στρατηγικές, όπως η επαναχρησιμοποίηση δεδομένων, η προσωρινή αποθήκευση και η προφόρτιση δεδομένων, απατητικές. Με την έλευση του προγραμματισμού GPU, ο προγραμματιστής έχει πλέον να αντιμετωπίσει εκατομμύρια παράλληλα θέματα, να τα συγχρονίσει και να εκμεταλλευτεί αποτελεσματικά την ετερογενή αρχιτεκτονική cache αυτών των συσκευών, προκειμένου να μειώσει όσο το δυνατόν περισσότερο την λανθάνουσα κατάσταση. Παρόλο που αυτές οι εργασίες είναι χρονοβόρες, από άποψη έρευνας και ανάπτυξης, μας δίνουν τη δυνατότητα να παραδίδουμε προϊόντα καλής ποιότητας, τα οποία ονται σύμφωνα με τις πιο πρόσφατες εξελίξεις στο hardware, προσφέροντας παράλληλα μια ασυναγώνιστη εμπειρία χρήστη.