Showing results for 
Search instead for 
Did you mean: 

Installing wrappers for using Intel MPI with the PGI compilers

OS:   			Linux RH 6.6
Intel MPI version:	impi/
PGI:			pgi/15.1

I am trying to follow the instructions provided in the binding kit tarball from the following file:


Installing bindings for F77, C, and C++ was straightforward because there are no name conflicts.

However I see a problem with installing F90 bindings, particularly with the module files.  Following the instructions in the document mentioned above creates the following .mod files:

[root@sfe01 f90]# ll *.mod
-rw-r--r-- 1 root root 128646 Oct 15 19:25 mpi_base.mod
-rw-r--r-- 1 root root  85397 Oct 15 19:25 mpi_constants.mod
-rw-r--r-- 1 root root    323 Oct 15 19:25 mpi.mod
-rw-r--r-- 1 root root  15159 Oct 15 19:25 mpi_sizeofs.mod
[root@sfe01 f90]# 

And according to the instructions we are supposed to move or copy these files to the include directory, but that already has the following files which presumably intended for use with the Intel compiler:

[root@sfe01 include64]# ll /apps/intel/impi/*.mod
-rw-r--r-- 1 root root 118039 Jan 30  2015 /apps/intel/impi/
-rw-r--r-- 1 root root  52058 Jan 30  2015 /apps/intel/impi/
-rw-r--r-- 1 root root  13621 Jan 30  2015 /apps/intel/impi/
-rw-r--r-- 1 root root   8991 Jan 30  2015 /apps/intel/impi/
[root@sfe01 include64]#

Here's the section from the README file for the F90 bindings:

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> [makedriver64]


   <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
   makedriver64      - optional target to build the 64-bit compiler script
   makemod64         - optional target to build the 64-bit module files

4. Copy the resulting module files to the Intel(R) MPI Library include or
   include64 directory.

5. Copy the resulting script mpi${NAME} to the Intel(R) MPI Library bin or
   bin64 directory.

Was this an oversight are am I missing some step?



0 Kudos
3 Replies

I don't expect that this is intended.  Let me check with our developers and I'll update you.


Our developers have implemented a fix and it should be available in our next release.



I try to create the wrappers for PGI 16.9 compilers for Intel MPI 16.3.210

I'm working on a node running CentOS 7.2

uname -a
Linux jaws.cluster 3.10.0-327.36.2.el7.x86_64 #1 SMP Mon Oct 10 23:08:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

I check the version of the softwares I use :

pgc++ --version
pgc++ 16.9-0 64-bit target on x86-64 Linux -tp haswell 
The Portland Group - PGI Compilers and Tools
Copyright (c) 2016, NVIDIA CORPORATION.  All rights reserved.

mpirun --version
Intel(R) MPI Library for Linux* OS, Version 5.1.3 Build 20160120 (build id: 14053)
Copyright (C) 2003-2016, Intel Corporation. All rights reserved.


I fiollow the instructions in the file named README-intel-mpi-binding-kit.txt

cd cxx
make MPI_INST=/trinity/shared/apps/cv-standard/intel/2016.3.210/compilers_and_libraries_2016.3.210/linux/mpi CC=pgc++  NAME=pgc++ ARCH=intel64
mkdir -p intel64/lib && ar cr intel64/lib/libmpipgc++.a initcxx.o
gcc  -shared -Xlinker -x -Xlinker -o intel64/lib/ initcxx.o
(cd intel64/lib && if [ ! -f ]; then ln -s; fi)
(cd intel64/lib && if [ ! -f ]; then ln -s; fi)
mkdir -p intel64/bin
sed -e 's/g++//trinity/shared/apps/cv-standard/pgi/linux86-64/16.9/bin/pgc++/' -e 's/Docompchk\=yes/Docompchk\=no/' -e 's/mpigc$gver/mpipgc++/g' \
-e 's/rpath_opt\=.*/rpath_opt\=/' /trinity/shared/apps/cv-standard/intel/2016.3.210/compilers_and_libraries_2016.3.210/linux/mpi/intel64/bin/mpigxx > intel64/bin/mpipgc++
sed: -e expression #1, char 8: unknown option to `s'
make: *** [makedriver] Error 1

# cd ../f77
# make MPI_INST=/trinity/shared/apps/cv-standard/intel/2016.3.210/compilers_and_libraries_2016.3.210/linux/mpi CC=pgf77  NAME=pgf77 ARCH=intel64
mkdir -p intel64/bin
sed -e 's/g77//trinity/shared/apps/cv-standard/pgi/linux86-64/16.9/bin/pgf77/' -e 's/Docompchk\=yes/Docompchk\=no/' \
-e 's/rpath_opt\=.*/rpath_opt\=/' /trinity/shared/apps/cv-standard/intel/2016.3.210/compilers_and_libraries_2016.3.210/linux/mpi/intel64/bin/mpif77 > intel64/bin/mpipgf77
sed: -e expression #1, char 8: unknown option to `s'
make: *** [makedriver] Error 1

# cd ../f90
# make MPI_INST=/trinity/shared/apps/cv-standard/intel/2016.3.210/compilers_and_libraries_2016.3.210/linux/mpi CC=pgf90  NAME=pgf90 ARCH=intel64
/trinity/shared/apps/cv-standard/pgi/linux86-64/16.9/bin/pgf90  -c -fPIC -I/trinity/shared/apps/cv-standard/intel/2016.3.210/compilers_and_libraries_2016.3.210/linux/mpi/intel64/include mpi_constants.f90
/trinity/shared/apps/cv-standard/pgi/linux86-64/16.9/bin/pgf90  -c -fPIC -I/trinity/shared/apps/cv-standard/intel/2016.3.210/compilers_and_libraries_2016.3.210/linux/mpi/intel64/include mpi_sizeofs.f90
/trinity/shared/apps/cv-standard/pgi/linux86-64/16.9/bin/pgf90  -c -fPIC -I/trinity/shared/apps/cv-standard/intel/2016.3.210/compilers_and_libraries_2016.3.210/linux/mpi/intel64/include mpi_base.f90
/trinity/shared/apps/cv-standard/pgi/linux86-64/16.9/bin/pgf90  -c -fPIC -I/trinity/shared/apps/cv-standard/intel/2016.3.210/compilers_and_libraries_2016.3.210/linux/mpi/intel64/include mpi.f90
mkdir -p intel64/lib && ar cr intel64/lib/libmpipgf90.a mpi.o mpi_base.o mpi_sizeofs.o mpi_constants.o
mkdir -p intel64/include/pgf90 && mv *.mod intel64/include/pgf90
/trinity/shared/apps/cv-standard/pgi/linux86-64/16.9/bin/pgf90  -shared -Xlinker -x -Xlinker -o intel64/lib/ mpi.o mpi_base.o mpi_sizeofs.o mpi_constants.o -lrt -ldl
pgf90-Error-Unknown switch: -Xlinker
pgf90-Error-Unknown switch: -x
pgf90-Error-Unknown switch: -Xlinker
make: *** [makemod] Error 1

Could you please tell me what's wrong with this ?

Thank you in advance