|
| 1 | + CPP = mpic++ |
| 2 | + CC = mpicc |
| 3 | + F90 = mpifort |
| 4 | + F77 = mpifort |
| 5 | + LOADER = mpifort |
| 6 | + |
| 7 | +OPTS := $(OPTS) -DPETSC_VERSION=990 -DUSEBLAS |
| 8 | + |
| 9 | +PETSC_DIR=/projects/M3DC1/petsc |
| 10 | + |
| 11 | +ifeq ($(COM), 1) |
| 12 | + PETSC_ARCH=traverse-nvidia-complex |
| 13 | +else |
| 14 | + PETSC_ARCH=traverse-nvidia-real |
| 15 | +endif |
| 16 | + |
| 17 | +ifeq ($(COM), 1) |
| 18 | + M3DC1_SCOREC_LIB=-lm3dc1_scorec_complex |
| 19 | +else |
| 20 | + M3DC1_SCOREC_LIB=-lm3dc1_scorec |
| 21 | +endif |
| 22 | + |
| 23 | +SCOREC_BASE_DIR=/projects/M3DC1/scorec/traverse-nvidia |
| 24 | +SCOREC_UTIL_DIR=$(SCOREC_BASE_DIR)/bin |
| 25 | +ifdef SCORECVER |
| 26 | + SCOREC_DIR=$(SCOREC_BASE_DIR)/$(SCORECVER) |
| 27 | +else |
| 28 | + SCOREC_DIR=$(SCOREC_BASE_DIR) |
| 29 | +endif |
| 30 | + |
| 31 | +ZOLTAN_LIB=-L/home/liuchang/zoltan/pgi/lib -lzoltan |
| 32 | + |
| 33 | +SCOREC_LIBS= -L$(SCOREC_DIR)/lib $(M3DC1_SCOREC_LIB) \ |
| 34 | + -Wl,--start-group,-rpath,$(SCOREC_BASE_DIR)/lib -L$(SCOREC_BASE_DIR)/lib \ |
| 35 | + -lpumi -lapf -lapf_zoltan -lgmi -llion -lma -lmds -lmth -lparma \ |
| 36 | + -lpcu -lph -lsam -lspr -lcrv -Wl,--end-group |
| 37 | + |
| 38 | +HDF5_DIR=/projects/M3DC1/hdf5/traverse-nvidia |
| 39 | +GSL_DIR=/projects/M3DC1/gsl/traverse |
| 40 | +FFTW_DIR=/projects/M3DC1/fftw/traverse-nvidia |
| 41 | + |
| 42 | +ifeq ($(PAR), 1) |
| 43 | + OPTS := $(OPTS) -DUSEPARTICLES |
| 44 | +endif |
| 45 | + |
| 46 | +PETSC_WITH_EXTERNAL_LIB = -L$(PETSC_DIR)/$(PETSC_ARCH)/lib -lpetsc -lsuperlu_dist -lsuperlu -lcmumps -ldmumps -lsmumps -lzmumps -lmumps_common -lpord -lparmetis -lmetis -lscalapack -llapack -lblas -lstdc++ |
| 47 | + |
| 48 | +INCLUDE := $(INCLUDE) -I$(SCOREC_DIR)/include \ |
| 49 | + -I$(PETSC_DIR)/$(PETSC_ARCH)/include -I$(PETSC_DIR)/include \ |
| 50 | + -I$(HDF5_DIR)/include -I$(HDF5_DIR)/include/static \ |
| 51 | + -I$(FFTW_DIR)/include \ |
| 52 | + -I$(GSL_DIR)/include |
| 53 | + |
| 54 | +LIBS := $(LIBS) \ |
| 55 | + $(SCOREC_LIBS) \ |
| 56 | + $(ZOLTAN_LIB) \ |
| 57 | + -L$(HDF5_DIR)/lib -lhdf5_hl_fortran -lhdf5_hl_f90cstub -lhdf5_hl -lhdf5_fortran -lhdf5_f90cstub -lhdf5 -lz \ |
| 58 | + -L$(FFTW_DIR)/lib -lfftw3_mpi -lfftw3 \ |
| 59 | + -L$(GSL_DIR)/lib -lgsl -lgslcblas \ |
| 60 | + $(PETSC_WITH_EXTERNAL_LIB) |
| 61 | + |
| 62 | +FOPTS = -c -r8 -Mpreprocess $(OPTS) |
| 63 | + |
| 64 | +CCOPTS = -c $(OPTS) |
| 65 | + |
| 66 | +# Optimization flags |
| 67 | +ifeq ($(OPT), 1) |
| 68 | + LDOPTS := $(LDOPTS) -fast |
| 69 | + FOPTS := $(FOPTS) -fast |
| 70 | + CCOPTS := $(CCOPTS) -fast |
| 71 | +else |
| 72 | + FOPTS := $(FOPTS) -Mbounds -Minfo=all -Mchkfpstk -Mchkstk -Mdalign -Mdclchk -Mdepchk -Miomutex -Mrecursive -Msave -Ktrap=fp -O0 -g -byteswapio |
| 73 | + CCOPTS := $(CCOPTS) -g |
| 74 | + LDOPTS := $(LDOPTS) -g |
| 75 | +endif |
| 76 | + |
| 77 | +ifeq ($(OMP), 1) |
| 78 | + LDOPTS := $(LDOPTS) -mp |
| 79 | + FOPTS := $(FOPTS) -mp |
| 80 | + CCOPTS := $(CCOPTS) -mp |
| 81 | +endif |
| 82 | + |
| 83 | +ifeq ($(ACC), 1) |
| 84 | + LDOPTS := $(LDOPTS) -acc -gpu=cuda11.3 -Minfo=accel |
| 85 | + FOPTS := $(FOPTS) -acc -gpu=cuda11.3 -Minfo=accel |
| 86 | + CCOPTS := $(CCOPTS) -acc -gpu=cuda11.3 -Minfo=accel |
| 87 | +endif |
| 88 | + |
| 89 | +F90OPTS = $(F90FLAGS) $(FOPTS) |
| 90 | +F77OPTS = $(F77FLAGS) $(FOPTS) |
| 91 | + |
| 92 | +%.o : %.cpp |
| 93 | + $(CPP) $(CCOPTS) $(INCLUDE) $< -o $@ |
| 94 | + |
| 95 | +%.o : %.c |
| 96 | + $(CC) $(CCOPTS) $(INCLUDE) $< -o $@ |
| 97 | + |
| 98 | +%.o: %.f |
| 99 | + $(F77) $(F77OPTS) $(INCLUDE) $< -o $@ |
| 100 | + |
| 101 | +%.o: %.F |
| 102 | + $(F77) $(F77OPTS) $(INCLUDE) $< -o $@ |
| 103 | + |
| 104 | +%.o: %.f90 |
| 105 | + $(F90) $(F90OPTS) $(INCLUDE) $< -o $@ |
| 106 | + |
0 commit comments