File: node11.html

package info (click to toggle)
espresso 6.7-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 311,068 kB
  • sloc: f90: 447,429; ansic: 52,566; sh: 40,631; xml: 37,561; tcl: 20,077; lisp: 5,923; makefile: 4,503; python: 4,379; perl: 1,219; cpp: 761; fortran: 618; java: 568; awk: 128
file content (279 lines) | stat: -rw-r--r-- 9,814 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

<!--Converted with LaTeX2HTML 2019.2 (Released June 5, 2019) -->
<HTML lang="EN">
<HEAD>
<TITLE>2.4 Libraries</TITLE>
<META NAME="description" CONTENT="2.4 Libraries">
<META NAME="keywords" CONTENT="user_guide">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<META NAME="viewport" CONTENT="width=device-width, initial-scale=1.0">
<META NAME="Generator" CONTENT="LaTeX2HTML v2019.2">

<LINK REL="STYLESHEET" HREF="user_guide.css">

<LINK REL="next" HREF="node12.html">
<LINK REL="previous" HREF="node10.html">
<LINK REL="next" HREF="node12.html">
</HEAD>

<BODY >
<!--Navigation Panel-->
<A
 HREF="node12.html">
<IMG WIDTH="37" HEIGHT="24" ALT="next" SRC="next.png"></A> 
<A
 HREF="node7.html">
<IMG WIDTH="26" HEIGHT="24" ALT="up" SRC="up.png"></A> 
<A
 HREF="node10.html">
<IMG WIDTH="63" HEIGHT="24" ALT="previous" SRC="prev.png"></A> 
<A ID="tex2html165"
  HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALT="contents" SRC="contents.png"></A>  
<BR>
<B> Next:</B> <A
 HREF="node12.html">2.5 Libxc library</A>
<B> Up:</B> <A
 HREF="node7.html">2 Installation</A>
<B> Previous:</B> <A
 HREF="node10.html">2.3 configure</A>
 &nbsp; <B>  <A ID="tex2html166"
  HREF="node1.html">Contents</A></B> 
<BR>
<BR>
<!--End of Navigation Panel-->
<!--Table of Child-Links-->
<A ID="CHILD_LINKS"><STRONG>Subsections</STRONG></A>

<UL>
<LI><UL>
<LI><A ID="tex2html167"
  HREF="node11.html#SECTION00034010000000000000">2.4.0.1 BLAS and LAPACK</A>
<LI><A ID="tex2html168"
  HREF="node11.html#SECTION00034020000000000000">2.4.0.2 FFT</A>
<LI><A ID="tex2html169"
  HREF="node11.html#SECTION00034030000000000000">2.4.0.3 MPI libraries</A>
<LI><A ID="tex2html170"
  HREF="node11.html#SECTION00034040000000000000">2.4.0.4 Libraries for accelerators</A>
<LI><A ID="tex2html171"
  HREF="node11.html#SECTION00034050000000000000">2.4.0.5 HDF5</A>
<LI><A ID="tex2html172"
  HREF="node11.html#SECTION00034060000000000000">2.4.0.6 Other libraries</A>
<LI><A ID="tex2html173"
  HREF="node11.html#SECTION00034070000000000000">2.4.0.7 If optimized libraries are not found</A>
</UL></UL>
<!--End of Table of Child-Links-->
<HR>

<H2><A ID="SECTION00034000000000000000"></A>
<A ID="Sec:Libraries"></A>
<BR>
2.4 Libraries
</H2>

<P>
Q<SMALL>UANTUM </SMALL>ESPRESSO contains a copy of some needed external libraries:

<UL>
<LI>iotk and FoX for reading and writing xml files;
</LI>
<LI>BLAS (<TT>http://www.netlib.org/blas/</TT>) and LAPACK
  (<TT>http://www.netlib.org/lapack/</TT>) for linear algebra;
</LI>
<LI>FFTW (<TT>http://www.fftw.org/</TT>) for Fast Fourier Transforms.
</LI>
</UL>
Optimized vendor-specific libraries often yield huge performance gains
with respect to compiled libraries and should be used whenever
possible. <TT>configure</TT> always try to locate the best mathematical
libraries.

<BR>
<P>

<H4><A ID="SECTION00034010000000000000">
2.4.0.1 BLAS and LAPACK</A>
</H4>
Q<SMALL>UANTUM </SMALL>ESPRESSO can use any architecture-optimized BLAS and LAPACK replacements,
like those contained e.g. in the MKL for Intel and AMD CPUs, or
ESSL for IBM Power machines.

<P>
If no optimized libraries are available, one may try the ATLAS library:
<TT>http://math-atlas.sourceforge.net/</TT>. Note that ATLAS is not
a complete replacement for LAPACK: it contains all of the BLAS, plus the
LU code, plus the full storage Cholesky code. Follow the instructions in the
ATLAS distributions to produce a full LAPACK replacement.

<P>
Sergei Lisenkov reported success and good performances with optimized
BLAS by Kazushige Goto. The library is now available under an
open-source license: see the GotoBLAS2 page at 
<BR><TT>http://www.tacc.utexas.edu/tacc-software/gotoblas2/</TT>.

<P>

<H4><A ID="SECTION00034020000000000000">
2.4.0.2 FFT</A>
</H4>
The FFTXlib of Q<SMALL>UANTUM </SMALL>ESPRESSO contains a copy of an old FFTW library.
It also supports
the newer FFTW3 library and some vendor-specific FFT libraries.
<TT>configure</TT> will first search for vendor-specific FFT libraries;
if none is found, it will search for an external FFTW v.3 library;
if none is found, it will fall back to the internal  copy of FFTW.
<TT>configure</TT> will add the appropriate preprocessing options:

<UL>
<LI><TT>-D__LINUX_ESSL</TT> for ESSL on IBM Linux machines,
</LI>
<LI><TT>-DASL</TT> for NEC ASL library on NEC machines (obsolete?),
</LI>
<LI><TT>-D__ARM_LIB</TT> for ARM Performance library,
</LI>
<LI><TT>-D__DFTI</TT>  for DFTI (Intel MKL library),
</LI>
<LI><TT>-D__FFTW3</TT> for FFTW3 (external),
</LI>
<LI><TT>-D__FFTW</TT>  for FFTW (internal library),
</LI>
</UL>
to <TT>DFLAGS</TT> in the <TT>make.inc</TT> file.
If you edit <TT>make.inc</TT> manually, please note that one and
only one among the mentioned preprocessing option must be set.

<P>
If you have MKL libraries, you may either use the provided FFTW3
interface (v.10 and later), or directly link FFTW3 from MKL (v.12
and later) or use DFTI (recommended).

<P>

<H4><A ID="SECTION00034030000000000000">
2.4.0.3 MPI libraries</A>
</H4>
MPI libraries are usually needed for parallel execution, unless you are 
happy with OpenMP-only multicore parallelization.
In well-configured machines, <TT>configure</TT> should find the appropriate
parallel compiler for you, and this should find the appropriate
libraries. Since often this doesn't
happen, especially on PC clusters, see Sec.<A HREF="node15.html#SubSec:LinuxPCMPI">2.8.3</A>.

<P>
<EM>Note:</EM> since v.6.1, MPI libraries implementing v.3 of the standard
(notably, non-blocking broadcast and gather operations) are required.

<P>

<H4><A ID="SECTION00034040000000000000">
2.4.0.4 Libraries for accelerators</A>
</H4>
The accelerated version of the code uses standard CUDA libraries such as
<TT>cublas, cufft, cusolver</TT> and the eigensolver library explicitly 
developed for Q<SMALL>UANTUM </SMALL>ESPRESSO by NVidia and distributed at <TT>https://github.com/NVIDIA/Eigensolver_gpu</TT>.

<P>

<H4><A ID="SECTION00034050000000000000">
2.4.0.5 HDF5</A>
</H4>
The HDF5 library (<TT>https://www.hdfgroup.org/downloads/hdf5/</TT>),
v.1.8.16 or later, can be used to perform binary I/O using the HDF5
format.

<P>
If compiling the HDF5 library from sources, attention must be paid
to pass options <TT>&ndash;enable-fortran</TT>,
<TT>&ndash;enable-fortran2003</TT>, and <TT>&ndash;enable-parallel</TT> (see below),
to the <TT>configure</TT> script of <TT>HDF5</TT> (not of Q<SMALL>UANTUM </SMALL>ESPRESSO). 

<P>
To use HDF5 is usually sufficient to specify the path to the fortran 
compiler wrapper for HDF5 (<TT>h5fc</TT> of <TT>h5pfc</TT> with the 
<TT>&ndash;with-hdf5=</TT> option of configure. If the wrapper is in the 
default path, just use <TT>&ndash;with-hdf5=yes</TT>.  
The configure script is usually able to extract the linker options
and the include directory path from the output of the wrapper. If it 
fails, the user can provide configure options 
<TT>&ndash;with-hdf5-libs=&lt;options&gt;</TT> and <TT>&ndash;with-hdf5-include=&lt;path&gt;</TT> 
for the linker options and include path respectively. 
These options are often needed when using the HDF5 packages 
provided by many LINUX distributions. In this case you may first try 
the <TT>&ndash;with-hdf5=yes</TT> option. If it fails, just type command
<TT>h5fc &ndash;show</TT> (or <TT>h5pfc</TT> if you are using parallel HDF5):
the command will print out the linker and include options to be passed 
manually to the configure script.

<P>
The configure script is able to determine whether one is linking to a 
serial or parallel HDF5 library, and will  set the flag 
<TT>-D__HDF5_SERIAL</TT> in the <TT>make.inc</TT> file accordingly. 

<P>

<H4><A ID="SECTION00034060000000000000">
2.4.0.6 Other libraries</A>
</H4>
Q<SMALL>UANTUM </SMALL>ESPRESSO can use the MASS vector math
library from IBM, if available (only on machines with XLF compiler:
likely obsolete).

<P>

<H4><A ID="SECTION00034070000000000000">
2.4.0.7 If optimized libraries are not found</A>
</H4>
The <TT>configure</TT> script attempts to find optimized libraries, but may fail
if they have been installed in non-standard places. You should examine
the final value of <TT>BLAS_LIBS, LAPACK_LIBS, FFT_LIBS, MPI_LIBS</TT> (if needed),
<TT>MASS_LIBS</TT> (IBM only), either in the output of <TT>configure</TT> or in the generated
<TT>make.inc</TT>, to check whether it found all the libraries that you intend to use.

<P>
If some library was not found, you can specify a list of directories to search
in the environment variable <TT>LIBDIRS</TT>,
and rerun <TT>configure</TT>; directories in the
list must be separated by spaces. For example:
<PRE>
   ./configure LIBDIRS="/opt/intel/mkl70/lib/32 /usr/lib/math"
</PRE>
If this still fails, you may set some or all of the <TT>*_LIBS</TT> variables manually
and retry. For example:
<PRE>
   ./configure BLAS_LIBS="-L/usr/lib/math -lf77blas -latlas_sse"
</PRE>
Beware that in this case, <TT>configure</TT> will blindly accept the specified value,
and won't do any extra search.

<P>
<HR>
<!--Navigation Panel-->
<A
 HREF="node12.html">
<IMG WIDTH="37" HEIGHT="24" ALT="next" SRC="next.png"></A> 
<A
 HREF="node7.html">
<IMG WIDTH="26" HEIGHT="24" ALT="up" SRC="up.png"></A> 
<A
 HREF="node10.html">
<IMG WIDTH="63" HEIGHT="24" ALT="previous" SRC="prev.png"></A> 
<A ID="tex2html165"
  HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALT="contents" SRC="contents.png"></A>  
<BR>
<B> Next:</B> <A
 HREF="node12.html">2.5 Libxc library</A>
<B> Up:</B> <A
 HREF="node7.html">2 Installation</A>
<B> Previous:</B> <A
 HREF="node10.html">2.3 configure</A>
 &nbsp; <B>  <A ID="tex2html166"
  HREF="node1.html">Contents</A></B> 
<!--End of Navigation Panel-->

</BODY>
</HTML>