2005-11-05 22:57:48 +03:00
|
|
|
Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
|
|
|
University Research and Technology
|
|
|
|
Corporation. All rights reserved.
|
|
|
|
Copyright (c) 2004-2005 The University of Tennessee and The University
|
|
|
|
of Tennessee Research Foundation. All rights
|
|
|
|
reserved.
|
2004-11-28 23:09:25 +03:00
|
|
|
Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
|
|
University of Stuttgart. All rights reserved.
|
2005-03-24 15:43:37 +03:00
|
|
|
Copyright (c) 2004-2005 The Regents of the University of California.
|
|
|
|
All rights reserved.
|
2010-01-22 19:39:38 +03:00
|
|
|
Copyright (c) 2008-2010 Cisco Systems, Inc. All rights reserved.
|
2004-11-22 04:38:40 +03:00
|
|
|
$COPYRIGHT$
|
|
|
|
|
|
|
|
Additional copyrights may follow
|
|
|
|
|
2004-11-22 03:37:56 +03:00
|
|
|
$HEADER$
|
|
|
|
|
2004-01-17 03:16:23 +03:00
|
|
|
Overview
|
|
|
|
========
|
|
|
|
|
2004-06-19 19:27:44 +04:00
|
|
|
This file is here for those who are building/exploring OMPI in its
|
2004-10-16 03:19:33 +04:00
|
|
|
source code form, most likely through a developer's tree (i.e., a
|
2010-03-27 00:03:50 +03:00
|
|
|
Subversion or Mercurial checkout).
|
2005-06-09 05:12:54 +04:00
|
|
|
|
|
|
|
|
|
|
|
Debugging vs. Optimized Builds
|
|
|
|
==============================
|
|
|
|
|
|
|
|
If you are building Open MPI from a Subversion checkout, the default
|
|
|
|
build includes a lot of debugging features. This happens
|
|
|
|
automatically when when configure detects the hidden ".svn" Subversion
|
|
|
|
meta directory (that is present in all Subversion checkouts) in your
|
|
|
|
source tree, and therefore activates a number of developer-only
|
2010-03-27 00:03:50 +03:00
|
|
|
debugging features in the Open MPI code base.
|
|
|
|
|
|
|
|
The same debugging features are activated if you build in a Mercurial
|
|
|
|
clone (with the hidden ".hg" meta directory).
|
2005-06-09 05:12:54 +04:00
|
|
|
|
2008-09-23 23:50:31 +04:00
|
|
|
By definition, debugging builds will perform [much] slower than
|
|
|
|
optimized builds of Open MPI. You should *NOT* conduct timing tests
|
|
|
|
or try to run production performance numbers with debugging builds.
|
2005-06-09 05:12:54 +04:00
|
|
|
|
|
|
|
If you wish to build an optimized version of Open MPI from a
|
2005-08-25 02:10:06 +04:00
|
|
|
developer's checkout, you have three main options:
|
2005-06-09 05:12:54 +04:00
|
|
|
|
2005-08-25 02:10:06 +04:00
|
|
|
1. Use the "--with-platform=optimized" switch to configure. This is
|
|
|
|
the preferred (and probably easiest) method. For example:
|
|
|
|
|
|
|
|
shell$ svn co http://svn.open-mpi.org/svn/ompi/trunk ompi
|
|
|
|
shell$ cd ompi
|
2010-09-18 03:04:06 +04:00
|
|
|
shell$ ./autogen.pl
|
2005-08-25 02:10:06 +04:00
|
|
|
shell$ mkdir build
|
|
|
|
shell$ cd build
|
|
|
|
shell$ ./configure --with-platform=optimized ...
|
|
|
|
[...lots of output...]
|
|
|
|
shell$ make all install
|
|
|
|
|
|
|
|
2. Use a VPATH build. Simply build Open MPI from a different
|
2008-09-23 23:50:31 +04:00
|
|
|
directory than the source tree -- one where the .svn / .hg
|
|
|
|
subdirectory is not present. For example:
|
2005-06-09 05:12:54 +04:00
|
|
|
|
2005-08-05 16:33:53 +04:00
|
|
|
shell$ svn co http://svn.open-mpi.org/svn/ompi/trunk ompi
|
2005-06-09 05:12:54 +04:00
|
|
|
shell$ cd ompi
|
2010-09-18 03:04:06 +04:00
|
|
|
shell$ ./autogen.p
|
2005-06-09 05:12:54 +04:00
|
|
|
shell$ mkdir build
|
|
|
|
shell$ cd build
|
|
|
|
shell$ ../configure ...
|
|
|
|
[...lots of output...]
|
|
|
|
shell$ make all install
|
|
|
|
|
2005-08-25 02:10:06 +04:00
|
|
|
3. Manually specify configure options to disable all the debugging
|
|
|
|
options (note that this is exactly what "--with-platform=optimized"
|
|
|
|
does behind the scenes). You'll need to carefully examine the
|
|
|
|
output of "./configure --help" to see which options to disable.
|
|
|
|
They are all listed, but some are less obvious than others (they
|
|
|
|
are not listed here because it is a changing set of flags; by
|
2005-09-16 16:28:31 +04:00
|
|
|
Murphy's Law, listing them here will pretty much guarantee that
|
2005-08-25 02:10:06 +04:00
|
|
|
this file will get out of date):
|
2005-06-09 05:12:54 +04:00
|
|
|
|
|
|
|
shell$ ./configure --disable-debug ...
|
|
|
|
[...lots of output...]
|
|
|
|
shell$ make all install
|
2004-01-17 03:16:23 +03:00
|
|
|
|
|
|
|
|
2008-05-21 00:23:31 +04:00
|
|
|
Use of GNU m4, Autoconf, Automake, and Libtool
|
|
|
|
==============================================
|
2004-01-17 03:16:23 +03:00
|
|
|
|
2004-07-07 19:58:55 +04:00
|
|
|
This procedure is *ONLY* necessary if you are building from a
|
|
|
|
developer's tree. If you have an Open MPI distribution tarball, this
|
2005-06-09 05:12:54 +04:00
|
|
|
procedure is unnecessary -- you can (and should) skip reading this
|
|
|
|
section.
|
2004-07-07 19:58:55 +04:00
|
|
|
|
2004-08-06 18:30:18 +04:00
|
|
|
If you are building Open MPI from a developer's tree, you must first
|
2008-05-21 00:23:31 +04:00
|
|
|
install fairly recent versions of the GNU tools m4, Autoconf, Automake,
|
2007-05-09 00:37:08 +04:00
|
|
|
and Libtool. The specific versions required depend on if you are
|
|
|
|
using the trunk or a release branch (and which release branch you are
|
|
|
|
using). The specific versions can be found at:
|
|
|
|
|
|
|
|
http://www.open-mpi.org/svn/building.php
|
|
|
|
|
|
|
|
You can check what versions of the autotools you have installed with
|
|
|
|
the following:
|
2004-01-17 03:16:23 +03:00
|
|
|
|
2008-05-21 00:23:31 +04:00
|
|
|
shell$ m4 --version
|
2004-01-17 03:16:23 +03:00
|
|
|
shell$ autoconf --version
|
|
|
|
shell$ automake --version
|
2005-09-16 16:28:31 +04:00
|
|
|
shell$ libtoolize --version
|
2004-01-17 03:16:23 +03:00
|
|
|
|
2005-06-09 05:12:54 +04:00
|
|
|
To strengthen the above point: the core Open MPI developers typically
|
2010-03-27 00:03:50 +03:00
|
|
|
use very, very recent versions of the GNU tools. There are known bugs
|
|
|
|
in older versions of the GNU tools that Open MPI no longer compensates
|
|
|
|
for (it seemed senseless to indefinitely support patches for ancient
|
|
|
|
versions of Autoconf, for example). You *WILL* have problems if you
|
|
|
|
do not use recent versions of the GNU tools.
|
2005-06-09 05:12:54 +04:00
|
|
|
|
2004-01-17 03:16:23 +03:00
|
|
|
If you need newer versions, you are *strongly* encouraged to heed the
|
|
|
|
following advice:
|
|
|
|
|
2004-06-19 19:27:44 +04:00
|
|
|
NOTE: On MacOS/X, the default "libtool" program is different than the
|
2005-06-09 05:12:54 +04:00
|
|
|
GNU libtool. You must download and install the GNU version (via
|
|
|
|
Fink or any other mechanism).
|
2004-06-08 00:59:45 +04:00
|
|
|
|
2004-01-17 03:16:23 +03:00
|
|
|
1. Unless your OS distribution has easy-to-use binary installations,
|
|
|
|
the sources can be can be downloaded from:
|
|
|
|
|
2008-05-21 00:23:31 +04:00
|
|
|
ftp://ftp.gnu.org/gnu/m4/
|
2004-01-17 03:16:23 +03:00
|
|
|
ftp://ftp.gnu.org/gnu/autoconf/
|
|
|
|
ftp://ftp.gnu.org/gnu/automake/
|
|
|
|
ftp://ftp.gnu.org/gnu/libtool/
|
|
|
|
|
|
|
|
2. Build and install the tools in the following order:
|
|
|
|
|
2008-05-21 00:23:31 +04:00
|
|
|
2a. m4
|
|
|
|
2b. Autoconf
|
|
|
|
2c. Automake
|
|
|
|
2d. Libtool
|
2004-01-17 03:16:23 +03:00
|
|
|
|
2008-05-21 00:23:31 +04:00
|
|
|
3. You MUST install all four tools into the same prefix directory.
|
|
|
|
These four tools are somewhat inter-related, and if they're going
|
2004-01-17 03:16:23 +03:00
|
|
|
to be used together, they MUST share a common installation prefix.
|
|
|
|
|
|
|
|
3a. It is *strongly* encouraged that you do not install your new
|
|
|
|
versions over the OS-installed versions. This could cause
|
|
|
|
other things on your system to break. Instead, install into
|
|
|
|
$HOME/local, or /usr/local, or wherever else you tend to
|
|
|
|
install "local" kinds of software.
|
|
|
|
3b. In doing so, be sure to prefix your $path with the directory
|
|
|
|
where they are installed. For example, if you install into
|
|
|
|
$HOME/local, you may want to edit your shell startup file
|
|
|
|
(.bashrc, .cshrc, .tcshrc, etc.) to have something like:
|
|
|
|
|
|
|
|
# For bash/sh:
|
|
|
|
export PATH=$HOME/local/bin:$PATH
|
|
|
|
# For csh/tcsh:
|
|
|
|
set path = ($HOME/local/bin $path)
|
|
|
|
|
|
|
|
3c. Ensure to set your $path *BEFORE* you configure/build/install
|
2008-05-21 00:23:31 +04:00
|
|
|
the four packages.
|
2004-01-17 03:16:23 +03:00
|
|
|
|
2008-05-21 00:23:31 +04:00
|
|
|
4. All four packages require two simple commands to build and
|
2004-01-17 03:16:23 +03:00
|
|
|
install (where PREFIX is the prefix discussed in 3, above).
|
|
|
|
|
2010-03-27 00:03:50 +03:00
|
|
|
shell$ cd m4-1.4.13
|
2004-01-17 03:16:23 +03:00
|
|
|
shell$ ./configure --prefix=PREFIX
|
2008-05-21 00:23:31 +04:00
|
|
|
shell$ make; make install
|
2004-01-17 03:16:23 +03:00
|
|
|
|
2004-10-16 03:19:33 +04:00
|
|
|
--> NOTE: The builds are so short that parallel builds really
|
|
|
|
aren't worth it (and cause problems in some cases).
|
2004-08-05 02:25:47 +04:00
|
|
|
|
2004-10-16 03:19:33 +04:00
|
|
|
--> If you are using the csh or tcsh shells, be sure to run the
|
|
|
|
"rehash" command after you install each package.
|
2004-01-17 03:16:23 +03:00
|
|
|
|
2010-03-27 00:03:50 +03:00
|
|
|
shell$ cd ../autoconf-2.65
|
2004-01-17 03:16:23 +03:00
|
|
|
shell$ ./configure --prefix=PREFIX
|
2008-05-21 00:23:31 +04:00
|
|
|
shell$ make; make install
|
2004-01-17 03:16:23 +03:00
|
|
|
|
2004-10-16 03:19:33 +04:00
|
|
|
--> If you are using the csh or tcsh shells, be sure to run the
|
|
|
|
"rehash" command after you install each package.
|
|
|
|
|
2010-03-27 00:03:50 +03:00
|
|
|
shell$ cd ../automake-1.11.1
|
2004-01-17 03:16:23 +03:00
|
|
|
shell$ ./configure --prefix=PREFIX
|
2008-05-21 00:23:31 +04:00
|
|
|
shell$ make; make install
|
2004-01-17 03:16:23 +03:00
|
|
|
|
2004-10-16 03:19:33 +04:00
|
|
|
--> If you are using the csh or tcsh shells, be sure to run the
|
|
|
|
"rehash" command after you install each package.
|
2004-01-17 03:16:23 +03:00
|
|
|
|
2008-09-23 23:50:31 +04:00
|
|
|
shell$ cd ../libtool-2.2.6
|
2008-05-21 00:23:31 +04:00
|
|
|
shell$ ./configure --prefix=PREFIX
|
|
|
|
shell$ make; make install
|
|
|
|
|
|
|
|
--> If you are using the csh or tcsh shells, be sure to run the
|
|
|
|
"rehash" command after you install each package.
|
|
|
|
|
|
|
|
m4, Autoconf and Automake build and install very quickly; Libtool will
|
2004-01-17 03:16:23 +03:00
|
|
|
take a minute or two.
|
|
|
|
|
2010-09-18 03:04:06 +04:00
|
|
|
5. You can now run OMPI's top-level "autogen.pl" script. This script
|
2004-01-17 03:16:23 +03:00
|
|
|
will invoke the GNU Autoconf, Automake, and Libtool commands in the
|
2004-06-07 19:33:53 +04:00
|
|
|
proper order and setup to run OMPI's top-level "configure" script.
|
2004-01-17 03:16:23 +03:00
|
|
|
|
2010-09-18 03:04:06 +04:00
|
|
|
Running autogen.pl may take several minutes, depending on your
|
2009-05-27 18:22:32 +04:00
|
|
|
system. It's not very exciting to watch. :-)
|
|
|
|
|
|
|
|
If you have a multi-processor system, enabling the multi-threaded
|
2010-09-18 03:04:06 +04:00
|
|
|
behavior in Automake 1.11 (or newer) can result in autogen.pl
|
2009-05-27 18:22:32 +04:00
|
|
|
running faster. Do this by setting the AUTOMAKE_JOBS environment
|
|
|
|
variable to the number of processors (threads) that you want it to
|
|
|
|
use. For example (you can again put this in your shell startup
|
|
|
|
files):
|
|
|
|
|
|
|
|
# For bash/sh:
|
|
|
|
export AUTOMAKE_JOBS=4
|
|
|
|
# For csh/tcsh:
|
|
|
|
set AUTOMAKE_JOBS 4
|
2004-01-17 03:16:23 +03:00
|
|
|
|
2010-09-18 03:04:06 +04:00
|
|
|
5a. You generally need to run autogen.pl whenever the top-level
|
2004-10-16 03:19:33 +04:00
|
|
|
file "configure.ac" changes, or any files in the config/
|
|
|
|
directory change (the config/ directory is where a lot of
|
|
|
|
"include" files for OMPI's configure script live).
|
2004-01-17 03:16:23 +03:00
|
|
|
|
2010-09-18 03:04:06 +04:00
|
|
|
5b. You do *NOT* need to re-run autogen.pl if you modify a
|
2004-01-17 03:16:23 +03:00
|
|
|
Makefile.am.
|
|
|
|
|
2004-10-16 03:19:33 +04:00
|
|
|
Use of Flex
|
|
|
|
===========
|
|
|
|
|
|
|
|
Flex is used during the compilation of a developer's checkout (it is
|
|
|
|
not used in distribution tarballs). Other flavors of lex are *not*
|
|
|
|
supported: given the choice of making parsing code portable between
|
|
|
|
all flavors of lex and doing more interesting work on Open MPI, we
|
2008-11-11 18:12:46 +03:00
|
|
|
greatly prefer the latter.
|
|
|
|
|
2010-01-22 19:39:38 +03:00
|
|
|
Several POSIXly-oriented developers use the stable flex version
|
|
|
|
v2.5.4a from July of 1997. Others have upgraded to more recent
|
|
|
|
versions; these also seem to work fine. Note that no testing has been
|
|
|
|
performed to see what the minimum version of Flex is required by Open
|
|
|
|
MPI. We suggest that you use v2.5.4a at the earliest.
|
|
|
|
|
|
|
|
*** NOTE: Windows builds of Open MPI require Flex version 2.5.35.
|
|
|
|
Specifically, we know that v2.5.35 works and 2.5.4a does not. We have
|
|
|
|
not tested to figure out exactly what the minimum required flex
|
|
|
|
version is on Windows; we suggest that you use 2.5.35 at the earliest.
|
|
|
|
It is for this reason that the contrib/dist/make_dist_tarball script
|
|
|
|
checks for a Windows-friendly version of flex before continuing.
|
2008-11-11 18:12:46 +03:00
|
|
|
|
|
|
|
Note that the flex-generated code generates some compiler warnings on
|
|
|
|
some platforms, but the warnings do not seem to be consistent or
|
|
|
|
uniform on all platforms, compilers, and flex versions. As such, we
|
|
|
|
have done little to try to remove those warnings.
|
2004-10-16 03:19:33 +04:00
|
|
|
|
|
|
|
If you do not have Flex installed, it can be downloaded from the
|
|
|
|
following URL:
|
|
|
|
|
2008-11-11 18:12:46 +03:00
|
|
|
http://flex.sourceforge.net/
|