mac mpi
This commit is contained in:
265
macx64/mpi/openmpi/share/man/man1/mpic++.1
Normal file
265
macx64/mpi/openmpi/share/man/man1/mpic++.1
Normal file
@@ -0,0 +1,265 @@
|
||||
.\" Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved.
|
||||
.\" Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved.
|
||||
.TH mpic++ 1 "Mar 26, 2019" "4.0.1" "Open MPI"
|
||||
.
|
||||
.SH NAME
|
||||
mpic++ -- Open MPI C++ wrapper compiler
|
||||
.
|
||||
.SH SYNTAX
|
||||
mpic++ [-showme|-showme:compile|-showme:link] ...
|
||||
.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
--showme
|
||||
This option comes in several different variants (see below). None of
|
||||
the variants invokes the underlying compiler; they all provide
|
||||
information on how the underlying compiler would have been invoked had
|
||||
.I --showme
|
||||
not been used.
|
||||
The basic
|
||||
.I --showme
|
||||
option outputs the command line that would be executed to compile the
|
||||
program. \fBNOTE:\fR If a non-filename argument is passed on the
|
||||
command line, the \fI-showme\fR option will \fInot\fR display any
|
||||
additional flags. For example, both "mpic++ --showme" and
|
||||
"mpic++ --showme my_source.c" will show all the wrapper-supplied
|
||||
flags. But "mpic++ --showme -v" will only show the underlying
|
||||
compiler name and "-v".
|
||||
.TP
|
||||
--showme:compile
|
||||
Output the compiler flags that would have been supplied to the
|
||||
C++ compiler.
|
||||
.TP
|
||||
--showme:link
|
||||
Output the linker flags that would have been supplied to the
|
||||
C++ compiler.
|
||||
.TP
|
||||
--showme:command
|
||||
Outputs the underlying C++ compiler command (which may be one
|
||||
or more tokens).
|
||||
.TP
|
||||
--showme:incdirs
|
||||
Outputs a space-delimited (but otherwise undecorated) list of
|
||||
directories that the wrapper compiler would have provided to the
|
||||
underlying C++ compiler to indicate where relevant header files
|
||||
are located.
|
||||
.TP
|
||||
--showme:libdirs
|
||||
Outputs a space-delimited (but otherwise undecorated) list of
|
||||
directories that the wrapper compiler would have provided to the
|
||||
underlying linker to indicate where relevant libraries are located.
|
||||
.TP
|
||||
--showme:libs
|
||||
Outputs a space-delimited (but otherwise undecorated) list of library
|
||||
names that the wrapper compiler would have used to link an
|
||||
application. For example: "mpi open-rte open-pal util".
|
||||
.TP
|
||||
--showme:version
|
||||
Outputs the version number of Open MPI.
|
||||
.TP
|
||||
--showme:help
|
||||
Output a brief usage help message.
|
||||
.PP
|
||||
See the man page for your underlying C++ compiler for other
|
||||
options that can be passed through mpic++.
|
||||
.
|
||||
.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
Conceptually, the role of these commands is quite simple:
|
||||
transparently add relevant compiler and linker flags to the user's
|
||||
command line that are necessary to compile / link Open MPI
|
||||
programs, and then invoke the underlying compiler to actually perform
|
||||
the command.
|
||||
.
|
||||
.PP
|
||||
As such, these commands are frequently referred to as "wrapper"
|
||||
compilers because they do not actually compile or link applications
|
||||
themselves; they only add in command line flags and invoke the
|
||||
back-end compiler.
|
||||
.
|
||||
.
|
||||
.SS Background
|
||||
Open MPI is comprised of three software layers: OPAL (Open Portable
|
||||
Access Layer), ORTE (Open Run-Time Environment), and OMPI (Open MPI).
|
||||
There are wrapper compilers for each layer; each layer's wrapper only
|
||||
links in the libraries relevant for that layer. Specifically, each
|
||||
layer provides the following wrapper compilers:
|
||||
.
|
||||
.TP 4
|
||||
OPAL
|
||||
\fIopalcc\fR and \fIopalc++\fR
|
||||
.
|
||||
.TP
|
||||
ORTE
|
||||
\fIortecc\fR and \fIortec++\fR
|
||||
.
|
||||
.TP
|
||||
OMPI
|
||||
\fImpicc\fR, \fImpic++\fR, \fImpicxx\fR, \fImpiCC\fR (only on systems with
|
||||
case-senstive file systems), and \fImpifort\fR (and its legacy/deprecated
|
||||
names \fImpif77\fR and \fImpif90\fR). Note
|
||||
that \fImpic++\fR, \fImpicxx\fR, and \fImpiCC\fR all invoke the same
|
||||
underlying C++ compiler with the same options. All are provided as
|
||||
compatibility with other MPI implementations.
|
||||
.
|
||||
.
|
||||
.SS Fortran Notes
|
||||
.PP
|
||||
The Fortran wrapper compiler for MPI (\fImpifort\fR, and its
|
||||
legacy/deprecated names \fImpif77\fR and \fImpif90\fR) can compile and
|
||||
link MPI applications that use any/all of the MPI Fortran bindings:
|
||||
.IR mpif.h ,
|
||||
the
|
||||
.I mpi
|
||||
module, and the
|
||||
.I mpi_f08
|
||||
module (assuming Open MPI was installed with support for each of these
|
||||
Fortran bindings). Specifically: it is no longer necessary to use
|
||||
different wrapper compilers for applications that use
|
||||
.I mpif.h
|
||||
vs. applications that use the
|
||||
.I mpi
|
||||
module -- just use
|
||||
.I mpifort
|
||||
for all Fortran MPI applications.
|
||||
.
|
||||
.PP
|
||||
Note, however, that the Fortran compiler may require additional
|
||||
command-line options to enforce a specific Fortran dialect. For
|
||||
example, in some versions of the IBM XLF compiler, if xlf90 is the
|
||||
underlying Fortran compiler,
|
||||
.IR -qfixed
|
||||
may be necessary to compile fixed-format Fortran source files.
|
||||
.
|
||||
.PP
|
||||
Finally, note that
|
||||
.I mpifort
|
||||
will be inoperative and will return an error on use if Fortran support
|
||||
was not built into the MP Ilayer.
|
||||
.
|
||||
.
|
||||
.SS Overview
|
||||
\fImpic++\fR is a convenience wrappers for the underlying
|
||||
C++ compiler. Translation of an Open MPI program requires the
|
||||
linkage of the Open MPI-specific libraries which may not reside in
|
||||
one of the standard search directories of ld(1). It also often
|
||||
requires the inclusion of header files what may also not be found in a
|
||||
standard location.
|
||||
.
|
||||
.PP
|
||||
\fImpic++\fR passes its arguments to the underlying C++
|
||||
compiler along with the -I, -L and -l options required by Open MPI
|
||||
programs.
|
||||
.
|
||||
.PP
|
||||
The Open MPI Team \fIstrongly\fR encourages using the wrapper
|
||||
compilers instead of attempting to link to the Open MPI libraries
|
||||
manually. This allows the specific implementation of Open MPI to
|
||||
change without forcing changes to linker directives in users'
|
||||
Makefiles. Indeed, the specific set of flags and libraries used by
|
||||
the wrapper compilers depends on how Open MPI was configured and
|
||||
built; the values can change between different installations of the
|
||||
same version of Open MPI.
|
||||
.
|
||||
.PP
|
||||
Indeed, since the wrappers are simply thin shells on top of an
|
||||
underlying compiler, there are very, very few compelling reasons
|
||||
\fInot\fR to use \fImpic++\fR. When it is not possible to use the
|
||||
wrappers directly, the \fI-showme:compile\fR and \fI-showme:link\fR
|
||||
options should be used to determine what flags the wrappers would have
|
||||
used. For example:
|
||||
.
|
||||
.PP
|
||||
shell$ cc -c file1.c `mpicc -showme:compile`
|
||||
.
|
||||
.PP
|
||||
shell$ cc -c file2.c `mpicc -showme:compile`
|
||||
.
|
||||
.PP
|
||||
shell$ cc file1.o file2.o `mpicc -showme:link` -o my_mpi_program
|
||||
.
|
||||
.
|
||||
.SH NOTES
|
||||
.PP
|
||||
It is possible to make the wrapper compilers multi-lib aware. That
|
||||
is, the libraries and includes specified may differ based on the
|
||||
compiler flags specified (for example, with the GNU compilers on
|
||||
Linux, a different library path may be used if -m32 is seen versus
|
||||
-m64 being seen). This is not the default behavior in a standard
|
||||
build, but can be activated (for example, in a binary package
|
||||
providing both 32 and 64 bit support). More information can be found
|
||||
at:
|
||||
.PP
|
||||
https://github.com/open-mpi/ompi/wiki/compilerwrapper3264
|
||||
.
|
||||
.
|
||||
.SH FILES
|
||||
.PP
|
||||
The string that the wrapper compilers insert into the command line
|
||||
before invoking the underlying compiler are stored in a text file
|
||||
created by Open MPI and installed to
|
||||
\fI$pkgdata/mpic++-wrapper-data.txt\fR, where \fI$pkgdata\fR
|
||||
is typically \fI$prefix/share/openmpi\fR, and \fI$prefix\fR is the top
|
||||
installation directory of Open MPI.
|
||||
.
|
||||
.PP
|
||||
It is rarely necessary to edit this file, but it can be examined to
|
||||
gain insight into what flags the wrappers are placing on the command
|
||||
line.
|
||||
.
|
||||
.
|
||||
.SH ENVIRONMENT VARIABLES
|
||||
.PP
|
||||
By default, the wrappers use the compilers that were selected when
|
||||
Open MPI was configured. These compilers were either found
|
||||
automatically by Open MPI's "configure" script, or were selected by
|
||||
the user in the CC, CXX, F77, and/or FC environment variables
|
||||
before "configure" was invoked. Additionally, other arguments
|
||||
specific to the compiler may have been selected by configure.
|
||||
.
|
||||
.PP
|
||||
These values can be selectively overridden by either editing the text
|
||||
files containing this configuration information (see the \fBFILES\fR
|
||||
section), or by setting selected environment variables of the
|
||||
form "OMPI_value".
|
||||
.
|
||||
.PP
|
||||
Valid value names are:
|
||||
.
|
||||
.TP
|
||||
CPPFLAGS
|
||||
Flags added when invoking the preprocessor (C or C++)
|
||||
.
|
||||
.TP
|
||||
LDFLAGS
|
||||
Flags added when invoking the linker (C, C++, or Fortran)
|
||||
.
|
||||
.TP
|
||||
LIBS
|
||||
Libraries added when invoking the linker (C, C++, or Fortran)
|
||||
.
|
||||
.TP
|
||||
CC
|
||||
C compiler
|
||||
.
|
||||
.TP
|
||||
CFLAGS
|
||||
C compiler flags
|
||||
.
|
||||
.TP
|
||||
CXX
|
||||
C++ compiler
|
||||
.
|
||||
.TP
|
||||
CXXFLAGS
|
||||
C++ compiler flags
|
||||
.
|
||||
.
|
||||
.TP
|
||||
FC
|
||||
Fortran compiler
|
||||
.
|
||||
.TP
|
||||
FCFLAGS
|
||||
Fortran compiler flags
|
||||
Reference in New Issue
Block a user