Ограничение NVIDIA CUFFT на размеры и пакеты для FFT с помощью scikits.cuda

Этот вопрос будет использовать scikits.cuda [1] в командной строке Python, но его также можно попытаться выполнить в чистом C/CUDA (что я не пробовал).

Я пытаюсь создать план CUFFT для одномерных комплексных преобразований, которые будут применяться ко многим входным данным (так много пакетов). С Tesla C2050 я делаю следующее

import scikits.cuda.fft as cufft
import numpy as np
p = cufft.Plan((64*1024,), np.complex64, np.complex64, batch=100)
p = cufft.Plan((64*1024,), np.complex64, np.complex64, batch=1000)
p = cufft.Plan((64*1024,), np.complex64, np.complex64, batch=10000) # !!!

Последняя попытка плана вызывает исключение cufftAllocFailed. Если я уменьшу размер преобразования (с 64 КБ), я могу получить пакет из 10 000, но в настоящее время мне нужны преобразования размером 64 КБ.

Мой вопрос: это жесткое ограничение в CUFFT? И если да, то где в документации CUDA [2] или CUFFT [3] указаны ограничения на размер преобразования по сравнению с пакетом (по сравнению с размером?)?

[1] http://scikits.appspot.com/cuda
[2] http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_C_Programming_Guide.pdf
[3] http://docs.nvidia.com/cuda/pdf/CUDA_CUFFT_Users_Guide.pdf


person Ahmed Fasih    schedule 02.11.2012    source источник
comment
Насколько мне известно (я не использую CUFFT), использование памяти CUFFT определяется сложной взаимосвязью между размером FFT, размером пакета, типом FFT и алгоритмом. Другими словами, это не может быть легко предсказано. Я понимаю, что в вашем приложении указан размер преобразования, но разве вы не должны иметь возможность свободно выбирать размер пакета? Я предполагаю, что после определенного размера пакета заметного увеличения производительности не происходит, поэтому почему бы не провести несколько экспериментов и выбрать наименьший размер пакета, обеспечивающий полную производительность. Вы также можете рассмотреть возможность использования графического процессора с 6 ГБ памяти, например C2075.   -  person njuffa    schedule 02.11.2012
comment
Думаю, это связано с тем, что к линейной текстуре можно привязать только 2^27 элементов, что также является самым большим рекламируемым размером CUFFT (NVIDIA: размеры 1D-преобразования до 128 миллионов элементов). Создание плана выполняется успешно, если пакет 64K * меньше 2^27. Не похоже, что это связано с объемом памяти на борту.   -  person Ahmed Fasih    schedule 02.11.2012


Ответы (1)


В плане существует жесткое ограничение примерно в 2 ^ 27 элементов.

person Ahmed Fasih    schedule 06.12.2012