@Pushunter

Как в ядре вызвать ядро?

Здравствуйте, пишу нейронную сеть для распознавания цифр (для начала) на CUDA. Нужно написать функцию на устройстве, которая в каждом блоке вызывает функцию тренировки нейронной сети. Всего тренировок, а значит и блоков, должно быть 60 000. Сама функцию тренировки у меня написана, но она тоже выполняется на устройстве. Точнее не вся функция, а определенный фрагменты кода, вроде перемножения матриц, выполняются на устройстве. И выходит, что мне нужно написать функцию на устройстве, которая параллельно с помощью блоков вызовет 60 000 тренировок сети, но каждая тренировка тоже выполняется на устройстве ( при ее вызове нужно указывать также сетку и блоки ). Как такое реализовать?

Спасибо большое за любой совет/подсказку/наставление. Я только учусь, и поэтому набивание синяков для меня привычное дело...
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 2
@dikysa
Студент
Нельзя вызвать ядро __global__ функцию на GPU, только на CPU можно. (Хотя может существовать какой-то способ, который я не знаю, но в книге по CUDA нельзя)

Вы можете данные нужные в памяти оставить и вызвать доп ядра из CPU. Или создать __device__ функции и вызывать их на GPU.
Ответ написан
Комментировать
@JackBoner
Вызывать ядро в ядре можно. Это называется динамический параллелизм
https://devblogs.nvidia.com/cuda-dynamic-paralleli...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы