Руководство компилятора
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.