Η NVIDIA παρουσίασε το CUDA Rust για την ανάπτυξη πυρήνων GPU στη γλώσσα Rust.

Η NVIDIA ανακοίνωσε την ανάπτυξη του κιτ εργαλείων CUDA Rust, το οποίο επιτρέπει στη γλώσσα προγραμματισμού Rust να αναπτύσσει πυρήνες που εκτελούνται στην GPU. Το κιτ εργαλείων διασφαλίζει την ασφάλεια της μνήμης κατά τη μεταγλώττιση και αποτρέπει συνθήκες ανταγωνισμού. Του χρόνου, το CUDA Rust έχει προγραμματιστεί να αναπτυχθεί σε επίπεδο κατάλληλο για έργα παραγωγής, παρόμοιο με το κιτ εργαλείων CUDA C++ και CUDA Python.

Η αλυσίδα εργαλείων CUDA Rust υποστηρίζει δύο μοντέλα για την ανάπτυξη παράλληλων πυρήνων: SIMT (Μία Εντολή, Πολλαπλά Νήματα) και Tile. Το μοντέλο SIMT επιτρέπει τον ορισμό χαμηλού επιπέδου ενός μόνο νήματος, την εκκίνηση και τη διαχείριση χιλιάδων τέτοιων νημάτων. Το μοντέλο Tile προσφέρει ένα υψηλότερο επίπεδο αφαίρεσης, όπου αντί για ρητή διαχείριση μεμονωμένων νημάτων, ορίζονται αλγόριθμοι για λειτουργία σε μπλοκ δεδομένων (πλακίδια) και ο μεταγλωττιστής Tile IR χειρίζεται όλο τον χειρισμό νημάτων, τον συγχρονισμό πρόσβασης, τη διαχείριση μνήμης και την κατανομή δεδομένων μεταξύ πυρήνων tensor.

Για την ανάπτυξη στη γλώσσα Rust χρησιμοποιώντας το μοντέλο SIMT, αναπτύσσεται ο μεταγλωττιστής cuda-oxide, ο οποίος επιτρέπει τη μεταγλώττιση κώδικα στη γλώσσα Rust, χρησιμοποιώντας το σύστημα τυπικών τύπων και το μοντέλο ιδιοκτησίας Rust, απευθείας σε οδηγίες για εκτέλεση σε εικονική μηχανή CUDA PTX (Παράλληλη Εκτέλεση Νημάτων). Οι πυρήνες της GPU γράφονται σε κανονικό Rust, αλλά εκτελούνται σε περιβάλλον no_std και μπορούν να χρησιμοποιήσουν μόνο συναρτήσεις από τη βιβλιοθήκη libcore και εξειδικευμένες αφαιρέσεις Rust, χωρίς πρόσβαση στην τυπική βιβλιοθήκη Rust (libstd).

Οι πυρήνες CUDA που είναι γραμμένοι σε Rust επιτρέπουν τη χρήση προστασίας τύπου (ασφαλής), τη χρήση μη ασφαλών μπλοκ και την πρόσβαση σε εντολές υλικού χαμηλού επιπέδου. Για να διασφαλιστεί η ασφάλεια, προτείνεται ο τύπος DisjointSlice, διασφαλίζοντας ότι κάθε νήμα έχει αποκλειστική πρόσβαση μόνο στα δικά του δεδομένα. Ο κώδικας cuda-oxide διατίθεται με την άδεια Apache 2.0.

Για την υλοποίηση του μοντέλου Tail, προτείνεται η βιβλιοθήκη cutile-rs. Επιτρέπει τη χρήση της ιδιωματικής γλώσσας Rust για τη δημιουργία κώδικα που μεταγλωττίζεται απευθείας σε πυρήνες CUDA. Το Cutile-rs εφαρμόζει τους αυστηρούς κανόνες ιδιοκτησίας και δανεισμού του Rust σε κώδικα που εκτελείται στην GPU. Ο πυρήνας υλοποιείται ως πρόγραμμα με ένα μόνο νήματα που λειτουργεί σε ένα μπλοκ δεδομένων και ο μεταγλωττιστής διαχωρίζει αυτόματα τον υπολογισμό σε νήματα και διασφαλίζει τον συγχρονισμό τους. Τα νήματα έχουν κοινόχρηστη πρόσβαση σε αμετάβλητους τανυστές και οι μεταβλητοί τανυστές διαμερίζονται σε ασύνδετα μπλοκ για να διασφαλιστεί η ασφαλής πρόσβαση. Ο κώδικας cutile-rs διανέμεται με την άδεια Apache 2.0.

Πηγή: opennet.ru

Αγοράστε αξιόπιστη φιλοξενία για ιστότοπους με προστασία DDoS, διακομιστές VPS VDS 🔥 Αγοράστε αξιόπιστη φιλοξενία ιστοσελίδων με προστασία DDoS, διακομιστές VPS VDS | ProHoster