pyfft.Biblioteca FFT para Pycuda e Pyopencl | |
Baixe Agora |
pyfft. Classificação e resumo
Propaganda
- Licença:
- MIT/X Consortium Lic...
- Nome do editor:
- Bogdan Opanchuk
- Site do editor:
- http://github.com/Manticore
pyfft. Tag
pyfft. Descrição
Biblioteca FFT para Pycuda e Pyopencl O Pyfft é um módulo Python que contém a implementação de FFT em lotes, portado da implementação OpenCL da Apple. A ideologia de OpenCl de construir o código do kernel nos mapas da mosca perfeitamente em Pycuda / Pyopencl, e variedade de motores de modelos de Python torna a geração de código mais simples. Eu usei o Mako Templating Motor, simplesmente por causa da preferência pessoal. O código pode ser facilmente alterado para usar qualquer outro mecanismo. "CUDA" parte do Pyfft requer a versão atual do desenvolvimento do Pycuda (0,94). O início do uso é bastante simples. Primeiro, importar numpy e interface de criação de plano de Pyfft (Vamos usar o CUDA neste exemplo): >>> de Pyfft.Cuda Plano de Importação >>> Import Numpysince Estamos usando o CUDA, ele deve ser inicializado antes que qualquer função CUDA seja chamada ( Por padrão, o plano usará o contexto existente, mas existem outras possibilidades; consulte a entrada de referência para o plano para mais informações). Além disso, precisaremos do módulo GPuArray para passar dados de e para a GPU: >>> de Pycuda.Tools Import Make_Default_Context >>> Import pycuda.gpuarray como GPuArray >>> Import pycuda.Driver como CUDA >>> CUDA.Init ( >>> context = make_default_context () então o plano deve ser criado. A criação não é muito rápida, principalmente por causa da velocidade de compilação. Mas, felizmente, pycuda e pyopencl cache compilou fontes, por isso, se você usar o mesmo plano para cada execução do seu programa, será criado bastante rápido. >>> Plano = Plano ((16, 16)) Agora, vamos preparar a matriz de teste simples e tentar executar o plano sobre ele: >>> dados = numpy.ones ((16, 16), DTYPE = numpy.complex64)> >> gpu_data = gpuarray.to_gpu (dados) >>> plan.execute (gpu_data) >>> resultado = gpu_data.get () >>> Imprimir resultado # doctest: + elipses ... ] Como esperado, nós obtivemos a matriz com o primeiro - elemento inferior, igual ao tamanho da matriz. Vamos agora executar a transformação inversa: >>> Plan.execute (GPU_Data, Inverse = True) >>> resultado = gpu_data.get () Como os dados são não inteiros, não podemos simplesmente compará-lo. Nós apenas calcularemos o erro. >>> error = numpy.abs (numpy.sum (numpy.abs (dados) - numpy.abs (resultado)) / data.size) >>> erro <1etruethat-6
pyfft. Software Relacionado