2010-11-19 9 views
8

¿Hay alguna lib de FFT general disponible para ejecutarse en la GPU usando OpenCL? Por lo que yo sé, el código de muestra de Apple para el poder-de-dos OpenCL FFT es el único código disponible.OpenCL FFT lib para GPUs?

¿Existe una biblioteca de este tipo para tamaños de transformación que no sean de potencia de dos? Si no es así, ¿qué tan fácil o difícil es modificar la muestra Apple OpenCL?

Estoy mirando aplicaciones de procesamiento de imágenes, con tamaños de transformada sin poder de encendido, y tendré que hacer un montón de FFT, una FFT por lotes.

Respuesta

2

Conozco una biblioteca OpenFT FFT que se encuentra actualmente en desarrollo, , pero no planean tener tamaños de transformación que no sean de potencia de dos en la primera versión.

¿Puede proporcionarnos información sobre su aplicación? Puede ser útil obtener la prioridad para esa característica planteada si es algo que mucha gente puede usar.

+0

¿Compartirías qué biblioteca es esta? – rotoglup

+0

@rotoglup Mi comentario anterior se refería a la biblioteca clAmdFft de AMD. Estuve involucrado en la versión 1.0 hace varios años, que no admitía non-powers de 2, pero veo que las versiones posteriores han agregado algunos otros factores primos. http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-math-libraries/ –

2

Puede descargar algunos ejemplos de código OpenCL que incluyen FFT del SHOC benchmark suite.

+0

pero esto es sólo FFT 1D, el poder de dos hijos ..., pero sin embargo muy útil, gracias – Neo

+0

Niza! He estado codificando una de estas bibliotecas yo mismo. Me alegro de estar construyendo sobre los hombros de los gigantes :) –

+0

¿Alguna suerte hasta ahora? ... – Neo

1

OpenMM (https://simtk.org/home/openmm) contiene una FFT 3D para OpenCL. Es posible que no funcione para usted directamente, ya que está diseñado para un caso específico: FFT 3D donde cada dimensión es lo suficientemente pequeña como para almacenarse en la memoria local (por ejemplo, una cuadrícula de 100x100x100). Pero sí admite tamaños que no sean de potencia de dos (base 2, 3, 4 y 5), por lo que es posible que pueda adaptarlo.

0

Eche un vistazo a la biblioteca APPML-FFT. Aunque todavía está por el poder de dos transformaciones.

2

El relleno nulo se puede usar para hacer que los datos de longitud arbitraria se ajusten a un algoritmo de FFT de potencia de dos. Considere si eso sería adecuado para su aplicación. Aumentar el número de muestras disminuye el "tamaño de paso" en el dominio de salida, lo que significa una mayor resolución de salida.

1

VexCL proporciona una implementación de FFT para OpenCL que acepta expresiones vectoriales arbitrarias como entrada, permite realizar transformaciones multidimensionales (de cualquier cantidad de dimensiones) y admite vectores de tamaño arbitrario. Aquí hay un link en la parte correspondiente de su LÉAME.