Запуск более одного приложения CUDA на одном графическом процессоре

В документе CUDA не указано, сколько процессов CUDA может совместно использовать один графический процессор. Например, если я запустил несколько программ CUDA одним и тем же пользователем, и в системе была установлена ​​только одна видеокарта, каков будет эффект? Будет ли это гарантировать правильность исполнения? Как GPU планирует задачи в этом случае?

12 голосов | спросил cache 27 J000000Monday15 2015, 03:55:24

1 ответ


0

Деятельность CUDA из независимых хост-процессов обычно создает независимую CUDA контексты , по одному на каждый процесс. Таким образом, действие CUDA, запускаемое из отдельных хост-процессов, будет происходить в разных контекстах CUDA на одном устройстве.

Деятельность CUDA в отдельных контекстах будет сериализована. Графический процессор будет выполнять действие из одного процесса, а когда это действие простаивает, он может и будет переключать контекст в другой контекст, чтобы завершить действие CUDA, запущенное из другого процесса. Поведение подробного планирования между контекстами не указано. (Запуск нескольких контекстов на одном GPU также обычно не может нарушать основные ограничения GPU, такие как доступность памяти для выделения устройств.)

«Исключением» в этом случае (сериализация активности графического процессора из независимых хост-процессов) будет CUDA Multi-Process Server. В двух словах, MPS действует как «воронка» для сбора активности CUDA, исходящей от нескольких хост-процессов, и выполняйте это действие, как если бы оно исходило от одного хост-процесса. Основное преимущество заключается в том, чтобы избежать сериализации ядра, которые в противном случае могли бы работать одновременно . Канонический вариант использования будет использоваться для запуска нескольких рангов MPI, которые все намерены использовать один ресурс GPU.

Обратите внимание, что приведенное выше описание относится к графическим процессорам, которые находятся в "Default" режим вычислений . Графические процессоры в режимах вычислений «Эксклюзивный процесс» или «Эксклюзивный поток» будут отклонять любые попытки создания более одного процесса /контекста на одном устройстве. В одном из этих режимов попытки других процессов использовать уже используемое устройство приведут к сообщению об ошибке API CUDA. В некоторых случаях режим вычислений можно изменить с помощью nvidia утилита -smi .

ответил Robert Crovella 27 J000000Monday15 2015, 04:14:49

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132