A NVIDIA apresentou o CUDA Rust para desenvolvimento de núcleos de GPU na linguagem Rust

A empresa NVIDIA anunciou o desenvolvimento do conjunto de ferramentas CUDA Rust, que permite usar a linguagem Rust para desenvolver núcleos executáveis no lado da GPU. O conjunto de ferramentas garante segurança no manuseio de memória durante a compilação e evita a ocorrência de condições de corrida. No próximo ano, o CUDA Rust deve ser aprimorado para um nível adequado ao desenvolvimento de projetos práticos, semelhante aos conjuntos de ferramentas CUDA C++ e CUDA Python.

O conjunto de ferramentas CUDA Rust suporta dois modelos de desenvolvimento de núcleos executados em paralelo — SIMT (Single Instruction, Multiple Threads) e Tile. O modelo SIMT permite definir logicamente um único thread em um nível baixo, executar milhares desses threads e gerenciá-los. O modelo Tile oferece um nível de abstração mais alto, onde em vez de controlar explicitamente threads individuais, algoritmos de ação são definidos com blocos de dados (tile), e todas as manobras com threads, sincronização de acesso, gerenciamento de memória e distribuição de dados entre núcleos tensor são feitas pelo compilador Tile IR.

Para desenvolvimento na linguagem Rust usando o modelo SIMT, está sendo desenvolvido o compilador cuda-oxide, que permite compilar código na linguagem Rust, utilizando o sistema de tipos padrão e o modelo de propriedade de Rust, diretamente em instruções para execução em máquina virtual CUDA PTX (Parallel Thread Execution). Os núcleos para GPU são criados em Rust padrão, mas executados em um ambiente no_std e só podem usar funções da biblioteca libcore e abstrações Rust especializadas, sem acesso à biblioteca padrão Rust (libstd).

Nos núcleos CUDA em Rust, é permitida a aplicação de segurança através do sistema de tipos (safe), uso de blocos unsafe e acesso a instruções de hardware de baixo nível. Para garantir a segurança, é proposto o tipo DisjointSlice, que garante que cada thread tenha acesso exclusivo apenas aos seus dados. O código cuda-oxide é distribuído sob a licença Apache 2.0.

Para a aplicação do modelo Tail, é sugerida a biblioteca cutile-rs, que permite usar a linguagem idiomática Rust para criar códigos que são compilados diretamente em núcleos CUDA. A cutile-rs aplica as rígidas regras de propriedade e empréstimo propostas pelo Rust ao código executado na GPU. O núcleo é estruturado como um programa de thread única que opera em um bloco de dados, enquanto o compilador divide os cálculos em threads e gerencia sua sincronização. As threads têm acesso compartilhado a tensores imutáveis, e o acesso seguro a tensores mutáveis é conseguido através de sua divisão em blocos não sobrepostos. O código cutile-rs é distribuído sob a licença Apache 2.0.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster