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

Руководство компилятора

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

Документация · Справочник по PTX · Руководство по программированию · 中文

1. Конвейер компиляции

Универсальный путь ядра начинается с макросов и типов в ruda-kernel::dsl, создаёт Kernel IR и использует бэкенд для понижения представления и генерации кода. ruda-compiler содержит реализации компиляторов; драйверы устройств передают их результат среде выполнения.

NVIDIA предлагает два пути компиляции:

Выбор Конвейер компиляции ядра
nvrtc (по умолчанию) Интерфейс ядра Rust → IR → CUDA C++ → NVRTC → PTX
ptx Интерфейс ядра Rust → IR → PTX

Оба выполняются через драйвер NVIDIA. Путь компиляции C++ CUDA не является интерфейсом для импорта произвольных проектов C++ или обеспечения полной совместимости с исходным кодом CUDA.

2. Feature Cargo

Компонент/функция Цель
ruda-kernel/frontend Ядро DSL внешнего интерфейса
ruda-kernel/lowering-cpp Интеграция понижения в C++
ruda-compiler/cpp Реализация бэкенда C++
ruda-compiler/ptx Прямой компилятор PTX
ruda-driver-cuda/direct-ptx Позволяет прямой выбор PTX в бэкенда CUDA.

Функции определяют, какой код будет построен; переменные среды выбирают путь во время выполнения. Это отдельные элементы управления. См. манифест CUDA и манифест компилятора.

3. Переменные среды

Переменная Поведение
RUDA_CUDA_COMPILER Принимает nvrtc или ptx; по умолчанию используется nvrtc, если не установлено
RUDA_PTX_VERSION Direct PTX требует явной версии major.minor.
CUDA_PATH CUDA Корень установки Toolkit
RUDA_PTX_TEST_CACHE Переопределение каталога кеша, считываемое только примером ptx-runtime

Неизвестные значения компилятора приводят к ошибке. Выбор ptx без включения direct-ptx также приводит к ошибке вместо переключения на NVRTC. См. compiler_backend.rs.

4. Цели и кэши

Для автономной прямой компиляции PTX требуется явная версия PTX и цель SM. PTX идентифицирует версию набора команд; SM идентифицирует целевую архитектуру. Они не являются взаимозаменяемыми.

Пространство имен прямого кэша PTX драйвера CUDA включает внутренний идентификатор SM и версию PTX и отделено от кэша NVRTC.

5. Ошибки компиляции

Неподдерживаемый IR, метаданные аргумента или целевые условия приводят к ошибкам. Direct PTX сообщает о неподдерживаемых операциях, а не автоматически переключает пути компиляции. См. Отладка.

ruda-compiler также содержит модули WGSL, SPIR-V и MLIR.