- БПФ массива
- Удвойте половину массива, обнулите вторую половину
- Обратное БПФ для результата
Код: Выделить всё
def htransforms(data):
N = data.shape[0]
transforms = nb.cuda.device_array_like(data) # Allocates memory on GPU with size/dimensions of signal
transforms.dtype = np.complex64 # Change GPU array type to complex for FFT
pyculib.fft.fft(signal.astype(np.complex64), transforms) # Do FFT on GPU
transforms[1:N/2] *= 2.0 # THIS STEP DOESN'T WORK
transforms[N/2 + 1: N] = 0+0j # NEITHER DOES THIS ONE
pyculib.fft.ifft_inplace(transforms) # Do IFFT on GPU: in place (same memory)
envelope_function = transforms.copy_to_host() # Copy results to host (computer) memory
return abs(envelope_function)
Короче, какой самый простой способ выполнить простую операцию над срезом, используя device_arrays Numba? Я получаю сообщение об ошибке:
неподдерживаемые типы операндов для *=: 'DeviceNDArray' и 'float'
Подробнее здесь: https://stackoverflow.com/questions/509 ... using-cuda