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