Intel® MPI Library
Get help with building, analyzing, optimizing, and scaling high-performance computing (HPC) applications.
2161 Discussions

Error while building NAS benchmarks using Intel MPI

gokussj9
Beginner
520 Views
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
0 Kudos
0 Replies
Reply