Что конкретно делает драйвер nVIDIA CUDA? - PullRequest
1 голос
/ 19 марта 2012

Что конкретно делает драйвер Nvidia CUDA?с точки зрения использования CUDA.Драйвер передает код ядра с конфигурацией выполнения (#threads, #blocks) ... и что еще?

Я видел какой-то пост о том, что драйвер должен знать о количестве доступных SM.Но разве это не нужно?Как только ядро ​​передается в GPU, планировщику GPU просто нужно распространить работу на доступные SM ...

1 Ответ

7 голосов
/ 19 марта 2012

Графический процессор не является полностью автономным устройством, ему требуется много помощи от драйвера хоста, чтобы сделать даже самые простые вещи.Насколько я понимаю, драйвер содержит как минимум:

  • JIT-компилятор / оптимизатор (код сборки PTX может быть скомпилирован драйвером во время выполнения, драйвер также будет перекомпилировать код в соответствии с архитектурой выполнения устройстваесли требуется и возможно)
  • Управление памятью устройства
  • Управление памятью хоста (буферы передачи DMA, закрепленная и назначенная память хоста, модель унифицированной адресации)
  • Поддержка контекста и времени выполнения (такуправление буферной памятью code / heap / stack / printf), динамическое управление символами, потоки и т. д.
  • Планировщик ядра на уровне сетки (включает управление несколькими одновременными ядрами на архитектурах, которые его поддерживают)
  • Computeуправление режимами
  • Взаимодействие драйвера дисплея (для совместного использования ресурсов DirectX и OpenGL)

Это, вероятно, представляет собой минимальный уровень, необходимый для получения кода пользовательского устройства на GPU и запуска черезAPI стороны хоста.

...