diff --git a/Sheet7/E14/PGI_NATIVE_default.mk b/Sheet7/E14/PGI_NATIVE_default.mk new file mode 100644 index 0000000..1057f15 --- /dev/null +++ b/Sheet7/E14/PGI_NATIVE_default.mk @@ -0,0 +1,125 @@ +# Use the MPI-wrappers from the PGI compiler suite. +# requires setting of COMPILER=PGI_MPI_ +# +# requires +# sudo apt install librdmacm1 + + + +# Details for run time information +# export PGI_ACC_TIME=1 +# unset PGI_ACC_TIME +# export PGI_ACC_NOTIFY=1 +# export PGI_ACC_NOTIFY=3 +# unset PGI_ACC_NOTIFY + + +PGI_PATH = /opt/pgi/linux86-64/2019/bin +#ifeq "$(HOSTNAME)" "mephisto.uni-graz.at" +# # mephisto +# PGI_PATH = /share/apps/pgi/linux86-64/2016/bin +#endif + + +#MPI_ROOT=${PGI_PATH}mpi/mpich/bin/ +MPI_ROOT= ${PGI_PATH}/../mpi/openmpi-3.1.3/bin/ +MPIRUN = ${MPI_ROOT}mpirun + +CC = ${MPI_ROOT}mpicc +CXX = ${MPI_ROOT}mpicxx +#F77 = ${MPI_ROOT}mpif77 +ifndef LINKER + LINKER = ${CC} +endif +LINKER = ${CXX} + +WARNINGS = -Minform=warn + +PGI_PROFILING += -Minfo=loop,vect,opt,intensity,mp,accel +#PGI_PROFILING += -Mprof=lines –Minfo=ccff + +CXXFLAGS += -e3 -std=c++17 -fast ${PGI_PROFILING} ${WARNINGS} -Mnodepchk +CFLAGS += -fast ${PGI_PROFILING} ${WARNINGS} -Mnodepchk +# +# for OpenACC +# Target architecture (nvidia,host) +TA_ARCH = host +#TA_ARCH = nvidia,host +#TA_ARCH = -ta=nvidia:cc2+,cuda5.5,fastmath +#TA_ARCH = -acc -DNDEBUG -ta=nvidia:cc2+,cuda5.5,fastmath,keepgpu +#TA_ARCH = -acc -DNDEBUG -ta=nvidia:cc2+,fastmath,keepgpu + +#,keepgpu +# CFLAGS = -O3 -ta=$(TA_ARCH) +#CFLAGS += -B -gopt $(TA_ARCH) +#CXXFLAGS += -B -gopt $(TA_ARCH) +# -Minfo=all + +# libcudart.a is needed for direct CUDA calls +#LINKFLAGS = -gopt $(TA_ARCH) -L${BINDIR}../lib $(PGI_PROFILING) +# -lcudart + +default: ${PROGRAM} + +${PROGRAM}: ${OBJECTS} + $(LINKER) $^ ${LINKFLAGS} -o $@ + +clean: + rm -f ${PROGRAM} ${OBJECTS} *.gpu *gprof.out + +clean_all:: clean + @rm -f *_ *~ *.bak *.log *.out *.tar + +#run: clean ${PROGRAM} +run: ${PROGRAM} + ${MPIRUN} -np 4 ${OPTIRUN} ./${PROGRAM} + +# tar the current directory +MY_DIR = `basename ${PWD}` +tar: clean_all + @echo "Tar the directory: " ${MY_DIR} + @cd .. ;\ + tar cf ${MY_DIR}.tar ${MY_DIR} *default.mk ;\ + cd ${MY_DIR} +# tar cf `basename ${PWD}`.tar * + +doc: + doxygen Doxyfile + +######################################################################### + +.cpp.o: + $(CXX) -c $(CXXFLAGS) -o $@ $< + +.c.o: + $(CC) -c $(CFLAGS) -o $@ $< + +.f.o: + $(F77) -c $(FFLAGS) -o $@ $< + +################################################################################################## +# # some tools +# # Simple run time profiling of your code +# # CXXFLAGS += -g -pg +# # LINKFLAGS += -pg + + +# Profiling options PGI, see: pgcollect -help +CPU_PROF = -allcache +GPU_PROF = -cuda=gmem,branch,cc13 -cudainit +#GPU_PROF = -cuda=branch:cc20 +# +PROF_FILE = pgprof.out + +prof: ${PROGRAM} +# ./$^ +# $(CUDA_HOME)/bin/nvvp & +# export LD_LIBRARY_PATH=/state/partition1/apps/pgi/linux86-64/12.9/lib:$LD_LIBRARY_PATH + ${OPTIRUN} ${BINDIR}pgcollect $(GPU_PROF) ./$^ + ${OPTIRUN} ${BINDIR}pgprof -exe ./$^ $(PROF_FILE) & + + +# Memory checker (slooooow!!!): +# see doc at /usr/local/cuda/doc/cuda-memcheck.pdf +# mem: ${PROGRAM} +# $(CUDA_HOME)memcheck ./$^