source: ThirdParty/mpqc_open/doc/compile.dox@ 788dce

Action_Thermostats Add_AtomRandomPerturbation Add_RotateAroundBondAction Add_SelectAtomByNameAction Adding_Graph_to_ChangeBondActions Adding_MD_integration_tests Adding_StructOpt_integration_tests AutomationFragmentation_failures Candidate_v1.6.1 ChangeBugEmailaddress ChemicalSpaceEvaluator Docu_Python_wait EmpiricalPotential_contain_HomologyGraph_documentation Enhance_userguide Enhanced_StructuralOptimization Enhanced_StructuralOptimization_continued Example_ManyWaysToTranslateAtom Exclude_Hydrogens_annealWithBondGraph Fix_StatusMsg Fix_StepWorldTime_single_argument Fix_Verbose_Codepatterns ForceAnnealing_oldresults ForceAnnealing_with_BondGraph ForceAnnealing_with_BondGraph_continued ForceAnnealing_with_BondGraph_continued_betteresults ForceAnnealing_with_BondGraph_contraction-expansion Gui_displays_atomic_force_velocity IndependentFragmentGrids_IntegrationTest JobMarket_RobustOnKillsSegFaults JobMarket_StableWorkerPool PythonUI_with_named_parameters QtGui_reactivate_TimeChanged_changes Recreated_GuiChecks RotateToPrincipalAxisSystem_UndoRedo StoppableMakroAction TremoloParser_IncreasedPrecision TremoloParser_MultipleTimesteps
Last change on this file since 788dce was 860145, checked in by Frederik Heber <heber@…>, 8 years ago

Merge commit '0b990dfaa8c6007a996d030163a25f7f5fc8a7e7' as 'ThirdParty/mpqc_open'

  • Property mode set to 100644
File size: 12.8 KB
RevLine 
[0b990d]1
2/** \page compile Compiling
3
4<ul>
5 <li> \ref compilepre
6 <li> \ref compilepreopt
7 <li> \ref compileconf
8 <ul>
9 <li> \ref compilecca
10 </ul>
11 <li> \ref compilecomp
12 <li> \ref compilecheck
13</ul>
14
15\section compilepre Prerequisites
16
17Make sure that you have the following programs available. Most can be found
18at any GNU software FTP repository.
19
20<ul>
21
22 <li> Compilers for the C, C++, and FORTRAN languages are needed. The
23 FORTRAN compiler is used to determine the linkage conventions for
24 the BLAS libraries, however, you can turn off the use of a FORTRAN
25 compiler by giving <tt>--without-f77</tt> as an option to the
26 configure script, however, this will not work unless you
27 only want the utility libraries. The compilers listed below are
28 known to work. Other ISO C++ compilers should work as well.
29
30 <ul>
31
32 <li> GCC 2.96 and later, available from <a
33 href="http://gcc.gnu.org">http://gcc.gnu.org</a>. However,
34 the 3.0 and 3.0.1 releases of GCC are not recommended.
35
36 <li> IBM xlC 5.0.2 and later work with both 32 and 64 bit modes
37 Use the versions of the compilers with the "_r" appended to
38 the name, since SC uses multi-threading. You must also
39 specify that RTTI is used: <tt>--with-cxx='xlC_r
40 -qrtti'</tt>.
41
42 <li> Compaq/Alpha/Linux with Compaq C++ 6.3.6.8 and later work.
43 Special configure options are needed: <tt>--with-cxx='cxx
44 -D__USE_STD_IOSTREAM'</tt>
45
46 <li> The Intel 5.0.1 Linux compilers for IA-32 work. Version
47 5.0.1 for IA-64 will not work.
48
49 <li> The KAI version 4.0e1 compiler works. Special configure
50 options are needed: <tt>--with-cxx='KCC
51 --one_instantiation_per_object' --with-ar=KCC
52 --with-ar-flags=-o</tt>
53
54 </ul>
55
56 <li> The Basic Linear Algebra Subprograms (BLAS) are required. A
57 prepackaged version of BLAS is available for most machines.
58 Consult you operating system documentation for more information.
59 If precompiled BLAS routines are not available for your machine,
60 the source can be obtained from <a
61 href="http://www.netlib.org/blas">http://www.netlib.org/blas</a>.
62 The file blas.tgz contains the source for all of the BLAS
63 routines. If the BLAS library is not named libblas.a or is not
64 installed in the default library search path, then configure must
65 be given --with-libs, --with-libdirs, or both.
66
67 <li> The Linear Algebra Package (LAPACK) 3.0 is required. A
68 prepackaged version of LAPACK is available for most machines.
69 Consult you operating system documentation for more information.
70 If a precompiled LAPACK is not available for your machine, the
71 source can be obtained from <a
72 href="http://www.netlib.org/lapack">http://www.netlib.org/lapack</a>.
73 The file lapack.tgz contains the source for all of the LAPACK
74 routines. If the LAPACK library is not named liblapack.a or is
75 not installed in the default library search path, then configure
76 must be given --with-libs, --with-libdirs, or both.
77
78 <li> If you modify the scanner source file, then a
79 lexical analyzer generator is required to generate code to read
80 input files. The flex program is used for this purpose.
81 However, the most common version of flex, 2.5.4a, does
82 not generate legal C++. It may be necessary to download,
83 compile, and install a more recent version of flex from <a
84 href="http://lex.sourceforge.net">http://lex.sourceforge.net</a>.
85
86 Make sure that <tt>FlexLexer.h</tt> from flex is in your include
87 path. You may need to give the path to <tt>FlexLexer.h</tt> to
88 configure with an argument that looks something like:
89 <tt>--with-include=-I/usr/local/include</tt>
90
91 <li> If you modify a parser source file, then GNU bison (version 1.24
92 or greater) is needed. This is a parser generator used to
93 generate code to read input files.
94
95 <li> GNU gmake (version 3.70 or greater): GNU specific extensions to make
96 are used extensively.
97
98 <li> perl: This is used to convert template classes to macros, generate
99 and check the validation suite etc. To compile SC, either perl 4
100 or perl 5 will work. To generate the validation inputs and
101 automatically check the outputs, perl 5.003 or later is needed.
102
103 </ul>
104
105\section compilepreopt Optional Packages
106
107The following packages are not necessary to compile MPQC, but may provide additional
108features.
109
110<ul>
111
112 <li> A Message Passing Interface (MPI) is required to use MPQC in
113 parallel on distributed memory machines.
114
115 <li> The parallel MP2 and MP2-R12 methods require direct access to
116 remote memory. This requires one of two features: A thread-safe
117 MPI (<a href="http://www.mpi-softtech.com">MPI Software
118 Technology, Inc.</a> has developed a thread-safe MPI) or the <a
119 href="http://www.emsl.pnl.gov/docs/parsoft/armci/">Aggregate
120 Remote Memory Copy Interface (ARMCI)</a>. These respectively
121 permit remote memory access through the ARMCIMemoryGrp and the
122 MTMPIMemoryGrp classes, respectively.
123
124 <li> Libint (version 1.1.0 or higher): This is a machine-generated
125 library that can be used for evaluation of certain molecular
126 integrals. IntegralCints and MBPT2_R12 classes depend on this
127 library. The library is freely available under GNU Public License
128 (GPL) from <a
129 href="http://www.ccmst.gatech.edu/evaleev/libint/">www.ccmst.gatech.edu/evaleev/libint/</a>.
130
131 <li> Cca-chem-generic (version 0.2.0 or higher, and associated CCA tools):
132 This package allows both stand-alone and embedded component applications
133 to be formed using MPQC-based components. Visit the
134 <a href="http://cca-forum.org/~cca-chem">CCA Chemistry Component Toolkit Homepage</a>
135 for information on the freely available source code.
136
137</ul>
138
139\section compileconf Configuration
140
141 You can build MPQC in the source code directory or you can make a
142companion directory which will be used to hold all of the files generated
143by the compilation. You may name this directory anything you want.
144Typically, this directory is named to indicate the architecture
145(e.g. <tt>mpqc.i686-linux</tt>) and will be referred to as the target
146directory below.
147
148 In the target directory execute the <tt>configure</tt> command which is
149located in the SC source directory. Use the absolute pathname to the
150configure script. This command should build a hierarchy of target
151directories and the necessary makefiles. Do a <tt>configure --help</tt> to
152see a list of options. Options are specified with an equals sign, as in
153<tt>configure --prefix=/usr/local</tt>. Some options, such as all the
154<tt>enable</tt> and <tt>disable</tt> options, do not require an argument.
155Useful options to configure include:
156
157<dl>
158
159<dt><tt>--prefix</tt><dd>Specifies the installation directory. The default
160 is <tt>/usr/local/mpqc/</tt><i>version-number</i>
161
162<dt><tt>--enable-debug</tt><dd>Options for debugging will be given to the
163 compiler. Use <tt>--enable-debug=opt</tt> to use both debugging and
164 optimization options.
165
166<dt><tt>--with-default-parallel</tt><dd>Gives the default parallism
167 specializations. Can be <tt>none</tt> for no default or <tt>mtmpi</tt>
168 for MTMPIMemoryGrp (MPI must be fully thread-safe) and MPIMessageGrp
169 specializations. The parallelism model can be overridden with command
170 line arguments or environmental variables.
171
172<dt><tt>--enable-always-use-mpi</tt>This can be given if MPIMessageGrp
173 is to be the only MessageGrp that will be used. This option should
174 be given if the real argc and argv must be given to MPI_Init.
175
176<dt><tt>--disable-parallel</tt><dd>Do not try to find communications
177 libraries.
178
179<dt><tt>--disable-threads</tt><dd>Do not try to find the multi-thread
180 libraries.
181
182<dt><tt>--enable-shared</tt><dd>Use shared libraries. This will
183 reduce the size of executables, if shared libraries are supported
184 on your system.
185
186<dt><tt>--disable-static</tt><dd>Do not build libraries for static linking.
187
188<dt><tt>--enable-ref-debug</tt><dd>Check for overwrites and overflows of
189 reference counts. Implied by ``--enable-debug''.
190
191<dt><tt>--disable-ref-macros</tt><dd>Use template classes for reference
192 counting. The default is to use a CPP macro to generate a class
193 definition.
194
195<dt><tt>--enable-cross-compile</tt><dd>If this option is set then the
196 configure script will take care to not execute any compiled test
197 programs.
198
199<dt><tt>--enable-shared-libs</tt><dd>This will generate shared objects and
200 link with them instead of standard ``.a'' libraries. This works on a
201 Linux-ELF system.
202
203<dt><tt>--enable-components</tt><dd>This will generate CCA components and
204 enable embedded CCA frameworks within MPQC.
205
206<dt><tt>--with-build-id</tt><dd>This is used to generate unique shared
207 library names and a unique default prefix for an MPQC installation.
208 Unique shared library names must be used used by package distributors if
209 a non-official ABI is used. The official ABI is GCC-3.2. Earlier
210 versions of GCC are not compatible. Installations with multiple C++
211 compilers that use shared libraries should use --with-build-id to avoid
212 accidentally dynamically linking with the wrong libraries.
213
214<dt><tt>--with-default-memory</tt><dd>This specifies the default
215memory allocation, which is used in absense of the memory> keyword in user's input.
216The default is 32 million bytes (roughly, 32 MB).
217
218<dt><tt>--with-cc</tt><dd>Gives the name of the C compiler.
219
220<dt><tt>--with-cc-optflags</tt><dd>By default configure will attempt to
221 guess a reasonable set of optimization flags. These flags will be
222 overridden by the argument given to this keyword.
223
224<dt><tt>--with-cxx</tt><dd>Gives the name of the C++ compiler.
225
226<dt><tt>--with-cxx-optflags</tt><dd>By default configure will attempt to
227 guess a reasonable set of optimization flags. These flags will be
228 overridden by the argument given to this keyword.
229
230<dt><tt>--with-f77</tt><dd>Gives the name of the FORTRAN compiler.
231
232<dt><tt>--without-f77</tt><dd>configure will not try to find a FORTRAN
233 compiler. This can only be used if nothing more than the utility
234 libraries are needed.
235
236<dt><tt>--with-ranlib</tt><dd>Gives the name of the archive indexing
237 utility.
238
239<dt><tt>--with-ar</tt><dd>Gives the name of the program that makes
240 libraries.
241
242<dt><tt>--with-ld</tt><dd>Gives the name of the object linker.
243
244<dt><tt>--with-include</tt><dd>Gives directories in which include files
245 should be sought. For example, <tt>--with-include="-I/u/local/inc
246 -I/u/cljanss/include"</tt>
247
248<dt><tt>--with-libs</tt><dd>Specifies libraries that executables should be
249 linked with. For example, <tt>--with-libs=-llapack_IRIX.a</tt>.
250
251<dt><tt>--with-libdirs</tt><dd>Gives the directories in which libraries
252 should be sought. For example,
253 <tt>--with-libdirs=-L/usr/local/lib64</tt>.
254
255<dt><tt>--with-cca-chem-config</tt><dd>Specifies the config script for the
256 cca-chem-generic package (prerequisite for CCA components).
257
258</dl>
259
260 If you would like to further customize your target directory,
261you can edit <tt>src/lib/scconfig.h</tt> and <tt>lib/LocalMakefile</tt> to
262suit your needs. The next time you run configure, these files and
263all the makefiles will be overwritten.
264
265\subsection compilecca Notes on CCA Configuration
266
267<ul>
268 <li> Use the <tt>--enable-components</tt> flag to generate CCA components and enable
269 embedded frameworks within MPQC.
270 <li> The <tt>cca-chem-config</tt> script must be found in the user's path or
271 specified using the <tt>--with-cca-chem-config</tt>.
272 <li> To fully support runtime configuration of component applications,
273 compile using <tt>--enable-shared</tt>.
274 <li> Run <tt>make install_devel</tt> after compiling to install the <tt>sc-config</tt>
275 script (required by <tt>cca-chem-apps</tt>).
276</ul>
277
278\section compilecomp Compilation
279
280 Now you are ready to build the libraries and executables. Do this by
281typing <tt>make</tt> in your target directory. If you are running on a
282symmetric multi-processor, you can use GNU make to parallelize the
283compilation. To compile four files at a time, type <tt>make -j4</tt>.
284This feature works correctly with GNU make version 3.78.1 or later; for
285older versions of GNU make use <tt>make JOBS=-j4</tt>.
286
287 You can install the executables and data files with <tt>make install</tt>.
288
289 You can install the libraries and header files with <tt>make
290install_devel</tt>, however, <tt>make install</tt> must be also be run to
291install the files needed for run-time support.
292
293\section compilecheck Checking the Compilation
294
295See \ref mpqcval for instructions for checking your compilation.
296
297*/
Note: See TracBrowser for help on using the repository browser.