<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><div dir="ltr"><div>I am trying to build NAS benchmarks using Intel MPI and below is the makefile that I am using.</div><div><br></div><div>      <b> #---------------------------------------------------------------------------</b></div><div><b>    #</b></div><div><b>    #                SITE- AND/OR PLATFORM-SPECIFIC DEFINITIONS. </b></div><div><b>    #</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # Items in this file will need to be changed for each platform.</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # Parallel Fortran:</b></div><div><b>    #</b></div><div><b>    # For CG, EP, FT, MG, LU, SP and BT, which are in Fortran, the following must </b></div><div><b>    # be defined:</b></div><div><b>    #</b></div><div><b>    # MPIF77     - Fortran compiler</b></div><div><b>    # FFLAGS     - Fortran compilation arguments</b></div><div><b>    # FMPI_INC   - any -I arguments required for compiling MPI/Fortran </b></div><div><b>    # FLINK      - Fortran linker</b></div><div><b>    # FLINKFLAGS - Fortran linker arguments</b></div><div><b>    # FMPI_LIB   - any -L and -l arguments required for linking MPI/Fortran </b></div><div><b>    # </b></div><div><b>    # compilations are done with $(MPIF77) $(FMPI_INC) $(FFLAGS) or</b></div><div><b>    #                            $(MPIF77) $(FFLAGS)</b></div><div><b>    # linking is done with       $(FLINK) $(FMPI_LIB) $(FLINKFLAGS)</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # This is the fortran compiler used for MPI programs</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    MPIF77 = gfortran</b></div><div><b>    # This links MPI fortran programs; usually the same as ${MPIF77}</b></div><div><b>    FLINK<span class="" style="white-space:pre">  </span>= $(MPIF77)</b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # These macros are passed to the linker to help link with MPI correctly</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    FMPI_LIB  =  -L/share/apps/intel/impi/<a href="http://5.0.2.044/intel64/lib">5.0.2.044/intel64/lib</a> -lmpi</b></div><div><b>   </b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # These macros are passed to the compiler to help find 'mpif.h'</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    FMPI_INC = -I/share/apps/intel/impi/<a href="http://5.0.2.044/intel64/include">5.0.2.044/intel64/include</a></b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # Global *compile time* flags for Fortran programs</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    FFLAGS<span class="" style="white-space:pre">     </span>= -O</b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # Global *link time* flags. Flags for increasing maximum executable </b></div><div><b>    # size usually go here. </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    FLINKFLAGS = -O</b></div><div><b>    </b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # Parallel C:</b></div><div><b>    #</b></div><div><b>    # For IS, which is in C, the following must be defined:</b></div><div><b>    #</b></div><div><b>    # MPICC      - C compiler </b></div><div><b>    # CFLAGS     - C compilation arguments</b></div><div><b>    # CMPI_INC   - any -I arguments required for compiling MPI/C </b></div><div><b>    # CLINK      - C linker</b></div><div><b>    # CLINKFLAGS - C linker flags</b></div><div><b>    # CMPI_LIB   - any -L and -l arguments required for linking MPI/C </b></div><div><b>    #</b></div><div><b>    # compilations are done with $(MPICC) $(CMPI_INC) $(CFLAGS) or</b></div><div><b>    #                            $(MPICC) $(CFLAGS)</b></div><div><b>    # linking is done with       $(CLINK) $(CMPI_LIB) $(CLINKFLAGS)</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # This is the C compiler used for MPI programs</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    MPICC = cc</b></div><div><b>    # This links MPI C programs; usually the same as ${MPICC}</b></div><div><b>    CLINK<span class="" style="white-space:pre">   </span>= $(MPICC)</b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # These macros are passed to the linker to help link with MPI correctly</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    CMPI_LIB  = -L/usr/local/lib -lmpi</b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # These macros are passed to the compiler to help find 'mpi.h'</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    CMPI_INC = -I/usr/local/include</b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # Global *compile time* flags for C programs</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    CFLAGS<span class="" style="white-space:pre">    </span>= -O</b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # Global *link time* flags. Flags for increasing maximum executable </b></div><div><b>    # size usually go here. </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    CLINKFLAGS = -O</b></div><div><b>    </b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # MPI dummy library:</b></div><div><b>    #</b></div><div><b>    # Uncomment if you want to use the MPI dummy library supplied by NAS instead </b></div><div><b>    # of the true message-passing library. The include file redefines several of</b></div><div><b>    # the above macros. It also invokes make in subdirectory MPI_dummy. Make </b></div><div><b>    # sure that no spaces or tabs precede include.</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # include ../config/make.dummy</b></div><div><b>    </b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # Utilities C:</b></div><div><b>    #</b></div><div><b>    # This is the C compiler used to compile C utilities.  Flags required by </b></div><div><b>    # this compiler go here also; typically there are few flags required; hence </b></div><div><b>    # there are no separate macros provided for such flags.</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    CC<span class="" style="white-space:pre">       </span>= cc -g</b></div><div><b>    </b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # Destination of executables, relative to subdirs of the main directory. . </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    BINDIR<span class="" style="white-space:pre">   </span>= ../bin</b></div><div><b>    </b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # Some machines (e.g. Crays) have 128-bit DOUBLE PRECISION numbers, which</b></div><div><b>    # is twice the precision required for the NPB suite. A compiler flag </b></div><div><b>    # (e.g. -dp) can usually be used to change DOUBLE PRECISION variables to</b></div><div><b>    # 64 bits, but the MPI library may continue to send 128 bits. Short of</b></div><div><b>    # recompiling MPI, the solution is to use MPI_REAL to send these 64-bit</b></div><div><b>    # numbers, and MPI_COMPLEX to send their complex counterparts. Uncomment</b></div><div><b>    # the following line to enable this substitution. </b></div><div><b>    # </b></div><div><b>    # NOTE: IF THE I/O BENCHMARK IS BEING BUILT, WE USE CONVERTFLAG TO</b></div><div><b>    #       SPECIFIY THE FORTRAN RECORD LENGTH UNIT. IT IS A SYSTEM-SPECIFIC</b></div><div><b>    #       VALUE (USUALLY 1 OR 4). UNCOMMENT THE SECOND LINE AND SUBSTITUTE</b></div><div><b>    #       THE CORRECT VALUE FOR "length".</b></div><div><b>    #       IF BOTH 128-BIT DOUBLE PRECISION NUMBERS AND I/O ARE TO BE ENABLED,</b></div><div><b>    #       UNCOMMENT THE THIRD LINE AND SUBSTITUTE THE CORRECT VALUE FOR</b></div><div><b>    #       "length"</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # CONVERTFLAG<span class="" style="white-space:pre">      </span>= -DCONVERTDOUBLE</b></div><div><b>    # CONVERTFLAG<span class="" style="white-space:pre">    </span>= -DFORTRAN_REC_SIZE=length</b></div><div><b>    # CONVERTFLAG<span class="" style="white-space:pre">  </span>= -DCONVERTDOUBLE -DFORTRAN_REC_SIZE=length</b></div><div><b>    </b></div><div><b>    </b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    # The variable RAND controls which random number generator </b></div><div><b>    # is used. It is described in detail in README.install. </b></div><div><b>    # Use "randi8" unless there is a reason to use another one. </b></div><div><b>    # Other allowed values are "randi8_safe", "randdp" and "randdpvec"</b></div><div><b>    #---------------------------------------------------------------------------</b></div><div><b>    RAND   = randi8</b></div><div><b>    # The following is highly reliable but may be slow:</b></div><div><b>    # RAND   = randdp</b></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>When I try to build let's say EP benchmark   ***make NPROCS=8 EP CLASS=C***, I get an error like</div><div><br></div><div>    <b> =========================================</b></div><div><b>       =      NAS Parallel Benchmarks 3.3      =</b></div><div><b>       =      MPI/F77/C                        =</b></div><div><b>       =========================================</b></div><div><b>    </b></div><div><b>    cd EP; make NPROCS=8 CLASS=C</b></div><div><b>    make[1]: Entering directory `/home/vaibhavs/NPB3.3/NPB3.3-MPI/EP'</b></div><div><b>    make[2]: Entering directory `/home/vaibhavs/NPB3.3/NPB3.3-MPI/sys'</b></div><div><b>    cc -g  -o setparams setparams.c</b></div><div><b>    make[2]: Leaving directory `/home/vaibhavs/NPB3.3/NPB3.3-MPI/sys'</b></div><div><b>    ../sys/setparams ep 8 C</b></div><div><b>    make.def modified. Rebuilding npbparams.h just in case</b></div><div><b>    rm -f npbparams.h</b></div><div><b>    ../sys/setparams ep 8 C</b></div><div><b>    gfortran -c -I/share/apps/intel/impi/<a href="http://5.0.2.044/intel64/include">5.0.2.044/intel64/include</a> -O ep.f</b></div><div><b>    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/<a href="http://5.0.2.044/intel64/lib">5.0.2.044/intel64/lib</a> -lmpi</b></div><div><b>    ep.o: In function `MAIN__':</b></div><div><b>    ep.f:(.text+0x31): undefined reference to `mpi_init_'</b></div><div><b>    ep.f:(.text+0x4b): undefined reference to `mpi_comm_rank_'</b></div><div><b>    ep.f:(.text+0x65): undefined reference to `mpi_comm_size_'</b></div><div><b>    ep.f:(.text+0x347): undefined reference to `mpi_abort_'</b></div><div><b>    ep.f:(.text+0x3df): undefined reference to `mpi_barrier_'</b></div><div><b>    ep.f:(.text+0x803): undefined reference to `mpi_allreduce_'</b></div><div><b>    ep.f:(.text+0x842): undefined reference to `mpi_allreduce_'</b></div><div><b>    ep.f:(.text+0x879): undefined reference to `mpi_allreduce_'</b></div><div><b>    ep.f:(.text+0x935): undefined reference to `mpi_allreduce_'</b></div><div><b>    ep.f:(.text+0xc70): undefined reference to `mpi_finalize_'</b></div><div><b>    ../common/timers.o: In function `timer_stop_':</b></div><div><b>    timers.f:(.text+0x27): undefined reference to `mpi_wtime_'</b></div><div><b>    ../common/timers.o: In function `timer_start_':</b></div><div><b>    timers.f:(.text+0x57): undefined reference to `mpi_wtime_'</b></div><div><b>    collect2: ld returned 1 exit status</b></div><div><b>    make[1]: *** [../bin/ep.C.8] Error 1</b></div><div><b>    make[1]: Leaving directory `/home/vaibhavs/NPB3.3/NPB3.3-MPI/EP'</b></div><div><b>    make: *** [ep] Error 2</b></div><div><br></div><div><br></div><div>Can anybody please help me in resolving this issue?</div><div><br></div><div>Thanks</div></div>