Время выполнения 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.