Συγκέντρωση του OpenCL σε FPGAs

Ελλάδα: Η συγκέντρωση του «ΟΧI» στην Αθήνα (Ενδέχεται 2019).

$config[ads_text] not found
Anonim

Το πλαίσιο OpenCL αντιμετωπίζει τις προκλήσεις της ετερογενούς πληροφορικής

Ο ετερογενής υπολογισμός αναφέρεται σε μια αυξανόμενη κατηγορία συστημάτων στα οποία μια εφαρμογή εκτελείται σε ένα μείγμα ανόμοιων συσκευών επεξεργαστή και επιταχυντή για τη μεγιστοποίηση της απόδοσης. Η εκτέλεση ενός προγράμματος σε αυτό το είδος συστήματος απαιτεί ένα πρότυπο προγραμματισμού το οποίο παρουσιάζει μια συνεπή άποψη του συστήματος στον προγραμματιστή της εφαρμογής. Το πλαίσιο OpenCL είναι ένα βιομηχανικό πρότυπο που δημιουργήθηκε για να αντιμετωπίσει τις ανάγκες και τις προκλήσεις των ετερογενών υπολογιστικών συστημάτων.

Στο πιο θεμελιώδες επίπεδο, το πλαίσιο OpenCL παρέχει στους προγραμματιστές εφαρμογών έναν agnostic ορισμό μιας πλατφόρμας και ένα μοντέλο μίας μνήμης σε όλους τους συσκευές που εφαρμόζουν το πρότυπο. Αυτά τα χαρακτηριστικά επιτρέπουν σε έναν προγραμματιστή OpenCL να εστιάσει στις βασικές προκλήσεις της εφαρμογής που αναπτύσσεται και όχι στις συγκεκριμένες λεπτομέρειες μιας συγκεκριμένης υπολογιστικής συσκευής.

Το πρώτο στοιχείο του πλαισίου OpenCL είναι η πλατφόρμα, η οποία καθορίζει τους διαθέσιμους πόρους για την εκτέλεση ενός προγράμματος. Σε μια πλατφόρμα OpenCL, υπάρχει πάντα ένας κεντρικός επεξεργαστής και τουλάχιστον μία συσκευή επιτάχυνσης. Ο κεντρικός επεξεργαστής είναι υπεύθυνος για την αποστολή εργασιών στον επιταχυντή καθώς και για την εκκίνηση των μεταφορών μνήμης κεντρικού υπολογιστή / επιταχυντή. Αυτός ο κεντρικός υπολογιστής εφαρμόζεται πάντα με τη χρήση CPU και ο επιταχυντής μπορεί να είναι CPU, GPU ή FPGA. Ο έλεγχος αυτών των συσκευών επιτάχυνσης γίνεται μέσω ενός κοινού συνόλου λειτουργιών API που αποτελούν μέρος του προτύπου OpenCL.

Οι εργασίες σε μια συσκευή επιτάχυνσης έχουν τη μορφή εκτελέσεων του πυρήνα. Ο πυρήνας είναι η λειτουργία υπολογισμού μιας εφαρμογής που εκτελείται σε μια συσκευή επιτάχυνσης. Μια εφαρμογή στο OpenCL μπορεί να έχει έναν ή περισσότερους πυρήνες και κάθε πυρήνας χαρακτηρίζεται από την έκφραση μιας παράλληλης λειτουργίας δεδομένων. Για παράδειγμα, το Σχήμα 1 δείχνει τη μετατροπή ενός προγράμματος που εκτελείται σε μια CPU σε μια παράλληλη αναπαράσταση δεδομένων και εργασιών που είναι κατάλληλη για OpenCLL.

Εικόνα 1: Από τη διαδοχική σε μια παράλληλη εφαρμογή sata και εργασία

Στη διαδοχική έκδοση του κώδικα στο Σχήμα 1, οι λειτουργίες f, g και h εκτελούνται μέσα σε ένα βρόχο "για". Κάθε συνάρτηση λαμβάνει σύνολα δεδομένων Χ και Υ ως πηγές εισόδου και παράγει μια έξοδο Τ, η οποία δεν καταναλώνεται από οποιαδήποτε άλλη λειτουργία εντός του βρόχου "για". Επομένως, ο βρόχος στη διαδοχική έκδοση του κώδικα μπορεί να διανεμηθεί στις συναρτήσεις f, g και h για να δημιουργήσει μια παράλληλη αναπαράσταση της εργασίας της εφαρμογής όπως φαίνεται από την κεντρική στήλη του Σχήματος 1. Εάν κάθε επίκληση της συνάρτησης f, g και h είναι ανεξάρτητη τόσο από την προηγούμενη όσο και από την επόμενη επίκληση, τότε η εφαρμογή είναι παράλληλη εργασία και δεδομένα παράλληλη όπως φαίνεται από τη δεξιά στήλη του Σχήματος 1. Κάθε κλήση της συνάρτησης f, g ή h αντιπροσωπεύει ένα αντικείμενο εργασίας που εκτελείται από τη συσκευή επιτάχυνσης. Ανάλογα με τους διαθέσιμους πόρους υπολογισμού, ένας επιταχυντής μπορεί να εκτελέσει όλα τα αντικείμενα εργασίας παράλληλα ή διαδοχικά.

Εκτός από την παρουσίαση του προγραμματιστή εφαρμογών με ένα μοντέλο παράλληλου προγραμματισμού αγνωστικών δεδομένων συσκευής, το OpenCL παρέχει μια ιεραρχία ενιαίου μοντέλου μνήμης όπως φαίνεται στο σχήμα 2.

Εικόνα 2: Μοντέλο μνήμης OpenCL

Στο επίπεδο εφαρμογής του μοντέλου, ο χώρος μνήμης χωρίζεται σε μνήμη κεντρικού υπολογιστή και μνήμη συσκευής. Η μνήμη που συσχετίζεται με μια συσκευή χωρίζεται περαιτέρω σε τρία επίπεδα ιεραρχίας, συμπεριλαμβανομένης της παγκόσμιας μνήμης, της τοπικής μνήμης και της ιδιωτικής μνήμης. Η παγκόσμια μνήμη δημιουργείται από τα στοιχεία μνήμης που είναι συνδεδεμένα στη συσκευή, όπως το SDRAM. Η διαχείριση των buffer που αντιστοιχίζεται στην παγκόσμια μνήμη αντιμετωπίζεται από την εφαρμογή κώδικα φιλοξενίας μέσω της χρήσης των λειτουργιών OpenCL API. Οι λειτουργίες OpenCL API χρησιμοποιούνται για τον καθορισμό του μεγέθους ενός buffer καθώς και της ανάγνωσης πρόσβασης εγγραφής στο buffer. Από όλους τους τύπους μνήμης που υποστηρίζονται από το μοντέλο μνήμης OpenCL, είναι σημαντικό να έχουμε κατά νου ότι η παγκόσμια μνήμη είναι η μνήμη με τη μεγαλύτερη χωρητικότητα και τη μεγαλύτερη καθυστέρηση, ορίζοντας έτσι τη μέγιστη δυνατή απόδοση δεδομένων και είναι η μόνη μνήμη που είναι ορατή και από τις δύο τον κεντρικό υπολογιστή και τη συσκευή.

OpenCL και το FPGA

Ένα FPGA μπορεί να προγραμματιστεί για διαφορετικούς αλγόριθμους μετά την κατασκευή και, όπως φαίνεται στο Σχήμα 3, έχει πίνακες αναζήτησης (LUT) για να εκτελέσει λογικές πράξεις, flip-flops (FF) για να αποθηκεύσει το αποτέλεσμα του LUT και συνδέσεις μεταξύ στοιχείων και I / O μαξιλάρια για να πάρει δεδομένα μέσα και έξω από το IC. Οι σύγχρονες αρχιτεκτονικές FPGA ενσωματώνουν πρόσθετες υπολογιστικές (DSP), αποθήκευσης δεδομένων (BRAM), σειριακούς πομποδέκτες υψηλής ταχύτητας και μπλοκ ελεγκτή μνήμης εκτός τσιπ. Ο συνδυασμός αυτών των στοιχείων παρέχει στο FPGA την ευελιξία να εφαρμόσει προσαρμοσμένη λογική για ένα δεδομένο φορτίο λογισμικού.

Εικόνα 3: Βασική δομή ενός FPGA

Στο πλαίσιο του OpenCL, τα υφάσματα FPGA είναι κατάλληλα για αυτό το είδος φόρτου εργασίας λόγω της παράλληλης φύσης δεδομένων του κώδικα του πυρήνα. Σε αντίθεση με άλλες συσκευές που μπορούν να εκτελέσουν πυρήνες OpenCL, το ύφασμα FPGA μπορεί να προσαρμοστεί με πυρήνες που είναι πλήρως βελτιστοποιημένοι για έναν συγκεκριμένο πυρήνα, επιτρέποντας τον παραλληλισμό για την εκτέλεση του πυρήνα να κλιμακωθεί με το μέγεθος της συσκευής FPGA.

Οι πυρήνες εφαρμογών OpenCL που εκτελούνται σε μονάδες υπολογισμού επιταχυντών. Μια υπολογιστική μονάδα αναφέρεται στον πυρήνα του επεξεργαστή ή στη λογική του επιταχυντή που εκτελεί τις λειτουργίες στη λειτουργία του πυρήνα.

Αλγόριθμος SHA-1

Ο αλγόριθμος SHA-1 είναι μία από τις πιο συχνά χρησιμοποιούμενες κρυπτογραφικές λειτουργίες κατακερματισμού. Η δυνατότητα εξασφάλισης και ελέγχου της ακεραιότητας των δεδομένων με τη χρήση τέτοιων λειτουργιών αποτελεί τη βάση για τις online υπογραφές και το ασφαλές επίπεδο υποδοχής (SSL), το οποίο βρίσκεται στο επίκεντρο των λύσεων ηλεκτρονικού εμπορίου. Αυτή η λειτουργία είναι ιδανική για ένα FPGA, καθώς αποτελείται από λειτουργίες μετατόπισης, προσθήκης ή μετατόπισης σε ένα σύνολο δεδομένων 512 bit μέσω 80 γύρων επεξεργασίας. Το φορτίο δεδομένων των 512 bit που χρησιμοποιείται σε κάθε κύκλο υπολογισμού μπορεί να υπολογιστεί είτε με παράλληλο είτε με μπλοκ.

Σχήμα 4: Υπολογιστική μονάδα FPGA για SHA-1

Η εφαρμογή FPGA της συνάρτησης SHA-1 παρουσιάζεται στο Σχήμα 4. Σε αυτό το σχέδιο, το βασικό στοιχείο είναι η δημιουργία μιας προσαρμοσμένης υπολογιστικής μονάδας που θα περιλαμβάνει τους 80 γύρους επεξεργασίας που απαιτούνται για τον υπολογισμό ενός SHA-1. Με την ομαδοποίηση των 80 κύκλων επεξεργασίας μέσα στην ίδια λογική επεξεργασίας, ο σχεδιαστής εφαρμογών ελαχιστοποιεί τις αλληλεπιδράσεις με την κρυφή μνήμη ή τα στοιχεία μνήμης όπως θα απαιτούσε μια τυπική υλοποίηση CPU. Αυτό με τη σειρά του αυξάνει τη διακίνηση αυτής της λειτουργίας και μειώνει την κατανάλωση ενέργειας που απαιτείται για τη διατήρηση της επιτευχθείσας απόδοσης. Τα πλεονεκτήματα μιας υλοποίησης FPGA έναντι μιας εφαρμογής της CPU συνοψίζονται στον ακόλουθο πίνακα:

Για τη σύγκριση αυτή, ο επεξεργαστής Intel Haswell έχει 12 πυρήνες ικανός να εκτελέσει οποιονδήποτε κωδικό πυρήνα OpenCL αλλά δεν έχει βελτιστοποιηθεί για οποιοδήποτε συγκεκριμένο φόρτο εργασίας. Αντίθετα, η υλοποίηση FPGA έχει 16 πυρήνες που βελτιστοποιούνται για να εκτελούν μόνο το φορτίο SHA1. Η διαφορά στο επίπεδο προσαρμογής για τη μονάδα υπολογισμού του επιταχυντή μεταφράζεται απευθείας στη διαφορά απόδοσης μεταξύ των δύο συσκευών για αυτό το φόρτο εργασίας.

Τα αποτελέσματα του Xilinx FPGA δημιουργήθηκαν με την κατάρτιση του αλγορίθμου SHA1 χρησιμοποιώντας το περιβάλλον ανάπτυξης SDAccel για OpenCL, C και C ++ και την εκτέλεση του δυαδικού προγράμματος που προκύπτει σε μια συσκευή Xilinx Virtex 7. Το SDAccel παρέχει έως και 25 φορές καλύτερη απόδοση / watt για επιτάχυνση εφαρμογής κέντρου δεδομένων, αξιοποιώντας FPGAs και συνδυάζει τον πρώτο μεταγλωττιστή βελτιστοποίησης της βιομηχανίας που υποστηρίζει οποιονδήποτε συνδυασμό πυρήνων OpenCL, C και C ++ μαζί με τις βιβλιοθήκες, τις πλατφόρμες ανάπτυξης και την πρώτη ολοκληρωμένη CPU / GPU -like ανάπτυξη και την εμπειρία χρόνου εκτέλεσης για FPGAs.

Με BY: SPENSER GILLILAND, FERNANDO MARTINEZ VALLINA και VINAY SINGH, Xilinx, www.xilinx.com