2012-03-19 4 views
1

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

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

ответ

7

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

  • JIT компилятор/оптимизатор (код сборки PTX может быть скомпилирован водителем во время выполнения, водитель также будет перекомпилировать код, чтобы соответствовать архитектуре выполнения устройства при необходимости и возможно) управление памятью
  • устройство управления памятью
  • хост (DMA буферы передачи, прижат и нанесены на карту памяти хоста, единая модель адресации)
  • Контекст и поддержка выполнения (так код/​​кучи/стек/Printf управление памятью буфера), управление динамическими символами, потоки и т. д.
  • Кернел «уровень сетки» планировщик (включает в себя управление нескольких одновременных ядер на архитектуре, поддерживает)
  • управления режимом Compute
  • драйвер дисплея Interop (для совместного использования DirectX и OpenGL ресурса)

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

+0

Спасибо, отличный ответ! –

+0

Еще один вопрос, если вы не возражаете. Эта «унифицированная модель адресации» похожа на виртуальную память, верно? То, что адреса виртуальной памяти, используемые в ядре CUDA, будут переведены на реальные физические адреса памяти GPU (глобальные, локальные, общие, ...). Это чисто сделано на уровне водителя? Я думаю, что драйвер просто должен перевести унифицированный адрес на фактический физический адрес (глобальный, локальный, ...), в то время как GPU HW не должен ничего знать об этом виртуальном материале. Правильно ли я понимаю? Благодаря ! –

+0

Что я подразумеваю под унифицированной адресацией, это схема в CUDA 4.0 и более поздних версиях, которая позволяет нескольким графическим процессорам и некоторым другим устройствам, таким как сетевые интерфейсы, отображать себя в общее адресное пространство с хостом. Все это делает водитель. Кажется, что у карт Fermi есть TLB для выполнения внутреннего сопоставления виртуальных адресов с аппаратными функциями. Это необходимо запрограммировать, в котором будет находиться драйвер, но в противном случае адресный перевод должен выполняться устройством. – talonmies

Смежные вопросы