Что бы произошло, если бы четыре одновременных приложения CUDA конкурировали за ресурсы в одном графическом процессоре
чтобы они могли переложить работу на графическую карту? Руководство по программированию Cuda 3.1 упоминает, что
некоторые методы, которые являются асинхронными:
- Запускает ядро
- Устройство памяти устройства копирует
- Копии памяти хост-устройства блока памяти объемом 64 КБ или менее
- Копии памяти, выполняемые функциями с суффиксом Async
- вызовы функций набора памяти
Также упоминается, что устройства с вычислительной способностью 2.0 способны выполнять несколько ядер одновременно, если ядра принадлежат одному и тому же контексту.
Применяется ли этот тип параллелизма только к потокам в пределах одного приложения cuda, но это невозможно, когда есть полные различные приложения, запрашивающие ресурсы GPU ??
Означает ли это, что одновременная поддержка доступна только в 1 приложении (контекст ???), и что 4 приложения будут работать одновременно, так что методы могут перекрываться переключением контекста в ЦП, но в 4 приложениях нужно дождаться освобождения графического процессора другими приложениями? (то есть запуск ядра из app4 ожидает, пока не завершится запуск ядра из app1 ..)
Если это так, как эти 4 приложения могут получать доступ к ресурсам графического процессора, не испытывая при этом длительного ожидания?