iCrosss Facebook page

суббота, 6 марта 2010 г.

Driver API или Runtime API что выбрать?

Вы наверняка видели в документации по CUDA следующую картинку. Давайте расшифруем все её элементы. К CUDA Libraries можно отнести библиотеки высокого уровня, которые предоставлены компанией NVIDIA (CUBLASS, CUFFT), а также сюда можно отнести все библиотеки, которые написаны или будут написаны с использованием CUDA. CUDA Runtime API – представляет собой API для работы с GPU адаптером(ами), запуском ядра и операциями с памятью. Все функции CUDA Runtime имеют префикс “cuda”. CUDA Driver API – низкоуровневый интерфейс доступа к GPU, загрузки модулей ядра и операций с памятью. Функции CUDA Driver API имеют префикс “cu”.  

Основные отличия Driver API от CUDA Runtime:

  • инициализация контекста вручную
  • загрузка модулей вручную
  • дополнительные вызовы для передачи параметров в ядро
  • необходимость наличия .cubin файла с конечным продуктом
  • больший контроль выполнения и ошибок
  • возможность получить больше информации об устройстве
  • независимость от языка программирования
  • невозможность использовать режим эмуляции для отладки(так как для запуска ядра необходимо загрузить .cubin файл с GPU кодом)
  • функции Driver API находятся в nvcuda.dll, а Runtime API в cudart.dll

По сути, CUDA Runtime является обверткой вокруг Driver API, позволяя облегчить использование технологии и сократить количество кода. Driver API позволяет изучить и понять все процессы, происходящие при работе с технологией CUDA, получить больший контроль. При этом обязывает разработчика выполнять такие действия как инициализация контекста, загрузку модулей, и.т.п. вручную, т.е. вносить дополнительные сложности при работе и увеличивает количество кода проекта, и усложняет процесс отладки.


Комментариев нет:

Отправить комментарий