I have wrote en an “hybrid code” (MPI/openmp) which compile, built and executed well with Gfortran and Ifort.
I meet some difficulties with pgfortran, and I hope that you can help me.
The first one is when I want to compile code’s source with only openmp, everything seem to be ok during compiling phase, but during the link phase I met this message :
pgf90 -I/uv100/usr/local/fftw-3.3.3/include -r8 -O3 -fast -mp -Mpreprocess -Dkey_fftw_openmp -Dkey_no_adios -c GP_3D_stat_communication.f90
PGF90-W-0006-Input file empty (GP_3D_stat_communication.f90)
PGF90/x86-64 Linux 13.10-0: compilation completed with warnings
pgf90 -o GP2DS_OPENMP -mp GP_3D_stat_main.o GP_3D_stat_var_def.o GP_3D_stat_compute.o GP_3D_stat_IO.o GP_3D_stat_fft_compute.o GP_3D_stat_models.o GP_3D_stat_communication.o GP_3D_stat_allocation.o VTR_mod.o VTK_mod.o -L/uv100/usr/local/fftw-3.3.3/lib -lm -lfftw3 -lfftw3_omp
/usr/bin/ld: cannot find -lnuma
make: *** [GP2DS_OPENMP] Erreur 2
For information I’m using a UV-100 computer and my makefile is :
FC = pgf90
FFTW
FFTW3DIR =/uv100/usr/local/fftw-3.3.3
FFTW3LIB = -L$(FFTW3DIR)/lib
FFTW3INC = -I$(FFTW3DIR)/include
#if ADIOS (option, only in 3D)
ADIOS = nok
ADIOSDIR = FOR_VIZU_3D/adios-1.5.0
MXMLDIR = FOR_VIZU_3D/mxml-2.7
HDF5DIR = FOR_VIZU_3D/hdf5-1.8.11/hdf5
ADIOSINC = -I$(ADIOSDIR)/include
ADIOSLIB = -L$(ADIOSDIR)/lib
MXMLINC = -I$(MXMLDIR)/include
MXMLLIB = -L$(MXMLDIR)/lib
HDF5INC = -I$(HDF5DIR)/include
HDF5LIB = -L$(HDF5DIR)/lib
#EXEC = GP3DS_MPI
EXEC = GP2DS_OPENMP
ifeq ($(EXEC),GP3DS_MPI)
PREPROC = key_mpi
MPI = -lmpi
else
PREPROC = key_fftw_openmp
PREADIOS = key_no_adios
endif
ifeq ($(ADIOS),ok)
PREADIOS = key_adios
else
PREADIOS = key_no_adios
endif
FFLAGS = -r8 -O3 -fast -mp -Mpreprocess -D$(PREPROC) -D$(PREADIOS)
LD = $(FC)
LDFLAGS = -mp