Οι προγραμματιστές του έργου LLVM κυκλοφόρησαν τον μεταγλωττιστή HPVM 1.0 (Ετερογενής Παράλληλη Εικονική Μηχανή), ο οποίος στοχεύει στην απλοποίηση του προγραμματισμού για ετερογενή συστήματα και παρέχει εργαλεία για τη δημιουργία κώδικα για CPU, GPU, FPGA και επιταχυντές υλικού ειδικού τομέα (η υποστήριξη για FGPA και επιταχυντές δεν περιλαμβανόταν στην έκδοση 1.0). Ο κώδικας του έργου διανέμεται με την άδεια Apache 2.0.
Η βασική ιδέα του HPVM είναι η χρήση μιας ενοποιημένης αναπαράστασης παράλληλων προγραμμάτων κατά τη μεταγλώττιση, η οποία μπορεί να χρησιμοποιηθεί για εκτέλεση χρησιμοποιώντας διάφορους τύπους υλικού που υποστηρίζουν παράλληλη υπολογιστική, συμπεριλαμβανομένων GPU, διανυσματικών εντολών, πολυπύρηνων επεξεργαστών, FPGA και διαφόρων εξειδικευμένων τσιπ επιταχυντή. Σε αντίθεση με άλλα συστήματα, το HPVM προσπάθησε να συνδυάσει τρεις δυνατότητες για την οργάνωση ετερογενούς υπολογιστικής: μια ενδιάμεση αναπαράσταση ανεξάρτητη από τη γλώσσα προγραμματισμού και το υλικό, μια αρχιτεκτονική εικονικού συνόλου εντολών (ISA) και προγραμματισμό χρόνου εκτέλεσης.
Η ενδιάμεση αναπαράσταση (IR) ανεξάρτητη από τον στόχο του HPM βασίζεται στο IR εντολών LLVM 9.0 και το επεκτείνει με ένα ιεραρχικό γράφημα ροής δεδομένων για να καταγράψει την παραλληλία σε επίπεδα εργασιών, δεδομένων και υπολογιστικής αγωγού. Το IR του HPM περιλαμβάνει επίσης διανυσματικές εντολές και κοινόχρηστη μνήμη. Ο πρωταρχικός στόχος του IR είναι να επιτρέψει την αποτελεσματική δημιουργία κώδικα και βελτιστοποιήσεις για ετερογενή συστήματα.
Η αρχιτεκτονική εικονικού συνόλου εντολών (ISA) επιτρέπει τη φορητότητα μεταξύ διαφορετικών τύπων παράλληλου υπολογιστικού υλικού και επιτρέπει τη διατήρηση της απόδοσης σε διαφορετικά στοιχεία ετερογενών συστημάτων. Το εικονικό ISA μπορεί επίσης να χρησιμοποιηθεί για την παροχή καθολικού εκτελέσιμου κώδικα προγράμματος που μπορεί να εκτελεστεί σε CPU, GPU, FPGA και διάφορους επιταχυντές.
Στο τρέχον στάδιο ανάπτυξης, το HPM προσφέρει γεννήτριες κώδικα που μπορούν να μεταφράσουν κόμβους εφαρμογών που ορίζονται από το εικονικό ISA για εκτέλεση χρησιμοποιώντας GPU NVIDIA (cuDNN και OpenCL), διανυσματικές οδηγίες Intel AVX και επεξεργαστές x86 πολλαπλών πυρήνων. Κατά τον χρόνο εκτέλεσης, το HPM εφαρμόζει ευέλικτες πολιτικές προγραμματισμού για την υπολογιστική διαδικασία, οι οποίες υλοποιούνται τόσο με βάση τις πληροφορίες του προγράμματος (δομή γραφήματος) όσο και με τη μεταγλώττιση μεμονωμένων κόμβων προγράμματος για εκτέλεση σε οποιαδήποτε από τις στοχευμένες υπολογιστικές συσκευές που είναι διαθέσιμες στο σύστημα.
Σημειώνεται ότι η χρήση του HPM επιτρέπει την επίτευξη σημαντικής αύξησης της παραγωγικότητας. Η απόδοση των αποτελεσμάτων της εργασίας των μεταφραστών HPM είναι συγκρίσιμη με τον χειρόγραφο κώδικα OpenCL για συσκευές GPU και διανυσματικών υπολογισμών.
Σε σύγκριση με την πρώτη έκδοση προεπισκόπησης, η HPM 1.0 περιλαμβάνει υποστήριξη για λειτουργίες τενσόρ γραμμικής άλγεβρας, frontends για Pytorch και Keras, προσεγγίσεις τελεστών συνέλιξης και ένα πλαίσιο για τη ρύθμιση των προσεγγίσεων που επιλέγει αυτόματα τις βέλτιστες προσεγγίσεις για ορισμένες λειτουργίες τενσόρ και επιλέγει τη διαμόρφωση που παρέχει βέλτιστη απόδοση.
Πηγή: opennet.ru
