CUDA Как запустить новый вызов ядра в одной функции ядра?

Я новичок в CUDA программирование. Теперь у меня возникла проблема: я пытаюсь использовать параллельное программирование CUDA для обработки набора наборов данных. И для каждого набора данных необходимо выполнить некоторые матричные вычисления.

Мой дизайн такой:

  1. Запустите N потоков для обработки каждого набора данных, так как они независимы друг от друга, и метод для их обработки одинаков.

  2. В каждом потоке в 1 я хочу использовать новую функцию, и эта функция также работает как ядро, поскольку они являются матричными вычислениями... например, вызывают M потоков для параллельной обработки матричных вычислений.

Кто-нибудь знает, возможно ли это или нет?

1 ответ

Решение

Вы можете запустить ядро ​​из потока в другом ядре, если вы используете динамический параллелизм CUDA и ваш GPU поддерживает его. Графические процессоры, которые поддерживают динамический параллелизм CUDA, в настоящее время имеют вычислительные возможности 3.5.

Вы можете узнать вычислительные возможности вашего устройства из примера CUDA deviceQuery.

Вы можете узнать больше о том, как использовать динамический параллелизм CUDA, в разделе руководства по программированию CUDA.

Другие вопросы по тегам