Я следил за примером (https://github.com/ContinuumIO/numbapro-examples/blob/master/convolution/fftconvolve.py), который дал fftconvolve с изображением и ядром, оба представляют собой 2D-массивы. В моем случае использования я хотел бы сделать fftconvolve с двумя 1D массивами, чтобы искать возможное совпадение и задержку между ними. Я попытался преобразовать пример в 1D, но получил несколько ошибок Invalid type combination
. Может ли быть лучшим примером для 1-мерного массива fftconvolve с использованием CUDA через numbapro? спасибо1 dimanceal fftconvolve с numbapro cuda
0
A
ответ
2
Выполнение свертки в одном домене эквивалентно выполнению fft в домене Фурье. Это одна из основ обработки сигналов.
Поэтому, чтобы выполнить свертку векторов1 и vector2, вы можете просто применить fft (1D) к vector1 и vector2 и умножить два комплексных преобразования вместе (фильтрацию), а затем инвертировать fft продукт обратно в исходный домен.
В CUDA, это должно быть что-то вроде этого:
cufftHandle _planKernel // you fft handle
cufftPlan1d(&_planKernel, _fftLen, CUFFT_C2C, 1); // create 1D fft handle
cufftComplex* VECTOR1, *VECTOR2, *PRODUCT;
MakeVector1Complex<<<blockSize, GridSize>>>() // simply set real part of the VECTOR1 = vector1, and set the imaginary part VECTOR to 0
MakeVector2Complex<<<blockSize, GridSize>>>() // simply set real part of the VECTOR2 = vector2, and set the imaginary part VECTOR to 0
cufftExecC2C(planKernel, VECTOR1, VECTOR1, CUFFT_FORWARD); // apply fft to VECTOR1
cufftExecC2C(planKernel, VECTOR2, VECTOR2, CUFFT_FORWARD); // apply fft to VECTOR2
ComplexMutiplication<<<blockSize, GridSize>>>(VECTOR1, VECTOR2) // complex multiplication of VECTOR1 and VECTOR2
cufftExecC2C(planKernel, PRODUCT, PRODUCT, CUFFT_INVERSE); // inverse fft on the product of VECTOR1 AND VECTOR2
MakeProductReal<<<blockSize, GridSize>>>(PRODUCT) // extract the real part of PRODUCT
Теперь ваша работа сделана. Существует также пример под названием «simpleCUFFT» в инструменте cuda, который вы можете найти в C: \ ProgramData \ NVIDIA Corporation \ CUDA Образцы
Смежные вопросы
- 1. код в CUDA numbapro
- 2. Преобразование функции в NumbaPro CUDA
- 3. Компьютер зависает после запуска Numbapro Код CUDA
- 4. Anaconda Acclerate/NumbaPro Ошибка связи CUDA OSX
- 5. NumbaPro на устройстве Cuda через ssh-соединение
- 6. Ошибка Anbaonda's NumbaPro CUDA Assertion Error
- 7. Cuda из-за нехватки ресурсов при запуске python numbapro
- 8. Numbapro cuda python, определяющий массив в регистре потоков в gpu
- 9. Использование Numbapro на Jetson TK1
- 10. Python SciPy convolve vs fftconvolve
- 11. Numbapro перестал работать на графическом процессоре
- 12. Поддерживается ли архитектура Максвелла в Numbapro?
- 13. NotImplementedError на Decorator NumbaPro (Python)
- 14. Numbapro: Нет ускорения для умножения матрицы
- 15. NumbaPro JIT конструктор класса
- 16. Cuda blockDim.y always == 1
- 17. Numbapro пытается векторизовать функцию jit'd
- 18. Расчет (A - B (D^-1) B^T)^- 1 с CUDA
- 19. CUDA-Python: Как запустить ядро CUDA в Python (Numba 0.25)?
- 20. Ошибка вызова Cuda возвращает ошибку 1 (cudaErrorMissingConfiguration)
- 21. Поддерживает ли Numbapro архитектуру программирования SIMD
- 22. deviceQuery возвращается CUDA 1 вместо 2
- 23. CUDA collect2 ld вернулся 1 статус выхода
- 24. Массив CUDA 1-D не обновляется
- 25. Ошибка с 'cuda-memcheck' в cuda 8.0
- 26. Как отлаживать библиотеку CUDA с использованием только 1 видеокарты X11
- 27. Объем памяти Numba CUDA во время работы?
- 28. CUDA 5 совместим с CUDA 4
- 29. OpenCV с поддержкой CUDA без использования CUDA?
- 30. Python NumbaPro GPU для векторизации с ошибкой: TypingError: Failed at nopython (nopython frontend)