- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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=Cmake[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.cmake[2]: Leaving directory `/home/vaibhavs/NPB3.3/NPB3.3-MPI/sys' ../sys/setparams ep 8 Cmake.def modified. Rebuilding npbparams.h just in caserm -f npbparams.h../sys/setparams ep 8 Cgfortran -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 statusmake[1]: *** [../bin/ep.C.8] Error 1make[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
Link Copied
0 Replies

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page