code: def calc_fft_with_PyCUDA(Signal):
      
      print("starting fft")
      Signal = Signal.astype(_np.float32)
      Signal_gpu = _gpuarray.to_gpu(Signal)
      Signalfft_gpu = _gpuarray.empty(len(Signal)//2+1,_np.complex64)
      plan = _Plan(Signal.shape,_np.float32,_np.complex64)
      _fft(Signal_gpu, Signalfft_gpu, plan)
      Signalfft = Signalfft_gpu.get() #only 2N+1 long
      Signalfft = _np.hstack((Signalfft,_np.conj(_np.flipud(Signalfft[1:len(Signal)//2]))))
      print("fft done")
      return Signalfft
docs: Calculates the FFT of the passed signal by using
      the scikit-cuda libary which relies on PyCUDA
  
      Parameters
      ----------
      Signal : ndarray
          Signal to be transformed into Fourier space
  
      Returns
      -------
      Signalfft : ndarray
          Array containing the signal's FFT