This is a README file for the Intel(R) MPI Library binding kit. This
kit allows you to add support for certain third-party compilers to
the Intel(R) MPI Library for Linux* OS.

Note: the Intel(R) MPI Library supports Intel(R) compilers as well as
GNU* compilers up to version 4.0, out of the box. See the Intel(R) MPI Library 
Release Notes for more details.



I. Summary
 
The Intel(R) MPI Library supports PGI* C, PGI* Fortran 77, Absoft*
Fortran 77 compilers out of the box, with the following caveats:

- Your PGI* compiled source files must not transfer long double entities
- Your Absoft* based build procedure must use the -g77, -B108 compiler options
- You must take care of installing and selecting the right compilers
  yourself 
- You must make sure that the respective compiler runtime is installed on
  all nodes

You need to build extra Intel(R) MPI Library binding libraries if you need
support for PGI* C++, PGI* Fortran 95, Absoft* Fortran 95 and GNU* Fortran 95
higher than version 5.1 bindings.

This binding kit provides all the necessary source files, convenience
scripts, and instructions you need.



II Details


II.1. Absoft* Compilers

Note:
Absoft* Fortran is case sensitive by default. The use of the -g77 option
converts all names to lower case. Take this into account while compiling
your programs.
In some cases you also need to specify -B108 option.
This option directs the compiler to append an underscore to SUBROUTINE and 
FUNCTION definitions and references in a manner consistent with the g77 
FORTRAN* compiler. It adds two underscores to symbol names that already 
contain an underscore. -B108 option can be used to avoid name conflicts with 
the system libraries or other FORTRAN environments. 


II.1.1. Fortran 77 Binding

To use Intel(R) MPI Library Fortran 77 binding with the Absoft*
compiler, do the following steps:

1. Make sure that the Absoft* Fortran 77 compiler (f77) is in your PATH.

2. Go to the directory f77

3. Run the command

   # make MPI_INST=<MPI_path> F77=<f77_compiler> NAME=<name> \
     [ARCH=<arch>]

   with

   <MPI_path>        - installation directory of the Intel(R) MPI Library
   <f77_compiler>    - compiler to be used
   <name>            - base name for the compiler script
   <arch>            - set `intel64` or `mic` architecture, `intel64` is used by
                       default

4. Copy the resulting <arch> directory to the Intel(R) MPI Library installation
   directory.


II.1.2. Fortran 90 and 95 binding

To create the Intel(R) MPI Library Fortran 90 or 95 binding library
using Absoft* Fortran 90 or Fortran 95 compiler, do the following steps:

1. Make sure that the Absoft* Fortran 90 or 95 compiler (f90 or f95,
   respectively) is in your PATH.

2. Go to the directory f90

3. Run the command

   # make MPI_INST=<MPI path> F90=<f90 compiler> NAME=<name> \
     [ILP64=<ILP64 options>] [ARCH=<arch>] [MIC=<mic option>]

   with

   <MPI path>        - installation directory of the Intel(R) MPI Library
   <f90 compiler>    - compiler to be used
   <name>            - base name for the libraries and compiler script
   <ILP64 options>   - compiler option to specify 64 bits size for integer  and
                       logical variables
   <arch>            - set `intel64` or `mic` architecture, `intel64` is used by
                       default
   <mic option>      - compiler option to generate code for Intel(R) MIC 
                       Architecture. Availalbe only when ARCH=mic is set, `-mmic`
                       is used by default in such case

4. Copy the resulting <arch> directory to the Intel(R) MPI Library installation
   directory.

   NOTE: Don't remove existing libraries libmpifort.a, libmpifort.so.


II.2. PGI* Compilers
 
Note:
PGI* compilers have sizeof(long double) = 8. This value is different
from the one used by the Intel(R) Professional Edition Compilers and 
GNU* compilers. Do not use the MPI data type MPI_LONG_DOUBLE in 
PGI* compiled programs with the Intel(R) MPI Library.


II.2.1. C Binding

To use the Intel(R) MPI Library C binding with the PGI* compiler,
do the following steps:

1. Make sure that the PGI* C compiler (pgcc) is in your PATH.

2. Go to the directory c

3. Run the command

   # make MPI_INST=<MPI_path> CC=<C_compiler> NAME=<name> \
     [ARCH=<arch>]

   with

   <MPI_path>        - installation directory of the Intel(R) MPI Library
   <C_compiler>      - compiler to be used
   <name>            - base name for the compiler script
   <arch>            - set `intel64` or `mic` architecture, `intel64` is used by
                       default

4. Copy the resulting <arch> directory to the Intel(R) MPI Library installation
   directory.


II.2.2. C++ Binding

To create the Intel(R) MPI Library C++ binding library using the
PGI* C++ compiler, do the following steps:

1. Make sure that the PGI* C++ compiler (pgCC) is in your PATH.

2. Go to the directory cxx

3. Run the command

   # make MPI_INST=<MPI_path> CXX=<C++_compiler> NAME=<name> \
     [ARCH=<arch>] [MIC=<mic option>]

   with

   <MPI_path>        - installation directory of the Intel(R) MPI Library
   <C++_compiler>    - compiler to be used
   <name>            - base name for the libraries and compiler script
   <arch>            - set `intel64` or `mic` architecture, `intel64` is used by
                       default
   <mic option>      - compiler option to generate code for Intel(R) MIC 
                       Architecture. Availalbe only when ARCH=mic is set, `-mmic`
                       is used by default in such case

4. Copy the resulting <arch> directory to the Intel(R) MPI Library installation
   directory.


II.2.3. Fortran 77 Binding

To use the Intel(R) MPI Library Fortran 77 binding with the PGI*
compiler, do the following steps:

1. Make sure that the PGI* Fortran 77 compiler (pgf77) is in your PATH.

2. Go to the directory f77

3. Run the command

   # make MPI_INST=<MPI_path> F77=<f77_compiler> NAME=<name> \
     [ARCH=<arch>]

   with

   <MPI_path>        - installation directory of the Intel(R) MPI Library
   <f77_compiler>    - compiler to be used
   <name>            - base name for the compiler script
   <arch>            - set `intel64` or `mic` architecture, `intel64` is used by
                       default

4. Copy the resulting <arch> directory to the Intel(R) MPI Library installation
   directory.


II.2.4. Fortran 90 Binding

To create the Intel(R) MPI Library Fortran 95 binding library using
the PGI* Fortran 90 compiler, do the following steps:

1. Make sure that the PGI* Fortran 90 compiler (pgf90) is in your PATH

2. Go to the directory f90

3. Run the command

   # make MPI_INST=<MPI_path> F90=<f90_compiler> NAME=<name> \
     [ILP64=<ILP64 options>] [ARCH=<arch>] [MIC=<mic option>]

   with

   <MPI_path>        - installation directory of the Intel(R) MPI Library
   <f90_compiler>    - compiler to be used
   <name>            - base name for the libraries and compiler script
   <ILP64 options>   - compiler option to specify 64 bits size for integer  and
                       logical variables
   <arch>            - set `intel64` or `mic` architecture, `intel64` is used by
                       default
   <mic option>      - compiler option to generate code for Intel(R) MIC 
                       Architecture. Availalbe only when ARCH=mic is set, `-mmic`
                       is used by default in such case

4. Copy the resulting <arch> directory to the Intel(R) MPI Library installation
   directory.

   NOTE: Don't remove existing libraries libmpifort.a, libmpifort.so.


II.3. GNU* Compilers

Note:
Intel(R) MPI Library supports GNU* compilers up to version 4.0, out of the box.


II.3.1 Fortran 90 and 95 Binding

To create the Intel(R) MPI Library Fortran 90 or 95 binding library
using GNU* Fortran 95 higher than version 5.1, do the following steps:

1. Make sure that the GNU* Fortran compiler is in your PATH

2. Go to the directory f90

3. Run the command

   # make MPI_INST=<MPI path> F90=<f90 compiler> NAME=<name> \
     [ILP64=<ILP64 options>] [ARCH=<arch>] [MIC=<mic option>]

   with

   <MPI path>        - installation directory of the Intel(R) MPI Library
   <f90 compiler>    - compiler to be used
   <name>            - base name for the libraries and compiler script
   <ILP64 options>   - compiler option to specify 64 bits size for integer  and
                       logical variables
   <arch>            - set `intel64` or `mic` architecture, `intel64` is used by
                       default
   <mic option>      - compiler option to generate code for Intel(R) MIC 
                       Architecture. Availalbe only when ARCH=mic is set, `-mmic`
                       is used by default in such case

4. Copy the resulting <arch> directory to the Intel(R) MPI Library installation
   directory.

   NOTE: Don't remove existing libraries libmpifort.a, libmpifort.so.

--------------------------------------------------------------------------------
The Intel(R) MPI Library binding kit is based on MPICH2* from Argonne National
Laboratory* (ANL).
--------------------------------------------------------------------------------

Disclaimer and Legal Information
--------------------------------
INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL(R) PRODUCTS.   
NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL 
PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS 
AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, 
AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE
OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A 
PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT 
OR OTHER INTELLECTUAL PROPERTY RIGHT. 
UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT DESIGNED
NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL PRODUCT COULD
CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR.
Intel may make changes to specifications and product descriptions at any time, 
without notice. Designers must not rely on the absence or characteristics of any 
features or instructions marked "reserved" or "undefined." Intel reserves these 
for future definition and shall have no responsibility whatsoever for conflicts 
or incompatibilities arising from future changes to them. The information here 
is subject to change without notice. Do not finalize a design with this
information. 
The products described in this document may contain design defects or errors
known as errata which may cause the product to deviate from published
specifications. Current characterized errata are available on request. 
Contact your local Intel sales office or your distributor to obtain the latest 
specifications and before placing your product order.
Copies of documents which have an order number and are referenced in this 
document, or other Intel literature, may be obtained by calling 1-800-548-4725,
or by visiting Intel's Web Site. 

Intel processor numbers are not a measure of performance. Processor numbers 
differentiate features within each processor family, not across different 
processor families. See http://www.intel.com/products/processor_number for
details.

BunnyPeople, Celeron, Celeron Inside, Centrino, Centrino Atom,
Centrino Atom Inside, Centrino Inside, Centrino logo, Core Inside, FlashFile,
i960, InstantIP, Intel, Intel logo, Intel386, Intel486, IntelDX2, IntelDX4,
IntelSX2, Intel Atom, Intel Atom Inside, Intel Core, Intel Inside,
Intel Inside logo, Intel. Leap ahead.,Intel. Leap ahead. logo, Intel NetBurst,
Intel NetMerge, Intel NetStructure, Intel SingleDriver, Intel SpeedStep,
Intel StrataFlash, Intel Viiv, Intel vPro, Intel XScale, Itanium,
Itanium Inside, MCS, MMX, Oplus, OverDrive, PDCharm, Pentium, Pentium Inside,
skoool, Sound Mark, The Journey Inside, Viiv Inside, vPro Inside, VTune, Xeon,
and Xeon Inside are trademarks of Intel Corporation in the U.S. and other
countries.

* Other names and brands may be claimed as the property of others.

Copyright (C) Intel Corporation 2006-2015.  All Rights Reserved.
