По планам повторного использования в cuFFT
Это может показаться простым вопросом, но cufft
использование не очень понятно для меня.
Мой вопрос: какая из следующих реализаций верна?
1)
// called in a loop
cufftPlan3d (plan1, x, y, z) ;
cufftexec (plan1, data1) ;
cufftexec (plan1, data2) ;
cufftexec (plan1, data3) ;
destroyplan(plan1)
2)
init() //called only one time in application
{
cufftPlan3d (plan1, x, y, z) ;
}
exec () //called many times with data changing size remains same
{
cufftexec (plan1, data1) ;
cufftexec (plan1, data2) ;
cufftexec (plan1, data3) ;
}
deinit() //called only one time in application
{
destroyplan(plan1)
}
3)
cufftPlan3d (plan1, x, y, z) ;
cufftexec (plan1, data1) ;
destroyplan(plan1)
cufftPlan3d (plan2, x, y, z) ;
cufftexec (plan2, data2) ;
destroyplan(plan2)
....
...
Предположим, что все размеры данных data1
, data2
а также data3
такие же. Пожалуйста, игнорируйте правильность синтаксиса. Мне просто нужен концептуальный ответ.
Третья реализация не выглядит правильно для меня...
2 ответа
Я думаю, что все 3 можно заставить работать. Метод 2, вероятно, будет самым быстрым, если план соответствует данным для каждого из данных data1, data2 и data3.
Вы можете использовать план столько раз, сколько захотите, если ваше намерение преобразования не изменится.
В качестве небольшого дополнения к ответу Роберта, было бы полезно процитировать, что возможность повторного использования cuFFT
Планы указаны в руководстве CUFFT:
CUFFT предоставляет простой механизм конфигурации, называемый планом, который предварительно конфигурирует внутренние строительные блоки таким образом, чтобы время выполнения преобразования было как можно меньше для данной конфигурации и конкретного выбранного оборудования графического процессора. Затем, когда вызывается функция выполнения, происходит фактическое преобразование в соответствии с планом выполнения. Преимущество этого подхода состоит в том, что, как только пользователь создает план, библиотека сохраняет любое состояние, необходимое для многократного выполнения плана без пересчета конфигурации.