1include ../../make.inc 2 3# Stripped version of F90FLAGS to remove GPU details added explicitly below. 4F90FLAGSS := $(filter-out $(CUDA_F90FLAGS),$(F90FLAGS)) 5 6FLAGS = -O3 -pgf90libs -Mcuda=cc$(GPU_ARCH),cuda$(CUDA_RUNTIME),ptxinfo $(F90FLAGSS) 7FLAGS2 = -O3 -pgf90libs -Mcuda=cc$(GPU_ARCH),cuda$(CUDA_RUNTIME),ptxinfo,maxregcount:64 $(F90FLAGSS) 8 9# For performance reasons, cc of FLAGS3 must be <= 60 10define MIN 11$(firstword $(sort ${1} ${2})) 12endef 13FLAGS3 = -O3 -pgf90libs -Mcuda=cc$(call MIN,${GPU_ARCH},60),cuda$(CUDA_RUNTIME),ptxinfo,nordc,maxregcount:255 $(F90FLAGSS) 14 15# Uncomment to enable NVTX markers 16#OPTFLAGS = -DUSE_NVTX 17 18all: lib_eigsolve.a 19 20OBJS = cusolverDn_m.o eigsolve_vars.o toolbox.o zhegst_gpu.o zhemv_gpu.o zhetd2_gpu.o zhetrd_gpu.o zheevd_gpu.o zhegvdx_gpu.o \ 21 dsygst_gpu.o dsymv_gpu.o dsytd2_gpu.o dsytrd_gpu.o dsyevd_gpu.o dsygvdx_gpu.o 22 23zhetd2_gpu.o : zhetd2_gpu.F90 24 pgf90 -c ${FLAGS2} ${OPTFLAGS} $*.F90 -o $*.o 25zhemv_gpu.o : zhemv_gpu.F90 26 pgf90 -c ${FLAGS3} ${OPTFLAGS} $*.F90 -o $*.o 27dsytd2_gpu.o : dsytd2_gpu.F90 28 pgf90 -c ${FLAGS2} ${OPTFLAGS} $*.F90 -o $*.o 29dsymv_gpu.o : dsymv_gpu.F90 30 pgf90 -c ${FLAGS3} ${OPTFLAGS} $*.F90 -o $*.o 31%.o: %.cuf 32 pgf90 -c ${FLAGS} ${OPTFLAGS} $*.cuf -o $*.o 33%.o: %.F90 34 pgf90 -c ${FLAGS} ${OPTFLAGS} $*.F90 -o $*.o 35 36lib_eigsolve.a: $(OBJS) 37 ar -cr lib_eigsolve.a $(OBJS) 38 39clean: 40 rm -f lib_eigsolve.a *.mod *.o 41 42# Dependencies 43dsyevd_gpu.o : dsytrd_gpu.o 44dsyevd_gpu.o : eigsolve_vars.o 45dsyevd_gpu.o : toolbox.o 46dsygst_gpu.o : eigsolve_vars.o 47dsygvdx_gpu.o : dsyevd_gpu.o 48dsygvdx_gpu.o : dsygst_gpu.o 49dsygvdx_gpu.o : eigsolve_vars.o 50dsygvdx_gpu.o : toolbox.o 51dsytrd_gpu.o : dsymv_gpu.o 52dsytrd_gpu.o : dsytd2_gpu.o 53dsytrd_gpu.o : eigsolve_vars.o 54eigsolve_vars.o : cusolverDn_m.o 55zheevd_gpu.o : eigsolve_vars.o 56zheevd_gpu.o : toolbox.o 57zheevd_gpu.o : zhetrd_gpu.o 58zhegst_gpu.o : eigsolve_vars.o 59zhegvdx_gpu.o : eigsolve_vars.o 60zhegvdx_gpu.o : toolbox.o 61zhegvdx_gpu.o : zheevd_gpu.o 62zhegvdx_gpu.o : zhegst_gpu.o 63zhetrd_gpu.o : eigsolve_vars.o 64zhetrd_gpu.o : zhemv_gpu.o 65zhetrd_gpu.o : zhetd2_gpu.o 66