cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: FFTW 3.3.5: Generating your own code cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: cannam@127:
cannam@127:

cannam@127: Previous: , Up: Installation and Customization   [Contents][Index]

cannam@127:
cannam@127:
cannam@127: cannam@127:

10.4 Generating your own code

cannam@127: cannam@127: cannam@127:

The directory genfft contains the programs that were used to cannam@127: generate FFTW’s “codelets,” which are hard-coded transforms of small cannam@127: sizes. cannam@127: cannam@127: We do not expect casual users to employ the generator, which is a rather cannam@127: sophisticated program that generates directed acyclic graphs of FFT cannam@127: algorithms and performs algebraic simplifications on them. It was cannam@127: written in Objective Caml, a dialect of ML, which is available at cannam@127: http://caml.inria.fr/ocaml/index.en.html. cannam@127: cannam@127:

cannam@127: cannam@127:

If you have Objective Caml installed (along with recent versions of cannam@127: GNU autoconf, automake, and libtool), then you cannam@127: can change the set of codelets that are generated or play with the cannam@127: generation options. The set of generated codelets is specified by the cannam@127: {dft,rdft}/{codelets,simd}/*/Makefile.am files. For example, you can add cannam@127: efficient REDFT codelets of small sizes by modifying cannam@127: rdft/codelets/r2r/Makefile.am. cannam@127: cannam@127: After you modify any Makefile.am files, you can type sh cannam@127: bootstrap.sh in the top-level directory followed by make to cannam@127: re-generate the files. cannam@127:

cannam@127:

We do not provide more details about the code-generation process, since cannam@127: we do not expect that most users will need to generate their own code. cannam@127: However, feel free to contact us at fftw@fftw.org if cannam@127: you are interested in the subject. cannam@127:

cannam@127: cannam@127:

You might find it interesting to learn Caml and/or some modern cannam@127: programming techniques that we used in the generator (including monadic cannam@127: programming), especially if you heard the rumor that Java and cannam@127: object-oriented programming are the latest advancement in the field. cannam@127: The internal operation of the codelet generator is described in the cannam@127: paper, “A Fast Fourier Transform Compiler,” by M. Frigo, which is cannam@127: available from the FFTW home page and also cannam@127: appeared in the Proceedings of the 1999 ACM SIGPLAN Conference on cannam@127: Programming Language Design and Implementation (PLDI). cannam@127:

cannam@127:
cannam@127:
cannam@127:

cannam@127: Previous: , Up: Installation and Customization   [Contents][Index]

cannam@127:
cannam@127: cannam@127: cannam@127: cannam@127: cannam@127: