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

Время выполнения API Справочник

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

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

Среда выполнения общего назначения находится в ruda::runtime и поддерживается функцией ruda/runtime. Для каждого бэкэнда также требуется соответствующий крейт драйвера.

1. Типы ядер

Тип Ответственность Определение
Runtime Компилятор, сервер и устройство Associates; предоставляет клиенты устройств backend.rs
ComputeClient<R> Распределение, передача ядра, обратное чтение, синхронизация и запросы возможностей client.rs
ComputeServer Контракт на выполнение бэкенда серверный модуль
RudaTensor<R> Хранилище устройства и метаданные тензора Определение тензора

R::client(&device) получает клиент среды выполнения. R::Device определяет тип устройства; совместное использование типа среды выполнения не делает хранилище на разных физических устройствах взаимозаменяемым.

2. Память и передача

Эти методы принадлежат ComputeClient<R>:

Метод Поведение
create_from_slice(&[u8]) Создает данные устройства из байтов хоста и возвращает дескриптор.
empty(usize) Выделяет память в байтах, не гарантируя нулевую инициализацию.
create_tensor_from_slice, empty_tensor Создает макеты тензорного хранилища, используя форму и размер элемента.
read_one(Handle) Синхронно считывает один дескриптор; возвращает Result<Bytes, ServerError>
read_async(Vec<Handle>) Возвращает результаты асинхронного чтения.
read(Vec<Handle>) Синхронно считывает несколько дескрипторов; паника при ошибке
memory_usage() Запрашивает использование памяти, отслеживаемое средой выполнения.

read_one_unchecked вызывает панику, если обратное чтение завершается неудачно; его название не означает, что он отключает проверку границ ядра. Для несмежных тензоров используйте интерфейсы обратного чтения тензоров, а не интерпретируйте необработанные байты как смежные элементы.

3. Контроль выполнения

Метод Поведение
launch отправляет ядро в проверенный режим.
launch_unchecked Небезопасный интерфейс; BoundsCheckMode управляет фактическим режимом проверки.
flush Отправляет команды из очереди и возвращает Result.
sync Возвращает будущее, ожидающее завершения выполнения.
set_stream Небезопасно устанавливает StreamId клиента.

launch не возвращает вычисленные результаты устройства. Во время обратного чтения или синхронизации могут возникнуть ошибки асинхронной компиляции или выполнения. Интерфейсы запуска, созданные макросами, также создают аргументы; их полные контракты не взаимозаменяемы с подписями клиентских методов.

4. Возможности и профилирование

properties() возвращает свойства устройства, а features() возвращает набор функций. Запросите соответствующие возможности перед выбором dtypes, атомарных или матричных инструкций. Используйте enumerate_devices, enumerate_all_devices и методы подсчета для перечисления. profile обеспечивает профилирование во время выполнения; различают подчинение, исполнение и передачу в измерениях.

5. Ошибки и безопасность

При низкоуровневых запусках без проверок вызывающая сторона должна исключить обращения за границы и бесконечные циклы. Раскладки, длины привязок и время жизни между потоками выполнения должны соответствовать ядру. Настройка проверок описана в разделе отладки, интеграция устройств — в Driver API.