Ejemplo CUDA convolutionFFT2D: no puedo entenderlo

Estudié el algoritmo de Cooley Tukey y lo entendí. Tengo todo en el ejemplo CUDA convolutionFFT2D hasta estos núcleos:

spProcess2D llama -> spProcess2D_kernel que llama a un montón de -> spPostprocessC2C, mulAndScale y spPreprocessC2C

Aquí está el código completo: http://nopaste.info/30c13e44fe.html (convolutionFFT2D.cu, aquí está la función spProcess2D) http://nopaste.info/78d22afac2.html (convolutionFFT2D.cuh, aquí están las otras funciones)

Ya leí todos los documentos de nvidia sdk pero todavía no puedo entender qué hacen estas funciones (usan twiddles, pero nada parece un algoritmo Cooley Tukey allí)

Por favor, ayúdeme si puede, o al menos indíqueme dónde resolver mi problema.

Actualización: encontré este enlace: http://cnx.org/content/m16336/latest/#uid38 ¿Quizás estas funciones están realizando un algoritmo de amplitud primero? Todavía no puedo decir eso, pero la forma parece la misma

preguntado el 16 de mayo de 11 a las 19:05

Realmente necesitas hacer una pregunta específica. -

No tengo idea de lo que hacen las funciones spProcess2D, spPostprocessC2C y spPreprocessC2C. También acepto sugerencias u opiniones ya que no puedo averiguar nada -

2 Respuestas

Parece que el algoritmo está haciendo algo similar al algoritmo mencionado aquí. El paso de preproceso parece reordenar la entrada Real de tamaño N (después del relleno) a la entrada compleja de tamaño N / 2. El paso de posproceso es reordenar los datos para recuperar la FFT de la matriz de entrada original.

contestado el 25 de mayo de 11 a las 00:05

Muchas gracias, tienes razón y parece que el algoritmo está realizando exactamente lo que has vinculado. ¡Gracias de nuevo! - Marco A.

Es posible que desee guardar la información en algún lugar. Tuve que usar el enlace como fuente porque no pude encontrar nada más que lo explicara con tanto detalle. Encontré el enlace en los foros de mi empresa :) - Pavan Yalamanchili

Gracias. Guardaré la información localmente, ¡gracias de nuevo! - Marco A.

spPostprocessC2C parece una sola mariposa FFT. La complejidad en las rutinas de llamadas simplemente proviene de ajustar el algoritmo FFT en un modelo SIMT para CUDA.

Quizás si explica qué es lo que está tratando de lograr (más allá de simplemente comprender cómo funciona esta implementación de FFT en particular), entonces podría obtener algunas respuestas más específicas.

contestado el 17 de mayo de 11 a las 12:05

Gracias por su respuesta, el problema es que estoy usando este código para una tesis y no quiero terminar con mi profesor preguntándome: "¿Qué hace este código?", Necesito hacer una copia de seguridad por si acaso. la suerte no está conmigo. Así que estudié el algoritmo Cooley Tukey y los trucos de twiddles para mejorar el rendimiento y ahora estoy tratando de entender este código, pero no puedo recuperar los conceptos en estas rutinas. Marco A.

@Paul: a menos que su tesis sea sobre implementaciones de FFT, no habría pensado que esto importaría, es solo una rutina de biblioteca de "caja negra" que está utilizando para realizar alguna tarea relacionada con su investigación. - Paul R

Eso es lo que pensé, pero mi profesor tampoco lo cree. Él está a cargo :) - Marco A.

Cuidado: esa no es una mariposa FFT. La FFT se realiza por completo en el punto en que se llaman las funciones spxxx. Parece un procesamiento previo y posterior de la señal antes y después de la multiplicación puntual. Sin embargo, no entiendo el punto de tal procesamiento previo y posterior .. - Marco A.

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.