2015-09-18 3 views
1

При первом вызове cufftPlanMany() это занимает около 0,7 секунды, но все последующие вызовы бывают быстрыми. Любая идея ускорения первого вызова cufftPlanMany()?Почему cufftPlanMany() занимает слишком много времени?

+2

В библиотеке cufft есть время инициализации, связанное с ней. Это то, что вы испытываете. [этот ответ] (http://stackoverflow.com/questions/31012941/cufft-is-1000x-slower-in-vs2013-cuda7-0-compared-to-vs2010-cuda4-2) может представлять интерес. Я не думаю, что вы сможете избежать этого. –

+0

Вы правы. Я спрашиваю о любом способе избежать такого штрафа за инициализацию. Я попытался сделать фиктивный вызов в начале cufftPlanMany() с небольшими параметрами. Это не помогло !!!. – Maghraby

+0

Или есть библиотека, которая не страдает от такого штрафа за инициализацию, и дает хорошую производительность обработки? – Maghraby

ответ

1

Первый вызов cufftPlanMany вызывает загрузку libcufft.so. Это, в свою очередь, активизирует контекст cuda, если это необходимо, и загружает все ядра. Это зависит от размера библиотеки. 0,7 секунды немного избыточно, и он будет уменьшен в следующей версии cuFFT. Мы также немного сократили время каждой последующей функции cufftPlan *.

Зачем вам требуется минимальное время инициализации?

+0

Большое спасибо за ваш ответ. На самом деле, я бы хотел добиться большого ускорения по сравнению с реализацией не GPU. Эти издержки инициализации уменьшают общее ускорение, которое я получил значительно. – Maghraby

+0

Спасибо, llukas. Если вы знаете, не могли бы вы предоставить версию, которую вы ожидаете для улучшения производительности при инициализации FFT? –

+0

Мне нужно было проверить, какие версии имели удары. r8.0 инициализирует меня за 0,25 секунды, это то, что вы видите? – llukas

Смежные вопросы