Загружается ли код функции ядра CUDA в GPU-RAM сразу или для каждого обращения к ней?
Загружается ли исполняемый код функции ядра CUDA в GPU сразу при запуске программы, или код загружается каждый раз при вызове функции ядра? Или в каких случаях может быть так или иначе?
Это может сильно повлиять на выбор методов программирования:
- Много обращений к ядру-функции от CPU-host
- Использование динамического параллелизма и множество обращений к ядру-функциям с GPU-устройства
1 ответ
Решение
При использовании API времени выполнения CUDA код ядра загружается на устройство один раз. Это происходит как неявное действие сразу после создания контекста CUDA. При использовании API драйвера CUDA приложение контролирует, когда ядра загружаются и как часто. Кажется, что в настоящее время это не охватывается документацией CUDA, я подам запрос на расширение для этого.