📄 section2.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"><html><head><title>FFTW FAQ - Section 2</title><link rev="made" href="mailto:fftw@fftw.org"><link rel="Contents" href="index.html"><link rel="Start" href="index.html"><link rel="Next" href="section3.html"><link rel="Previous" href="section1.html"><link rel="Bookmark" title="FFTW FAQ" href="index.html"></head><body text="#000000" bgcolor="#FFFFFF"><h1>FFTW FAQ - Section 2 <br>Installing FFTW</h1><ul><li><a href="#systems" rel=subdocument>Q2.1. Which systems does FFTW run on?</a><li><a href="#runOnDOS" rel=subdocument>Q2.2. Does FFTW run on DOS/Windows?</a><li><a href="#compilerCrashes" rel=subdocument>Q2.3. My compiler has trouble with FFTW.</a><li><a href="#solarisSucks" rel=subdocument>Q2.4. FFTW does not compile on Solaris, complaining about<code>const</code>.</a><li><a href="#languages" rel=subdocument>Q2.5. Which language is FFTW written in?</a><li><a href="#fortran" rel=subdocument>Q2.6. Can I call FFTW from FORTRAN?</a><li><a href="#cplusplus" rel=subdocument>Q2.7. Can I call FFTW from C++?</a><li><a href="#whynotfortran" rel=subdocument>Q2.8. Why isn't FFTW written in FORTRAN/C++?</a><li><a href="#singleprec" rel=subdocument>Q2.9. How do I compile FFTW to run in single precision?</a></ul><hr><h2><A name="systems">Question 2.1. Which systems does FFTW runon?</A></h2>FFTW is written in ANSI C, and should work on any system witha decent C compiler. (See also <A href="#runOnDOS">Q2.2 `Does FFTW run on DOS/Windows?'</A> and <A href="#compilerCrashes">Q2.3 `My compiler has trouble with FFTW.'</A>.) <h2><A name="runOnDOS">Question 2.2. Does FFTW run on DOS/Windows?</A></h2>It should. FFTW was not developed on DOS or Windows, but the sourcecode is straight ANSI C. Some users have reported using FFTW onDOS/Windows using various compilers. See also the<A href="http://www.fftw.org/install/install-Windows.html">FFTW Windows installation notes</A> and <A href="#compilerCrashes">Q2.3 `My compiler has trouble with FFTW.'</A> <h2><A name="compilerCrashes">Question 2.3. My compiler has trouble withFFTW.</A></h2>Complain fiercely to the vendor of the compiler. <p>FFTW is a heavily-optimized piece of software that is likely to pushcompilers to their limits. We had no problems with, for example,<code>gcc 2.7.2</code>, <code>egcs 1.1.x</code>, Sun's <code>SC4.0</code>, and IBM's <code>XLC</code>. Users have also reported successful compilations of FFTW using Borland's C/C++ compilers on Windows. <p>The Portland Group PGCC compiler, version 4.0 for Linux/x86,reportedly produces incorrect code for FFTW 2.1.3. <p>Visual C++ 4.0 crashes when compiling FFTW 1.2 with all optimizationsturned on. Visual C++ 5.0 reportedly produces incorrect code for thereal transforms in FFTW 2.x when the option "Maximize speed"is set. We are told that Service Pack 3 fixes the bug. <p>Metrowerks CodeWarrior Pro 4 reportedly generates incorrect code forthe PowerPC when compiling FFTW at optimization level 4. Supposedly,this bug is fixed in CW Pro 5 with all the latest updates applied. (No problems were reported for previous versions.)<p>Various problems have also been observed with SGI's MIPSpro compilers,versions 7.2.0 and 7.2.1 (you may have to lower the optimization levelfor some files to get them to compile); the bug seems to be fixed inversion 7.3. The test program in earlier versions of FFTW hadproblems with the <code>-xO5</code> option in Sun's <code>SC4.0</code> C compiler. <code>egcs 1.0.2</code> produced incorrect code for FFTW on the PowerPC (corrected in <code>egcs 1.1</code>). <p>The DEC C compiler, V5.8-009 on Digital UNIX V4.0 (Rev. 1091) is knownto have bugs with its EV6 tuning. Specifically, compiling FFTW with<code>-arch host</code> (the default) or <code>-arch ev6</code> on an Alpha EV6 can cause FFTW (e.g. <code>fftw_test -s 256</code>) to crash. <h2><A name="solarisSucks">Question 2.4. FFTW does not compile on Solaris, complaining about<code>const</code>.</A></h2>We know that at least on Solaris 2.5.x with Sun's compilers 4.2 youmight get error messages from <code>make</code> such as <p><code>"./fftw.h", line 88: warning: const is a keyword in ANSIC</code> <p>This is the case when the <code>configure</code> script reports that <code>const</code> does not work: <p><code>checking for working const... (cached) no</code> <p>You should be aware that Solaris comes with two compilers, namely,<code>/opt/SUNWspro/SC4.2/bin/cc</code> and <code>/usr/ucb/cc</code>. The latter compiler is non-ANSI. Indeed, it is a perverse shell scriptthat calls the real compiler in non-ANSI mode. In orderto compile FFTW, change your path so that the right<code>cc</code> is used. <p>To know whether your compiler is the right one, type<code>cc -V</code>. If the compiler prints ``<code>ucbcc</code>'', as in <p><code>ucbcc: WorkShop Compilers 4.2 30 Oct 1996 C4.2</code> <p>then the compiler is wrong. The right message is something like<p><code>cc: WorkShop Compilers 4.2 30 Oct 1996 C4.2</code> <h2><A name="languages">Question 2.5. Which language is FFTW writtenin?</A></h2>FFTW is written in ANSI C. Most of the code, however, wasautomatically generated by a program called<code>genfft</code>, written in the Objective Caml dialect of ML. You do not need to know ML or tohave an Objective Caml compiler in order to use FFTW. <p><code>genfft</code> is provided with the FFTW sources, which means thatyou can play with the code generator if you want. In this case, youneed a working Objective Caml system. Objective Caml is availablefrom <code>ftp.inria.fr</code> in the directory <A href="ftp://ftp.inria.fr/lang/caml-light"><code>/lang/caml-light</code></A>. <h2><A name="fortran">Question 2.6. Can I call FFTW from FORTRAN?</A></h2>Yes, but not directly. The main problem is that Fortran cannot passparameters by value. However, FFTW can be called indirectly fromFortran through the use of special C "wrapper" routines. Appropriate wrapper code, documented in the FFTW manual, is included with FFTW(versions 1.3 and higher). <p>By default, FFTW configures its wrapper routines to work with thefirst compiler it finds, e.g. <code>g77</code>. To configure for a different, incompatible Fortran compiler<code>foobar</code>, use <code>./configure F77=foobar</code> when installing FFTW. <h2><A name="cplusplus">Question 2.7. Can I call FFTW from C++?</A></h2>Most definitely. FFTW should compile and run under any C++ compiler. <h2><A name="whynotfortran">Question 2.8. Why isn't FFTW written inFORTRAN/C++?</A></h2>Because we don't like those languages, and neither approaches theportability of C. <h2><A name="singleprec">Question 2.9. How do I compile FFTW to run in singleprecision?</A></h2>On a Unix system: <code>configure --enable-float</code>. On a non-Unix system: edit <code>fftw/fftw.h</code> to <code>#define</code> the symbol <code>FFTW_ENABLE_FLOAT</code>. In both cases, you must then recompileFFTW. <hr>Next: <a href="section3.html" rel=precedes>Using FFTW</a>.<br>Back: <a href="section1.html" rev=precedes>Introduction and General Information</a>.<br><a href="index.html" rev=subdocument>Return to contents</a>.<p><address><A href="http://www.fftw.org">Matteo Frigo and Steven G. Johnson</A> / <A href="mailto:fftw@fftw.org">fftw@fftw.org</A>- 24 March 2003</address><br>Extracted from FFTW Frequently Asked Questions with Answers,Copyright © 2003 Massachusetts Institute of Technology.</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -