Saltar al contenido principal
LibreTexts Español

10.1: Introducción

  • Page ID
    86890
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Objetivos de aprendizaje

    • Discusión de las consideraciones involucradas en implementaciones FFT de alto rendimiento, que se centran principalmente en el acceso a la memoria y otras preocupaciones no aritméticas, como lo ilustra un estudio de caso de la biblioteca FFTW.

    de Steven G. Johnson (Departamento de Matemáticas, Instituto Tecnológico de Massachusetts) y Matteo Frigo (Cilk Arts, Inc.)

    Aunque hay una amplia gama de algoritmos de transformada rápida de Fourier (FFT), que involucran una gran cantidad de matemáticas desde la teoría de números hasta álgebras polinomiales, la gran mayoría de las implementaciones FFT en la práctica emplean alguna variación en el algoritmo Cooley-Tukey. El algoritmo Cooley-Tukey se puede derivar en dos o tres líneas de álgebra elemental. Se puede implementar casi con la misma facilidad, especialmente si solo se desean tamaños de potencia de dos; numerosos libros de texto populares enumeran subrutinas FFT cortas para tamaños de potencia de dos, escritas en el lenguaje du jour. Por lo tanto, la implementación del algoritmo Cooley-Tukey, al menos, parecería ser un problema largamente resuelto. En este capítulo, sin embargo, vamos a argumentar que los asuntos no son tan sencillos como podrían parecer.

    Durante muchos años, la ruta principal para mejorar la FFT de Cooley-Tukey parecía ser reducciones en el recuento de operaciones aritméticas, que a menudo dominaban el tiempo de ejecución previo a la ubicuidad del hardware de punto flotante rápido (al menos en procesadores no integrados). Por lo tanto, se gastó un gran esfuerzo en encontrar nuevos algoritmos con recuentos aritméticos reducidos, desde el método de Winograd para lograr\(\Theta (n)\) multiplicaciones 1 (a costa de muchas más adiciones) hasta la variante split-radix en Cooley-Tukey que logró durante mucho tiempo el más bajo conocido recuento total de adiciones y multiplicaciones para tamaños de potencia de dos (pero recientemente se mejoró). La cuestión del recuento aritmético mínimo posible sigue siendo de interés teórico fundamental, ni siquiera se sabe si es posible mejor que\(\Theta (n\log n)\) la complejidad, ya queΩ(nregistron)Ω(nregistron)“role="presentation” style="position:relative;” tabindex="0"> inferiores en el recuento de adiciones solo han sido probados sujetos a supuestos restrictivos sobre los algoritmos. Sin embargo, la diferencia en el número de operaciones aritméticas, para tamaños de potencia de dos\(n\), entre el algoritmo Cooley-Tukey de 1965 radix-2 (\(\sim 5n\log _2n\)) y el conteo aritmético actualmente más bajo conocido (\(\sim \frac{34}{9}n\log _2n\)) permanece solo alrededor del 25%.

    2


    This page titled 10.1: Introducción is shared under a CC BY license and was authored, remixed, and/or curated by C. Sidney Burrus.