Quantcast
Channel: Clusters and HPC Technology
Viewing all articles
Browse latest Browse all 927

Error while building NAS benchmarks using Intel MPI

$
0
0

I am trying to build NAS benchmarks using Intel MPI and below is the makefile that I am using.

 

       #---------------------------------------------------------------------------

    #

    #                SITE- AND/OR PLATFORM-SPECIFIC DEFINITIONS. 

    #

    #---------------------------------------------------------------------------

    

    #---------------------------------------------------------------------------

    # Items in this file will need to be changed for each platform.

    #---------------------------------------------------------------------------

    

    #---------------------------------------------------------------------------

    # Parallel Fortran:

    #

    # For CG, EP, FT, MG, LU, SP and BT, which are in Fortran, the following must 

    # be defined:

    #

    # MPIF77     - Fortran compiler

    # FFLAGS     - Fortran compilation arguments

    # FMPI_INC   - any -I arguments required for compiling MPI/Fortran 

    # FLINK      - Fortran linker

    # FLINKFLAGS - Fortran linker arguments

    # FMPI_LIB   - any -L and -l arguments required for linking MPI/Fortran 

    # 

    # compilations are done with $(MPIF77) $(FMPI_INC) $(FFLAGS) or

    #                            $(MPIF77) $(FFLAGS)

    # linking is done with       $(FLINK) $(FMPI_LIB) $(FLINKFLAGS)

    #---------------------------------------------------------------------------

    

    #---------------------------------------------------------------------------

    # This is the fortran compiler used for MPI programs

    #---------------------------------------------------------------------------

    MPIF77 = gfortran

    # This links MPI fortran programs; usually the same as ${MPIF77}

    FLINK = $(MPIF77)

    

    #---------------------------------------------------------------------------

    # These macros are passed to the linker to help link with MPI correctly

    #---------------------------------------------------------------------------

    FMPI_LIB  =  -L/share/apps/intel/impi/5.0.2.044/intel64/lib -lmpi

   

    

    #---------------------------------------------------------------------------

    # These macros are passed to the compiler to help find 'mpif.h'

    #---------------------------------------------------------------------------

    FMPI_INC = -I/share/apps/intel/impi/5.0.2.044/intel64/include

    

    #---------------------------------------------------------------------------

    # Global *compile time* flags for Fortran programs

    #---------------------------------------------------------------------------

    FFLAGS = -O

    

    #---------------------------------------------------------------------------

    # Global *link time* flags. Flags for increasing maximum executable 

    # size usually go here. 

    #---------------------------------------------------------------------------

    FLINKFLAGS = -O

    

    

    #---------------------------------------------------------------------------

    # Parallel C:

    #

    # For IS, which is in C, the following must be defined:

    #

    # MPICC      - C compiler 

    # CFLAGS     - C compilation arguments

    # CMPI_INC   - any -I arguments required for compiling MPI/C 

    # CLINK      - C linker

    # CLINKFLAGS - C linker flags

    # CMPI_LIB   - any -L and -l arguments required for linking MPI/C 

    #

    # compilations are done with $(MPICC) $(CMPI_INC) $(CFLAGS) or

    #                            $(MPICC) $(CFLAGS)

    # linking is done with       $(CLINK) $(CMPI_LIB) $(CLINKFLAGS)

    #---------------------------------------------------------------------------

    

    #---------------------------------------------------------------------------

    # This is the C compiler used for MPI programs

    #---------------------------------------------------------------------------

    MPICC = cc

    # This links MPI C programs; usually the same as ${MPICC}

    CLINK = $(MPICC)

    

    #---------------------------------------------------------------------------

    # These macros are passed to the linker to help link with MPI correctly

    #---------------------------------------------------------------------------

    CMPI_LIB  = -L/usr/local/lib -lmpi

    

    #---------------------------------------------------------------------------

    # These macros are passed to the compiler to help find 'mpi.h'

    #---------------------------------------------------------------------------

    CMPI_INC = -I/usr/local/include

    

    #---------------------------------------------------------------------------

    # Global *compile time* flags for C programs

    #---------------------------------------------------------------------------

    CFLAGS = -O

    

    #---------------------------------------------------------------------------

    # Global *link time* flags. Flags for increasing maximum executable 

    # size usually go here. 

    #---------------------------------------------------------------------------

    CLINKFLAGS = -O

    

    

    #---------------------------------------------------------------------------

    # MPI dummy library:

    #

    # Uncomment if you want to use the MPI dummy library supplied by NAS instead 

    # of the true message-passing library. The include file redefines several of

    # the above macros. It also invokes make in subdirectory MPI_dummy. Make 

    # sure that no spaces or tabs precede include.

    #---------------------------------------------------------------------------

    # include ../config/make.dummy

    

    

    #---------------------------------------------------------------------------

    # Utilities C:

    #

    # This is the C compiler used to compile C utilities.  Flags required by 

    # this compiler go here also; typically there are few flags required; hence 

    # there are no separate macros provided for such flags.

    #---------------------------------------------------------------------------

    CC = cc -g

    

    

    #---------------------------------------------------------------------------

    # Destination of executables, relative to subdirs of the main directory. . 

    #---------------------------------------------------------------------------

    BINDIR = ../bin

    

    

    #---------------------------------------------------------------------------

    # Some machines (e.g. Crays) have 128-bit DOUBLE PRECISION numbers, which

    # is twice the precision required for the NPB suite. A compiler flag 

    # (e.g. -dp) can usually be used to change DOUBLE PRECISION variables to

    # 64 bits, but the MPI library may continue to send 128 bits. Short of

    # recompiling MPI, the solution is to use MPI_REAL to send these 64-bit

    # numbers, and MPI_COMPLEX to send their complex counterparts. Uncomment

    # the following line to enable this substitution. 

    # 

    # NOTE: IF THE I/O BENCHMARK IS BEING BUILT, WE USE CONVERTFLAG TO

    #       SPECIFIY THE FORTRAN RECORD LENGTH UNIT. IT IS A SYSTEM-SPECIFIC

    #       VALUE (USUALLY 1 OR 4). UNCOMMENT THE SECOND LINE AND SUBSTITUTE

    #       THE CORRECT VALUE FOR "length".

    #       IF BOTH 128-BIT DOUBLE PRECISION NUMBERS AND I/O ARE TO BE ENABLED,

    #       UNCOMMENT THE THIRD LINE AND SUBSTITUTE THE CORRECT VALUE FOR

    #       "length"

    #---------------------------------------------------------------------------

    # CONVERTFLAG = -DCONVERTDOUBLE

    # CONVERTFLAG = -DFORTRAN_REC_SIZE=length

    # CONVERTFLAG = -DCONVERTDOUBLE -DFORTRAN_REC_SIZE=length

    

    

    #---------------------------------------------------------------------------

    # The variable RAND controls which random number generator 

    # is used. It is described in detail in README.install. 

    # Use "randi8" unless there is a reason to use another one. 

    # Other allowed values are "randi8_safe", "randdp" and "randdpvec"

    #---------------------------------------------------------------------------

    RAND   = randi8

    # The following is highly reliable but may be slow:

    # RAND   = randdp

 

 

 

 

 

When I try to build let's say EP benchmark   ***make NPROCS=8 EP CLASS=C***, I get an error like

 

     =========================================

       =      NAS Parallel Benchmarks 3.3      =

       =      MPI/F77/C                        =

       =========================================

    

    cd EP; make NPROCS=8 CLASS=C

    make[1]: Entering directory `/home/vaibhavs/NPB3.3/NPB3.3-MPI/EP'

    make[2]: Entering directory `/home/vaibhavs/NPB3.3/NPB3.3-MPI/sys'

    cc -g  -o setparams setparams.c

    make[2]: Leaving directory `/home/vaibhavs/NPB3.3/NPB3.3-MPI/sys'

    ../sys/setparams ep 8 C

    make.def modified. Rebuilding npbparams.h just in case

    rm -f npbparams.h

    ../sys/setparams ep 8 C

    gfortran -c -I/share/apps/intel/impi/5.0.2.044/intel64/include -O ep.f

    gfortran -O -o ../bin/ep.C.8 ep.o ../common/print_results.o ../common/randi8.o ../common/timers.o -L/share/app                                                                               s/intel/impi/5.0.2.044/intel64/lib -lmpi

    ep.o: In function `MAIN__':

    ep.f:(.text+0x31): undefined reference to `mpi_init_'

    ep.f:(.text+0x4b): undefined reference to `mpi_comm_rank_'

    ep.f:(.text+0x65): undefined reference to `mpi_comm_size_'

    ep.f:(.text+0x347): undefined reference to `mpi_abort_'

    ep.f:(.text+0x3df): undefined reference to `mpi_barrier_'

    ep.f:(.text+0x803): undefined reference to `mpi_allreduce_'

    ep.f:(.text+0x842): undefined reference to `mpi_allreduce_'

    ep.f:(.text+0x879): undefined reference to `mpi_allreduce_'

    ep.f:(.text+0x935): undefined reference to `mpi_allreduce_'

    ep.f:(.text+0xc70): undefined reference to `mpi_finalize_'

    ../common/timers.o: In function `timer_stop_':

    timers.f:(.text+0x27): undefined reference to `mpi_wtime_'

    ../common/timers.o: In function `timer_start_':

    timers.f:(.text+0x57): undefined reference to `mpi_wtime_'

    collect2: ld returned 1 exit status

    make[1]: *** [../bin/ep.C.8] Error 1

    make[1]: Leaving directory `/home/vaibhavs/NPB3.3/NPB3.3-MPI/EP'

    make: *** [ep] Error 2

 

 

Can anybody please help me in resolving this issue?

 

Thanks


Viewing all articles
Browse latest Browse all 927

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>