Версия среды исполнения CUDA и версия драйвера CUDA - какая разница?

API CUDA Runtime предоставляет функции

  • cudaRuntimeGetVersion() и
  • cudaDriverGetVersion()

(подробное описание смотрите здесь). Я ожидал, что первый из них выдаст мне "8.0" (для CUDA 8.0), а второй - ту же строку, что и при изучении модуля ядра драйвера nVIDIA GPU, например

modinfo nvidia | grep "^version:" | sed 's/^version: *//;'

который в моей системе 367.57.

Теперь, первый звонок дает мне 8000 - хорошо, просто странный способ сказать 8.0, я думаю; но второй вызов API также дает мне 8000. Так что же они оба значат?

Документация по API времени выполнения, на которую я ссылался, похоже, не объясняет этого.

Ответ 1

Версия исполнения CUDA указывает на совместимость CUDA (например, версия) относительно установленной библиотеки cudart (CUDA runtime).

Версия драйвера CUDA (как сообщается здесь) сообщает о той же информации относительно драйвера.

Это относится к модели совместимости драйверов в CUDA. Как я уверен, вы знаете, что конкретная версия инструментария CUDA (например, версия библиотеки времени исполнения CUDA, версия компилятора nvcc и т.д.) требует определенного минимального уровня драйвера для правильного использования. коды, составленные с помощью этого инструментария.

Версия драйвера CUDA (как описано здесь) эффективно сообщает, какие версии CUDA могут поддерживаться определенным установленным драйвером.

Как вы уже обнаружили, он не сообщает о фактической нумерованной версии драйвера.