Как вы используете пакетный режим CUFFT?

Я пытаюсь понять, как использовать пакетный режим, предлагаемый в библиотеке CUFFT.

В основном у меня есть изображение шириной 5300 пикселей и высотой 3500. В настоящее время это означает, что я запускаю 3500 одномерных БПФ на этих 5300 элементах, используя FFTW.

Является ли это хорошей проблемой-кандидатом для запуска библиотеки CUFFT в пакетном режиме? Как должны быть настроены данные для решения этой задачи?

Спасибо


person Derek    schedule 08.03.2011    source источник


Ответы (2)


да это хорошая проблема.

Вы должны пойти следующим путем:

  1. создайте массив размером: sizeof(cufftComplex)*5300*3500 на GPU(здесь я предполагаю, что у вас сложные входные данные)
  2. скопируйте свои данные в gpu
  3. создать план с помощью cufftPlan1d()
  4. выполнить план, например, с помощью cufftExecC2C()

Для получения дополнительной информации вы должны взглянуть на руководство CUFFT.

person moggi    schedule 08.03.2011

да, вы можете использовать пакетный режим.

Чтобы использовать пакетный режим, 5300 элементов должны храниться непрерывно.

Это означает, что расстояние между соседними партиями равно 5300. Можно пойти таким путем:

..........
cufftComplex *host;
cufftComplex *device;
CudaMallocHost((void **)&host,sizeof(cufftComplex)*5300*3500);
CudaMalloc((void **)&devcie,sizeof(cufftComplex)*5300*3500);
//here add the elements,like this:
//host[0-5299] the first batch, host[5300-10599] the second batch ,and up to the 3500th batch.
CudaMemcpy(device,host,sizeof(cufftComplex)*5300*3500,......);
CufftPlan1d(&device,5300,type,3500);
CufftExecC2C(......);
......

Для получения более подробной информации см. руководство CUFFT.

person user1676582    schedule 20.09.2012
comment
Добро пожаловать в StackOverflow. Было бы неплохо, если бы вы могли также получить пару ссылок из этого руководства CUFFT :) - person Andrejs Cainikovs; 21.09.2012