Повторное использование плана CUDA FFT в нескольких "перекрывающихся" запусках CUDA Stream

Я пытаюсь улучшить производительность моего кода с помощью асинхронной передачи памяти, перекрытой вычислениями на GPU.

Раньше у меня был код, в котором я создал план FFT, а затем использовал его несколько раз. В такой ситуации время, потраченное на создание плана БПФ CUDA, ничтожно мало, хотя, согласно этому более раннему посту, оно может быть весьма значительным.

Теперь, когда я перехожу к потокам, я создаю "один и тот же" план "несколько раз", а затем устанавливаю поток CUDA FFT. Согласно ответам, данным некоторыми из вас в этом другом посте, это расточительно. Но есть ли другой способ сделать это?

ПРИМЕЧАНИЕ: я получаю данные в режиме реального времени, поэтому о запуске "пакетного" CUDA FFT не может быть и речи. Что я делаю, так это создаю и запускаю новый поток CUDA в результате полной импульсной передачи.

ПРИМЕЧАНИЕ 2: Я также подумывал об использовании "пула" "Планов CUDA Streams/FFT" вместо этого, но я не думаю, что это было бы элегантным, разумным решением, есть мысли?

Есть ли способ "скопировать" "существующий" план fft перед тем, как назначить поток CUDA?

Спасибо, ребята!/ Галс? Надеюсь встретить некоторых из вас в Сан-Хосе. знак равно

Омар

1 ответ

Решение

Что я делаю, так это создаю и запускаю новый поток CUDA в результате полной импульсной передачи.

Повторно используйте потоки, а не создавайте новый поток каждый раз. Затем вы можете повторно использовать план, созданный для этого потока, и у вас нет необходимости заново создавать "тот же" план на лету.

Возможно, это то, что вы подразумеваете под методом пула потоков. Ваша критика заключается в том, что это не "элегантно" или "разумно". Я понятия не имею, что это значит. Повторное использование потока в конвейерных алгоритмах является обычной тактикой, если только для того, чтобы избежать cudaStreamCreate накладные расходы (что бы это ни было, большое или маленькое).

План манжеты связан с потоком. Вы не можете скопировать план без объединения потоков. План - это непрозрачный контейнер.

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