comparison src/fftw-3.3.8/doc/html/Installation-on-Unix.html @ 82:d0c2a83c1364

Add FFTW 3.3.8 source, and a Linux build
author Chris Cannam
date Tue, 19 Nov 2019 14:52:55 +0000
parents
children
comparison
equal deleted inserted replaced
81:7029a4916348 82:d0c2a83c1364
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html>
3 <!-- This manual is for FFTW
4 (version 3.3.8, 24 May 2018).
5
6 Copyright (C) 2003 Matteo Frigo.
7
8 Copyright (C) 2003 Massachusetts Institute of Technology.
9
10 Permission is granted to make and distribute verbatim copies of this
11 manual provided the copyright notice and this permission notice are
12 preserved on all copies.
13
14 Permission is granted to copy and distribute modified versions of this
15 manual under the conditions for verbatim copying, provided that the
16 entire resulting derived work is distributed under the terms of a
17 permission notice identical to this one.
18
19 Permission is granted to copy and distribute translations of this manual
20 into another language, under the above conditions for modified versions,
21 except that this permission notice may be stated in a translation
22 approved by the Free Software Foundation. -->
23 <!-- Created by GNU Texinfo 6.3, http://www.gnu.org/software/texinfo/ -->
24 <head>
25 <title>FFTW 3.3.8: Installation on Unix</title>
26
27 <meta name="description" content="FFTW 3.3.8: Installation on Unix">
28 <meta name="keywords" content="FFTW 3.3.8: Installation on Unix">
29 <meta name="resource-type" content="document">
30 <meta name="distribution" content="global">
31 <meta name="Generator" content="makeinfo">
32 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
33 <link href="index.html#Top" rel="start" title="Top">
34 <link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
35 <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
36 <link href="Installation-and-Customization.html#Installation-and-Customization" rel="up" title="Installation and Customization">
37 <link href="Installation-on-non_002dUnix-systems.html#Installation-on-non_002dUnix-systems" rel="next" title="Installation on non-Unix systems">
38 <link href="Installation-and-Customization.html#Installation-and-Customization" rel="prev" title="Installation and Customization">
39 <style type="text/css">
40 <!--
41 a.summary-letter {text-decoration: none}
42 blockquote.indentedblock {margin-right: 0em}
43 blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
44 blockquote.smallquotation {font-size: smaller}
45 div.display {margin-left: 3.2em}
46 div.example {margin-left: 3.2em}
47 div.lisp {margin-left: 3.2em}
48 div.smalldisplay {margin-left: 3.2em}
49 div.smallexample {margin-left: 3.2em}
50 div.smalllisp {margin-left: 3.2em}
51 kbd {font-style: oblique}
52 pre.display {font-family: inherit}
53 pre.format {font-family: inherit}
54 pre.menu-comment {font-family: serif}
55 pre.menu-preformatted {font-family: serif}
56 pre.smalldisplay {font-family: inherit; font-size: smaller}
57 pre.smallexample {font-size: smaller}
58 pre.smallformat {font-family: inherit; font-size: smaller}
59 pre.smalllisp {font-size: smaller}
60 span.nolinebreak {white-space: nowrap}
61 span.roman {font-family: initial; font-weight: normal}
62 span.sansserif {font-family: sans-serif; font-weight: normal}
63 ul.no-bullet {list-style: none}
64 -->
65 </style>
66
67
68 </head>
69
70 <body lang="en">
71 <a name="Installation-on-Unix"></a>
72 <div class="header">
73 <p>
74 Next: <a href="Installation-on-non_002dUnix-systems.html#Installation-on-non_002dUnix-systems" accesskey="n" rel="next">Installation on non-Unix systems</a>, Previous: <a href="Installation-and-Customization.html#Installation-and-Customization" accesskey="p" rel="prev">Installation and Customization</a>, Up: <a href="Installation-and-Customization.html#Installation-and-Customization" accesskey="u" rel="up">Installation and Customization</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
75 </div>
76 <hr>
77 <a name="Installation-on-Unix-1"></a>
78 <h3 class="section">10.1 Installation on Unix</h3>
79
80 <p>FFTW comes with a <code>configure</code> program in the GNU style.
81 Installation can be as simple as:
82 <a name="index-configure-2"></a>
83 </p>
84 <div class="example">
85 <pre class="example">./configure
86 make
87 make install
88 </pre></div>
89
90 <p>This will build the uniprocessor complex and real transform libraries
91 along with the test programs. (We recommend that you use GNU
92 <code>make</code> if it is available; on some systems it is called
93 <code>gmake</code>.) The &ldquo;<code>make install</code>&rdquo; command installs the fftw
94 and rfftw libraries in standard places, and typically requires root
95 privileges (unless you specify a different install directory with the
96 <code>--prefix</code> flag to <code>configure</code>). You can also type
97 &ldquo;<code>make check</code>&rdquo; to put the FFTW test programs through their paces.
98 If you have problems during configuration or compilation, you may want
99 to run &ldquo;<code>make distclean</code>&rdquo; before trying again; this ensures that
100 you don&rsquo;t have any stale files left over from previous compilation
101 attempts.
102 </p>
103 <p>The <code>configure</code> script chooses the <code>gcc</code> compiler by default,
104 if it is available; you can select some other compiler with:
105 </p><div class="example">
106 <pre class="example">./configure CC=&quot;<span class="roman"><i>&lt;the name of your C compiler&gt;</i></span>&quot;
107 </pre></div>
108
109 <p>The <code>configure</code> script knows good <code>CFLAGS</code> (C compiler flags)
110 <a name="index-compiler-flags"></a>
111 for a few systems. If your system is not known, the <code>configure</code>
112 script will print out a warning. In this case, you should re-configure
113 FFTW with the command
114 </p><div class="example">
115 <pre class="example">./configure CFLAGS=&quot;<span class="roman"><i>&lt;write your CFLAGS here&gt;</i></span>&quot;
116 </pre></div>
117 <p>and then compile as usual. If you do find an optimal set of
118 <code>CFLAGS</code> for your system, please let us know what they are (along
119 with the output of <code>config.guess</code>) so that we can include them in
120 future releases.
121 </p>
122 <p><code>configure</code> supports all the standard flags defined by the GNU
123 Coding Standards; see the <code>INSTALL</code> file in FFTW or
124 <a href="http://www.gnu.org/prep/standards/html_node/index.html">the GNU web page</a>.
125 Note especially <code>--help</code> to list all flags and
126 <code>--enable-shared</code> to create shared, rather than static, libraries.
127 <code>configure</code> also accepts a few FFTW-specific flags, particularly:
128 </p>
129 <ul>
130 <li> <a name="index-precision-9"></a>
131 <code>--enable-float</code>: Produces a single-precision version of FFTW
132 (<code>float</code>) instead of the default double-precision (<code>double</code>).
133 See <a href="Precision.html#Precision">Precision</a>.
134
135 </li><li> <a name="index-precision-10"></a>
136 <code>--enable-long-double</code>: Produces a long-double precision version of
137 FFTW (<code>long double</code>) instead of the default double-precision
138 (<code>double</code>). The <code>configure</code> script will halt with an error
139 message if <code>long double</code> is the same size as <code>double</code> on your
140 machine/compiler. See <a href="Precision.html#Precision">Precision</a>.
141
142 </li><li> <a name="index-precision-11"></a>
143 <code>--enable-quad-precision</code>: Produces a quadruple-precision version
144 of FFTW using the nonstandard <code>__float128</code> type provided by
145 <code>gcc</code> 4.6 or later on x86, x86-64, and Itanium architectures,
146 instead of the default double-precision (<code>double</code>). The
147 <code>configure</code> script will halt with an error message if the
148 compiler is not <code>gcc</code> version 4.6 or later or if <code>gcc</code>&rsquo;s
149 <code>libquadmath</code> library is not installed. See <a href="Precision.html#Precision">Precision</a>.
150
151 </li><li> <a name="index-threads-3"></a>
152 <code>--enable-threads</code>: Enables compilation and installation of the
153 FFTW threads library (see <a href="Multi_002dthreaded-FFTW.html#Multi_002dthreaded-FFTW">Multi-threaded FFTW</a>), which provides a
154 simple interface to parallel transforms for SMP systems. By default,
155 the threads routines are not compiled.
156
157 </li><li> <code>--enable-openmp</code>: Like <code>--enable-threads</code>, but using OpenMP
158 compiler directives in order to induce parallelism rather than
159 spawning its own threads directly, and installing an &lsquo;<samp>fftw3_omp</samp>&rsquo; library
160 rather than an &lsquo;<samp>fftw3_threads</samp>&rsquo; library (see <a href="Multi_002dthreaded-FFTW.html#Multi_002dthreaded-FFTW">Multi-threaded FFTW</a>). You can use both <code>--enable-openmp</code> and <code>--enable-threads</code>
161 since they compile/install libraries with different names. By default,
162 the OpenMP routines are not compiled.
163
164 </li><li> <code>--with-combined-threads</code>: By default, if <code>--enable-threads</code>
165 is used, the threads support is compiled into a separate library that
166 must be linked in addition to the main FFTW library. This is so that
167 users of the serial library do not need to link the system threads
168 libraries. If <code>--with-combined-threads</code> is specified, however,
169 then no separate threads library is created, and threads are included
170 in the main FFTW library. This is mainly useful under Windows, where
171 no system threads library is required and inter-library dependencies
172 are problematic.
173
174 </li><li> <a name="index-MPI-1"></a>
175 <code>--enable-mpi</code>: Enables compilation and installation of the FFTW
176 MPI library (see <a href="Distributed_002dmemory-FFTW-with-MPI.html#Distributed_002dmemory-FFTW-with-MPI">Distributed-memory FFTW with MPI</a>), which provides
177 parallel transforms for distributed-memory systems with MPI. (By
178 default, the MPI routines are not compiled.) See <a href="FFTW-MPI-Installation.html#FFTW-MPI-Installation">FFTW MPI Installation</a>.
179
180 </li><li> <a name="index-Fortran_002dcallable-wrappers"></a>
181 <code>--disable-fortran</code>: Disables inclusion of legacy-Fortran
182 wrapper routines (see <a href="Calling-FFTW-from-Legacy-Fortran.html#Calling-FFTW-from-Legacy-Fortran">Calling FFTW from Legacy Fortran</a>) in the standard
183 FFTW libraries. These wrapper routines increase the library size by
184 only a negligible amount, so they are included by default as long as
185 the <code>configure</code> script finds a Fortran compiler on your system.
186 (To specify a particular Fortran compiler <i>foo</i>, pass
187 <code>F77=</code><i>foo</i> to <code>configure</code>.)
188
189 </li><li> <code>--with-g77-wrappers</code>: By default, when Fortran wrappers are
190 included, the wrappers employ the linking conventions of the Fortran
191 compiler detected by the <code>configure</code> script. If this compiler is
192 GNU <code>g77</code>, however, then <em>two</em> versions of the wrappers are
193 included: one with <code>g77</code>&rsquo;s idiosyncratic convention of appending
194 two underscores to identifiers, and one with the more common
195 convention of appending only a single underscore. This way, the same
196 FFTW library will work with both <code>g77</code> and other Fortran
197 compilers, such as GNU <code>gfortran</code>. However, the converse is not
198 true: if you configure with a different compiler, then the
199 <code>g77</code>-compatible wrappers are not included. By specifying
200 <code>--with-g77-wrappers</code>, the <code>g77</code>-compatible wrappers are
201 included in addition to wrappers for whatever Fortran compiler
202 <code>configure</code> finds.
203 <a name="index-g77"></a>
204
205 </li><li> <code>--with-slow-timer</code>: Disables the use of hardware cycle counters,
206 and falls back on <code>gettimeofday</code> or <code>clock</code>. This greatly
207 worsens performance, and should generally not be used (unless you don&rsquo;t
208 have a cycle counter but still really want an optimized plan regardless
209 of the time). See <a href="Cycle-Counters.html#Cycle-Counters">Cycle Counters</a>.
210
211 </li><li> <code>--enable-sse</code> (single precision),
212 <code>--enable-sse2</code> (single, double),
213 <code>--enable-avx</code> (single, double),
214 <code>--enable-avx2</code> (single, double),
215 <code>--enable-avx512</code> (single, double),
216 <code>--enable-avx-128-fma</code>,
217 <code>--enable-kcvi</code> (single),
218 <code>--enable-altivec</code> (single),
219 <code>--enable-vsx</code> (single, double),
220 <code>--enable-neon</code> (single, double on aarch64),
221 <code>--enable-generic-simd128</code>,
222 and
223 <code>--enable-generic-simd256</code>:
224
225 <p>Enable various SIMD instruction sets. You need compiler that supports
226 the given SIMD extensions, but FFTW will try to detect at runtime
227 whether the CPU supports these extensions. That is, you can compile
228 with<code>--enable-avx</code> and the code will still run on a CPU without AVX
229 support.
230 </p>
231 <ul class="no-bullet">
232 <li>- These options require a compiler supporting SIMD extensions, and
233 compiler support is always a bit flaky: see the FFTW FAQ for a list of
234 compiler versions that have problems compiling FFTW.
235 </li><li>- Because of the large variety of ARM processors and ABIs, FFTW
236 does not attempt to guess the correct <code>gcc</code> flags for generating
237 NEON code. In general, you will have to provide them on the command line.
238 This command line is known to have worked at least once:
239 <div class="example">
240 <pre class="example">./configure --with-slow-timer --host=arm-linux-gnueabi \
241 --enable-single --enable-neon \
242 &quot;CC=arm-linux-gnueabi-gcc -march=armv7-a -mfloat-abi=softfp&quot;
243 </pre></div>
244 </li></ul>
245
246 </li></ul>
247
248 <a name="index-compiler-2"></a>
249 <p>To force <code>configure</code> to use a particular C compiler <i>foo</i>
250 (instead of the default, usually <code>gcc</code>), pass <code>CC=</code><i>foo</i> to the
251 <code>configure</code> script; you may also need to set the flags via the variable
252 <code>CFLAGS</code> as described above.
253 <a name="index-compiler-flags-1"></a>
254 </p>
255 <hr>
256 <div class="header">
257 <p>
258 Next: <a href="Installation-on-non_002dUnix-systems.html#Installation-on-non_002dUnix-systems" accesskey="n" rel="next">Installation on non-Unix systems</a>, Previous: <a href="Installation-and-Customization.html#Installation-and-Customization" accesskey="p" rel="prev">Installation and Customization</a>, Up: <a href="Installation-and-Customization.html#Installation-and-Customization" accesskey="u" rel="up">Installation and Customization</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
259 </div>
260
261
262
263 </body>
264 </html>