1D БПФ над многомерными массивами с использованием Arrayfire с Python
Используя библиотеку pyfftw, легко сделать 1D БПФ по одной оси многомерного массива формы (M, 2**N)
без циклического перехода по нулевому индексу в явном виде следующим образом:
afft = pyfftw.interfaces.numpy_fft.fft(a, axis=1)
,
Переключаясь на arrayfire, чтобы мой код мог выполняться на GPU, я использую следующее, чтобы сделать то же самое (с import arrayfire as af
):
for idx in af.ParallelRange(M):
afft = af.fft(a[idx,:])
Хотя это выполняется параллельно, это не похоже на лучший способ сделать что-либо, а также сделает мой код ужасным для просмотра.
Есть ли способ устранить цикл с помощью af.fft
аналогично pyfftw
функция, или с версией массива огня numpy нарезки?