Преобразование Гильберта с использованием CUDAPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Преобразование Гильберта с использованием CUDA

Сообщение Anonymous »

Чтобы выполнить преобразование Гильберта для одномерного массива, необходимо:
  • БПФ массива
  • Удвойте половину массива, обнулите вторую половину
  • Обратное БПФ для результата
Я использую PyCuLib для БПФ. Мой код на данный момент

Код: Выделить всё

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)
У меня такое ощущение, что это может быть как-то связано с самим интерфейсом CUDA Numba... позволяет ли он изменять отдельные элементы массива (или фрагменты массива), например этот? Я предполагал, что это возможно, поскольку переменная Transforms представляет собой numba.cuda.cudadrv.devicearray.DeviceNDArray, поэтому я подумал, что, возможно, она выполняет некоторые из тех же операций, что и ndarray numpy.

Короче, какой самый простой способ выполнить простую операцию над срезом, используя device_arrays Numba? Я получаю сообщение об ошибке:


неподдерживаемые типы операндов для *=: 'DeviceNDArray' и 'float'


Подробнее здесь: https://stackoverflow.com/questions/509 ... using-cuda
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»