Документация / РусскийИсходный текст ↗

Ruda — высокопроизводительные вычисления на Rust

Rust Язык Форки Задачи Последний коммит

English | 简体中文 | 日本語 | Deutsch | Русский

Ruda — библиотека высокопроизводительных вычислений на Rust, создающая полный программный стек: от GPU-ядер, компиляторов и сред выполнения до математических вычислений, тензоров и моделей.

Ruda разрабатывает пути компиляции и выполнения Rust для PTX, HIP и собственных ISA, сохраняя путь компиляции CUDA C++. Контролируемая инкапсуляция unsafe на нижнем уровне в сочетании с системой типов, владением и заимствованием Rust на верхних уровнях обеспечивает баланс между низкоуровневым управлением производительностью и безопасностью памяти на верхних уровнях.

Быстрый старт

Необходимы Git, Rust/Cargo, набор инструментов с компоновщиком, GPU NVIDIA с драйвером и CUDA Toolkit. Подробности установки см. в разделе настройки окружения.

Использование опубликованного крейта

Добавьте бэкенд CUDA в Cargo.toml приложения:

[dependencies]
ruda-driver-cuda = { version = "0.1", features = ["direct-ptx"] }

Следующие примеры запускаются из каталога исходного кода.

Клонирование

git clone https://github.com/shuqi2077/RUDA.git
cd RUDA

Запуск GPU-ядра

Выберите в оболочке компилятор прямой генерации PTX:

# Bash
export RUDA_CUDA_COMPILER=ptx
export RUDA_PTX_VERSION=8.0
# PowerShell
$env:RUDA_CUDA_COMPILER = 'ptx'
$env:RUDA_PTX_VERSION = '8.0'

Затем соберите и запустите пример:

cargo run --release --locked -p ruda-driver-cuda --features direct-ptx --example ptx-runtime

Пример выполняет сложение FP32 на GPU и выводит строки PASS и счётчики кеша компиляции. Выберите версию PTX, поддерживаемую вашим GPU и драйвером.

Генерация текста с ruLLM

Поместите локальную модель Qwen3.5-0.8B в ./models/qwen35 или замените путь ниже каталогом своей модели. Файлы модели не входят в комплект; см. подготовку модели.

cargo run --release --locked -p ruda-llm --features nvidia-ptx --example qwen35_generate -- ./models/qwen35 "The capital of France is" 8 1

Пример выводит сгенерированный текст и идентификаторы токенов. Чтобы вместо этого использовать путь CUDA C++ / NVRTC, перед запуском любого из примеров задайте RUDA_CUDA_COMPILER значение nvrtc.

Использование нативного бэкенда PyTorch

ruda-torch регистрирует устройство PyTorch ruda:0 на одном GPU NVIDIA. Установите PyTorch и setuptools, подготовьте компилятор C++20 и выполните следующие команды из корня репозитория с указанными выше настройками окружения PTX. В Windows используйте оболочку разработчика x64 MSVC.

cargo build --locked -p ruda-torch-native
python -m pip install --no-build-isolation --no-deps -e ./ruda-torch/python

Загрузчик по умолчанию автоматически находит эту debug-сборку. Для release-сборки или другого расположения библиотеки укажите её путь в RUDA_TORCH_LIBRARY. Библиотека Rust и расширение C++ должны использовать ABI 10; пересобирайте их вместе.

import torch
import ruda_torch

x = torch.arange(4, dtype=torch.float32).to("ruda:0")
print((x + x).cpu())

Готовые Windows wheels доступны среди артефактов успешных запусков RUDA Torch Windows build. Скачайте и распакуйте артефакт wheel, затем установите содержащийся в нём файл .whl командой python -m pip install --no-deps. Wheel включает нативную DLL и предназначен для Windows x64, CPython 3.13 и PyTorch 2.13.0+cu130; сначала установите соответствующую сборку PyTorch. Артефакты хранятся семь дней. ruda-torch-native собирается из исходного кода и не является пакетом crates.io.

Организация стека

Один репозиторий, несколько крейтов с чётко разделёнными обязанностями. Стек организован по уровням — от предметных библиотек до высокоуровневых фреймворков — и развивается совместно.

Уровень Компоненты
Общие контракты ruda-core
Компиляция и ядра ruda-compiler, ruda-kernel, компоненты макросов
Среда выполнения и драйверные бэкенды ruda, ruda-driver-cuda/cpu/wgpu/hip
Предметные библиотеки ruBLAS, ruDNN, ruPRIM, ruFFT, ruRAND, ruSPARSE
Коллективные коммуникации ruCCL, ruda-communication
Тензоры и фреймворки ruda-tensor*, ruda-autodiff, ruda-fusion
Интеграция с PyTorch ruda-torch-native (Rust), ruda_torch (Python)
Модели и данные ruda-model, ruda-nn, ruda-optim, ruda-store, ruda-dataset

Нативный GPU-инференс

Страничный Attention требует непрерывных тензоров FP32/FP16/BF16 одного типа на одном устройстве и в одной очереди выполнения. Поддерживаются прямой и обратный проход первого порядка, но не произвольные внешние маски или квантованные KV-кеши. PyTorch по умолчанию использует атомарные градиенты истории; backward_strategy="ordered" выбирает путь без атомиков. Кэш строк истории и уплотнение физических страниц включаются явно. MLA/MoE — повторно используемые компоненты; полные адаптеры моделей должны предоставлять проекции, позиционное кодирование, параметры маршрутизации и управление владением кешем.

Пути к оборудованию

Изучение и участие

Если вам интересны Rust, GPU-ядра, компиляторы или высокопроизводительные вычисления, присоединяйтесь к развитию и ускорению этого стека.

Происхождение и лицензирование

Уведомления о сторонних компонентах

Оригинальный программный код Ruda, который проект вправе лицензировать, доступен по Apache License 2.0. Сторонние файлы сохраняют исходные лицензии; корневая лицензия не отменяет декларации MIT OR Apache-2.0 в перенесённых компонентах.