Активность CUDA из независимых процессов хоста обычно создает независимые контексты CUDA , по одному для каждого процесса. Таким образом, активность CUDA, запущенная из отдельных хост-процессов, будет проходить в отдельных контекстах CUDA на одном устройстве.
Активность CUDA в отдельных контекстах будет сериализована. GPU будет выполнять активность из одного процесса, и когда эта активность неактивна, он может и будет переключать контекст в другой контекст, чтобы завершить деятельность CUDA, запущенную из другого процесса. Подробное поведение межконтекстного планирования не указано. (Запуск нескольких контекстов на одном графическом процессоре также обычно не может нарушать основные ограничения графического процессора, такие как доступность памяти для распределения устройств.)
«Исключение» в этом случае (сериализация активности графического процессора от независимых хост-процессов) быть многопроцессорным сервером CUDA. В двух словах MPS действует как «воронка» для сбора активности CUDA, исходящей из нескольких хост-процессов, и запускает эту активность, как если бы она исходила из одного хост-процесса. Главное преимущество - избежать сериализации ядер, которые в противном случае могли бы работать одновременно . Канонический вариант использования будет состоять в том, чтобы запустить несколько рангов MPI, которые все намерены использовать один ресурс графического процессора.
Обратите внимание, что приведенное выше описание относится к графическим процессорам, которые находятся в режиме вычисления «по умолчанию» . Графические процессоры в режимах «Эксклюзивный процесс» или «Эксклюзивный поток» отклонят любые попытки создания более одного процесса / контекста на одном устройстве. В одном из этих режимов попытки других процессов использовать уже запущенное устройство приведут к ошибке CUDA API. Режим вычисления в некоторых случаях может быть изменен с использованием утилиты nvidia-smi .
Вы собираетесь хотеть разделить свои аргументы на отдельный параметр
$msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe"
$arguments = "/v:q /nologo"
start-process $msbuild $arguments
Если OP не использует Расширения Сообщества PowerShell, который действительно обеспечивает Начинать-процесс cmdlet наряду с набором других. Если это случай тогда решение Glennular работает обработка, так как это соответствует позиционным параметрам pscx\start-процесса: - путь (положение 1) - аргументы (положение 2).
Используя явные параметры, это было бы:
$msbuild = 'C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe'
start-Process -FilePath $msbuild -ArgumentList '/v:q','/nologo'
Править: кавычки.