source: general/genlib/fftw.xml

trunk
Last change on this file was 1241ea19, checked in by Bruce Dubbs <bdubbs@…>, 2 months ago

Tag xfce and dependencies

  • Property mode set to 100644
File size: 10.8 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY fftw-download-http "https://www.fftw.org/fftw-&fftw-version;.tar.gz">
8 <!ENTITY fftw-download-ftp " ">
9 <!ENTITY fftw-md5sum "8ccbf6a5ea78a16dbc3e1306e234cc5c">
10 <!ENTITY fftw-size "4.0 MB">
11 <!ENTITY fftw-buildsize "59 MB">
12 <!ENTITY fftw-time "1.6 SBU (add 3.4 SBU for tests, both using parallelism=4)">
13]>
14
15<sect1 id="fftw" xreflabel="fftw-&fftw-version;">
16 <?dbhtml filename="fftw.html"?>
17
18
19 <title>fftw-&fftw-version;</title>
20
21 <indexterm zone="fftw">
22 <primary sortas="a-fftw">fftw</primary>
23 </indexterm>
24
25 <sect2 role="package">
26 <title>Introduction to fftw</title>
27
28 <para>
29 FFTW is a C subroutine library for computing the discrete Fourier
30 transform (DFT) in one or more dimensions, of arbitrary input size, and
31 of both real and complex data (as well as of even/odd data, i.e. the
32 discrete cosine/sine transforms or DCT/DST).
33 </para>
34
35 &lfs121_checked;
36
37 <bridgehead renderas="sect3">Package Information</bridgehead>
38 <itemizedlist spacing="compact">
39 <listitem>
40 <para>
41 Download (HTTP): <ulink url="&fftw-download-http;"/>
42 </para>
43 </listitem>
44 <listitem>
45 <para>
46 Download (FTP): <ulink url="&fftw-download-ftp;"/>
47 </para>
48 </listitem>
49 <listitem>
50 <para>
51 Download MD5 sum: &fftw-md5sum;
52 </para>
53 </listitem>
54 <listitem>
55 <para>
56 Download size: &fftw-size;
57 </para>
58 </listitem>
59 <listitem>
60 <para>
61 Estimated disk space required: &fftw-buildsize;
62 </para>
63 </listitem>
64 <listitem>
65 <para>
66 Estimated build time: &fftw-time;
67 </para>
68 </listitem>
69 </itemizedlist>
70
71
72 </sect2>
73
74 <sect2 role="installation">
75 <title>Installation of fftw</title>
76
77 <note>
78 <para>
79 We build fftw three times for different libraries in different
80 numerical precisions: the default double precision floating point, the
81 older 32-bit (single precision) version named float which sacrifices
82 precision for speed, and the long double which offers increased
83 precision at the cost of slower execution.
84 </para>
85 </note>
86
87 <para>
88 The first build is for double precision arithmetic. Install
89 <application>fftw</application> by running the following commands:
90 </para>
91
92<screen><userinput>./configure --prefix=/usr \
93 --enable-shared \
94 --disable-static \
95 --enable-threads \
96 --enable-sse2 \
97 --enable-avx \
98 --enable-avx2 &amp;&amp;
99make</userinput></screen>
100
101 <para>
102 To test the results, issue: <command>make check</command>.
103 On 32-bit systems, the tests can take substantially longer than
104 they would on 64-bit machines.
105 </para>
106
107 <para>
108 Now, as the <systemitem class="username">root</systemitem> user:
109 </para>
110
111<screen role="root"><userinput>make install</userinput></screen>
112
113 <para>
114 Now build single precision:
115 </para>
116
117<screen><userinput>make clean &amp;&amp;
118
119./configure --prefix=/usr \
120 --enable-shared \
121 --disable-static \
122 --enable-threads \
123 --enable-sse2 \
124 --enable-avx \
125 --enable-avx2 \
126 --enable-float &amp;&amp;
127make</userinput></screen>
128
129 <para>
130 As the <systemitem class="username">root</systemitem> user:
131 </para>
132
133<screen role="root"><userinput>make install</userinput></screen>
134
135 <para>
136 Finally, build long double precision:
137 </para>
138
139<screen><userinput>make clean &amp;&amp;
140
141./configure --prefix=/usr \
142 --enable-shared \
143 --disable-static \
144 --enable-threads \
145 --enable-long-double &amp;&amp;
146make</userinput></screen>
147
148 <para>
149 As the <systemitem class="username">root</systemitem> user:
150 </para>
151
152<screen role="root"><userinput>make install</userinput></screen>
153
154 </sect2>
155
156 <sect2 role="commands">
157 <title>Command Explanations</title>
158
159 <para>
160 <parameter>--enable-shared</parameter>
161 <parameter>--disable-static</parameter>: Use shared
162 libs instead of static libs.
163 </para>
164
165 <para>
166 <parameter>--enable-threads</parameter>: This enables <filename
167 class="libraryfile"> libfftw3_threads.so</filename> to be compiled.
168 It is used by e.g. the <application>gimp</application> plugin from
169 <ulink url="https://gmic.eu/">G'MIC</ulink>.
170 </para>
171
172 <para>
173 <parameter>--enable-{sse2,avx,avx2}</parameter>: These enables building
174 the optimized routines using SSE2, AVX, and AVX2 instructions. FFTW
175 will check if these routines can be really used on the current CPU when
176 the FFTW library is loaded, so a FFTW build with these routines enabled
177 can still run on a CPU without SSE2, AVX, or AVX512. These options
178 are not compatible with <parameter>--enable-long-double</parameter>.
179 </para>
180
181 <para>
182 <parameter>--enable-float</parameter>: This enables building the library that
183 uses single precision floating point arithmetic. It is faster but less
184 precise than the default double precision library. The library will be
185 called <filename class="libraryfile">libfftw3f.so</filename> needed by
186 <xref linkend="pulseaudio"/>.
187 </para>
188
189 <para>
190 <parameter>--enable-long-double</parameter>: This enables building the
191 library that uses higher precision long-double floating point arithmetic.
192 The library will be called <filename
193 class="libraryfile">libfftw3l.so</filename>.
194 </para>
195
196 <para>
197 <option>--enable-avx512</option>: This enables building the optimized
198 routines using AVX512F instructions. FFTW will check if these routines
199 can be really used on the current CPU when the FFTW library is loaded,
200 so a FFTW build with these routines enabled can still run on a CPU
201 without AVX512F. Use this option if the FFTW build will be used on
202 a CPU with AVX512F. This option is not compatible with
203 <parameter>--enable-long-double</parameter>.
204 </para>
205 </sect2>
206
207 <sect2 role="content">
208 <title>Contents</title>
209
210 <segmentedlist>
211 <segtitle>Installed Programs</segtitle>
212 <segtitle>Installed Libraries</segtitle>
213 <segtitle>Installed Directories</segtitle>
214
215 <seglistitem>
216 <seg>
217 fftw-wisdom and fftw-wisdom-to-conf
218 </seg>
219 <seg>
220 libfftw3.so, libfftw3_threads.so, libfftw3f.so,
221 libfftw3f_threads.so, libfftw3l.so and libfftw3l_threads.so
222 </seg>
223 <seg>
224 None
225 </seg>
226 </seglistitem>
227 </segmentedlist>
228
229 <variablelist>
230 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
231 <?dbfo list-presentation="list"?>
232 <?dbhtml list-presentation="table"?>
233
234 <varlistentry id="fftw-wisdom">
235 <term><command>fftw-wisdom</command></term>
236 <listitem>
237 <para>
238 is a utility to generate FFTW wisdom files, which contain saved
239 information about how to optimally compute (Fourier) transforms of
240 various sizes
241 </para>
242 <indexterm zone="fftw fftw-wisdom">
243 <primary sortas="b-fftw-wisdom">fftw-wisdom</primary>
244 </indexterm>
245 </listitem>
246 </varlistentry>
247
248 <varlistentry id="fftw-wisdom-to-conf">
249 <term><command>fftw-wisdom-to-conf</command></term>
250 <listitem>
251 <para>
252 is a utility to generate C configuration routines from FFTW wisdom
253 files, where the latter contain saved information about how to
254 optimally compute (Fourier) transforms of various sizes
255 </para>
256 <indexterm zone="fftw fftw-wisdom-to-conf">
257 <primary sortas="b-fftw-wisdom-to-conf">fftw-wisdom-to-conf</primary>
258 </indexterm>
259 </listitem>
260 </varlistentry>
261
262 <varlistentry id="libfftw3">
263 <term><filename class="libraryfile">libfftw3.so</filename></term>
264 <listitem>
265 <para>
266 is the Fast Fourier Transform library
267 </para>
268 <indexterm zone="fftw libfftw3">
269 <primary sortas="c-libfftw3">libfftw3.so</primary>
270 </indexterm>
271 </listitem>
272 </varlistentry>
273
274 <varlistentry id="libfftw3_threads">
275 <term><filename class="libraryfile">libfftw3_threads.so</filename></term>
276 <listitem>
277 <para>
278 is the threaded Fast Fourier Transform library
279 </para>
280 <indexterm zone="fftw libfftw3_threads">
281 <primary sortas="c-libfftw3_threads">libfftw3_threads.so</primary>
282 </indexterm>
283 </listitem>
284 </varlistentry>
285
286 <varlistentry id="libfftw3f">
287 <term><filename class="libraryfile">libfftw3f.so</filename></term>
288 <listitem>
289 <para>
290 is the single-precision Fast Fourier Transform library, described
291 as <quote>float</quote> for historic reasons
292 </para>
293 <indexterm zone="fftw libfftw3f">
294 <primary sortas="c-libfftw3f">libfftw3f.so</primary>
295 </indexterm>
296 </listitem>
297 </varlistentry>
298
299 <varlistentry id="libfftw3f_threads">
300 <term><filename class="libraryfile">libfftw3f_threads.so</filename></term>
301 <listitem>
302 <para>
303 is the threaded single-precision Fast Fourier Transform library
304 </para>
305 <indexterm zone="fftw libfftw3f_threads">
306 <primary sortas="c-libfftw3f_threads">libfftw3f_threads.so</primary>
307 </indexterm>
308 </listitem>
309 </varlistentry>
310
311 <varlistentry id="libfftw3l">
312 <term><filename class="libraryfile">libfftw3l.so</filename></term>
313 <listitem>
314 <para>
315 is the long double Fast Fourier Transform library
316 </para>
317 <indexterm zone="fftw libfftw3l">
318 <primary sortas="c-libfftw3l">libfftw3l.so</primary>
319 </indexterm>
320 </listitem>
321 </varlistentry>
322
323 <varlistentry id="libfftw3l_threads">
324 <term><filename class="libraryfile">libfftw3l_threads.so</filename></term>
325 <listitem>
326 <para>
327 is the threaded long double Fast Fourier Transform library
328 </para>
329 <indexterm zone="fftw libfftw3l_threads">
330 <primary sortas="c-libfftw3l_threads">libfftw3l_threads.so</primary>
331 </indexterm>
332 </listitem>
333 </varlistentry>
334
335 </variablelist>
336
337 </sect2>
338
339</sect1>
Note: See TracBrowser for help on using the repository browser.