NVIDIA a introduit CUDA Rust pour le développement de noyaux GPU en langage Rust.

NVIDIA a annoncé le développement du kit d'outils CUDA Rust, qui permet de développer des noyaux (kernel) en Rust s'exécutant sur le GPU. Ce kit garantit la sécurité de la mémoire à la compilation et prévient les conditions de concurrence. L'année prochaine, CUDA Rust devrait atteindre un niveau de développement adapté aux projets de production, à l'instar des kits d'outils CUDA C++ et CUDA Python.

La chaîne d'outils CUDA Rust prend en charge deux modèles pour le développement de noyaux parallèles : SIMT (Single Instruction, Multiple Threads) et Tile. Le modèle SIMT permet la définition de bas niveau d'un seul thread, ainsi que le lancement et la gestion de milliers de threads similaires. Le modèle Tile offre un niveau d'abstraction plus élevé : au lieu de gérer explicitement chaque thread, des algorithmes d'opération sur des blocs de données (tuiles) sont définis, et le compilateur Tile IR gère la manipulation des threads, la synchronisation des accès, la gestion de la mémoire et la distribution des données entre les cœurs Tensor.

Pour le développement en Rust utilisant le modèle SIMT, le compilateur cuda-oxide est en cours de développement. Ce compilateur permet de compiler du code Rust, utilisant le système de types standard et le modèle de propriété Rust, directement en instructions exécutables. machine virtuelle CUDA PTX (exécution parallèle de threads). Les noyaux GPU sont écrits en Rust standard, mais s'exécutent dans un environnement sans bibliothèque standard (libstd) et ne peuvent utiliser que les fonctions de la bibliothèque libcore et des abstractions Rust spécialisées, sans accès à la bibliothèque standard Rust (libstd).

Les noyaux CUDA écrits en Rust permettent l'utilisation de la protection des types (exécution sécurisée), l'emploi de blocs non sécurisés et l'accès aux instructions matérielles de bas niveau. Pour garantir la sécurité, le type DisjointSlice est proposé, assurant ainsi que chaque thread dispose d'un accès exclusif à ses propres données. Le code cuda-oxide est distribué sous licence Apache 2.0.

Pour implémenter le modèle Tail, la bibliothèque cutile-rs est proposée. Elle permet d'utiliser le langage Rust pour créer du code directement compilable en noyaux CUDA. Cutile-rs applique les règles strictes de propriété et d'emprunt de mémoire de Rust au code exécuté sur le GPU. Le noyau est implémenté comme un programme monothread opérant sur un bloc de données, et le compilateur répartit automatiquement le calcul en threads et assure leur synchronisation. Les threads ont un accès partagé aux tenseurs immuables, et les tenseurs mutables sont partitionnés en blocs disjoints pour garantir un accès sécurisé. Le code de cutile-rs est distribué sous licence Apache 2.0.

Source: opennet.ru

Achetez un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Achetez un hébergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster