125 lines
2.9 KiB
Makefile
125 lines
2.9 KiB
Makefile
# 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 ./$^
|