Руководство по совместимости
English | 简体中文 | 日本語 | Deutsch | Русский
Документация · Руководство по программированию · 中文
1. Концепции CUDA
| Знакомая концепция CUDA | Точка входа Ruda |
|---|---|
| Обязанности хоста и устройства | Хостовый код Rust и DSL ядер |
| Grid/block | RudaCount/RudaDim |
| Одномерная глобальная позиция потока | ABSOLUTE_POS |
| Выделение памяти и передача данных | Интерфейсы памяти и обратного чтения ComputeClient |
| Компиляция и запуск ядра | ruda-kernel, ruda-compiler и среда выполнения устройства |
| Библиотеки BLAS, DNN, FFT и разреженных вычислений | ruBLAS, ruDNN, ruFFT и ruSPARSE |
| Коллективные коммуникации | ruCCL |
Это сопоставление концепций, а не взаимозаменяемых функций. Соблюдайте контракты API Ruda для владения, аргументов, синхронизации и ошибок.
2. CUDA C++ и PTX
Ruda предоставляет путь CUDA C++/NVRTC и явно выбираемый путь прямой генерации PTX. Оба выполняются через драйвер NVIDIA.
Путь компиляции CUDA C++ не обеспечивает компиляцию произвольных CUDA-проектов без изменений, полную замену CUDA Runtime/Driver ABI или прямую перекомпоновку существующих бинарных библиотек. В этом руководстве нет команды для автоматического преобразования всех CUDA-приложений.
Прямой PTX обрабатывает Kernel IR, реализованный генератором, а не произвольные входные PTX-программы. Неподдерживаемые операции не вызывают автоматический переход к другому компилятору.
3. Бэкенды и типы данных
Бэкенды различаются скалярными типами, атомарными операциями, матричными инструкциями, раскладками памяти и синхронизацией. Запросите возможности устройства, затем проверьте требования каждой операции к типам и раскладке.
Тип из общего перечисления DType не обязательно доступен для каждой операции на каждом бэкенде. Один и тот же обобщённый интерфейс Rust не гарантирует одинакового округления или производительности.
HIP использует отдельный интерфейс выполнения; номера версий набора инструкций PTX к нему не применяются.
4. Cargo и имена
Отображаемые имена библиотек, имена пакетов Cargo и имена для импорта Rust могут различаться. См. каталог вычислительных библиотек. Feature управляют доступными сочетаниями; сборка по умолчанию не включает все пути.
Фронтенд ядер использует #[ruda], RudaCount и RudaDim.
5. Версии и численная проверка
Версия исходников, lock-файл, feature, бэкенд компилятора, PTX/SM, драйвер и GPU совместно определяют конфигурацию проверки.
При замене вызова вычислительной библиотеки согласуйте раскладку, транспонирование, базу индексов, типы входов и накопления, нормализацию, особые значения и синхронизацию. Например, ruFFT дополняет длины, не являющиеся степенями двойки; это не семантически эквивалентная замена FFT произвольной длины.