diff --git a/Make.inc.in b/Make.inc.in index ceba77b8..33164e1c 100755 --- a/Make.inc.in +++ b/Make.inc.in @@ -70,12 +70,14 @@ UTILMODNAME=@UTILMODNAME@ CBINDLIBNAME=libpsb_cbind.a OACCD=@OACCD@ +OACCMODS=@OACCMODS@ OACCLD=@OACCLD@ FCOPENACC=@FCOPENACC@ CCOPENACC=@CCOPENACC@ CXXOPENACC=@CXXOPENACC@ CUDAD=@CUDAD@ +CUDAMODS=@CUDAMODS@ CUDALD=@CUDALD@ LCUDA=@LCUDA@ diff --git a/Makefile b/Makefile index fd18a38c..131b90a3 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ include Make.inc -all: dirs based precd linslvd utild cbindd extd $(CUDAD) $(OACCD) libd +all: dirs mods based precd linslvd utild cbindd extd $(CUDAD) $(OACCD) libd @echo "=====================================" @echo "PSBLAS libraries Compilation Successful." @@ -9,12 +9,26 @@ dirs: (if test ! -d include ; then mkdir include; fi; $(INSTALL_DATA) Make.inc include/Make.inc.psblas) (if test ! -d modules ; then mkdir modules; fi;) -precd: based -utild: based -linslvd: precd -extd: based -cudad: extd -oaccd: extd +mods: basemods precmods linsolvemods extmods $(CUDAMODS) $(OACCMODS) +basemods: + $(MAKE) -C base mods +precmods: basemods + $(MAKE) -C prec mods +extmods: basemods + $(MAKE) -C ext mods +linsolvemods: precmods + $(MAKE) -C linsolve mods +cudamods: extmods + $(MAKE) -C cuda mods +oaccmods: extmods + $(MAKE) -C openacc mods + +precd: basemods based +utild: basemods based +linslvd: linsolvemods precd +extd: extmods based +cudad: cudamods extd +oaccd: oaccmods extd cbindd: based precd linslvd utild libd: based precd linslvd utild cbindd extd $(CUDALD) $(OACCLD) diff --git a/configure b/configure index e6b1d36f..b7c67d8a 100755 --- a/configure +++ b/configure @@ -653,6 +653,7 @@ LIBRSB_INCLUDES LIBRSB_LIBS LCUDA CUDALD +CUDAMODS CUDAD CUDEFINES CUDA_NVCC @@ -672,6 +673,7 @@ CXXOPENACC CCOPENACC FCOPENACC OACCLD +OACCMODS OACCD METISINCFILE UTILLIBNAME @@ -10922,6 +10924,7 @@ printf "%s\n" "$as_me: For CUDA I need psb_ipk_ to be 4 bytes but it is $pac_cv_ CUDA_CC=""; SPGPU_LIBS=""; CUDAD=""; + CUDAMODS=""; CUDALD=""; CUDEFINES=""; CUDA_DEFINES=""; @@ -11171,6 +11174,7 @@ printf "%s\n" "$as_me: Unsupported CUDA version ${PSB_CUDA_VERSION} disabling CU CUDA_CC=""; SPGPU_LIBS=""; CUDAD=""; + CUDAMODS=""; CUDALD=""; CUDEFINES=""; CUDA_DEFINES=""; @@ -11190,6 +11194,7 @@ printf "%s\n" "$as_me: CUDA version ${PSB_CUDA_VERSION}" >&6;} CVERSIONCUDA="#define PSB_CUDA_VERSION ${PSB_CUDA_VERSION}" SPGPU_LIBS="-lspgpu"; CUDAD=cudad; + CUDAMODS=cudamods; CUDALD=cudald; LCUDA="-lpsb_cuda"; EXTRALDLIBS="-lstdc++"; @@ -11611,6 +11616,7 @@ fi CXXOPENACC="$CXXOPENACC $EXTRAOPENACC"; FCOPENACC="$FCOPENACC $EXTRAOPENACC"; OACCD=oaccd; + OACCMODS=oaccmods; OACCLD=oaccld; #FCOPT="$FCOPT $FCOPENACC"; @@ -11770,6 +11776,8 @@ FDEFINES=$(PSBFDEFINES) + + diff --git a/configure.ac b/configure.ac index eb645bdb..c082b584 100644 --- a/configure.ac +++ b/configure.ac @@ -852,6 +852,7 @@ if test "x$pac_cv_ipk_size" != "x4"; then CUDA_CC=""; SPGPU_LIBS=""; CUDAD=""; + CUDAMODS=""; CUDALD=""; CUDEFINES=""; CUDA_DEFINES=""; @@ -876,6 +877,7 @@ else CUDA_CC=""; SPGPU_LIBS=""; CUDAD=""; + CUDAMODS=""; CUDALD=""; CUDEFINES=""; CUDA_DEFINES=""; @@ -894,6 +896,7 @@ else CVERSIONCUDA="#define PSB_CUDA_VERSION ${PSB_CUDA_VERSION}" SPGPU_LIBS="-lspgpu"; CUDAD=cudad; + CUDAMODS=cudamods; CUDALD=cudald; LCUDA="-lpsb_cuda"; EXTRALDLIBS="-lstdc++"; @@ -954,6 +957,7 @@ dnl fi FCOPENACC="$FCOPENACC $EXTRAOPENACC"; dnl AC_MSG_NOTICE([OpenACC 3 flags CC $CCOPENACC CXX $CXXOPENACC FC $FCOPENACC]) OACCD=oaccd; + OACCMODS=oaccmods; OACCLD=oaccld; #FCOPT="$FCOPT $FCOPENACC"; @@ -1090,6 +1094,7 @@ AC_SUBST(METHDLIBNAME) AC_SUBST(UTILLIBNAME) AC_SUBST(METISINCFILE) AC_SUBST(OACCD) +AC_SUBST(OACCMODS) AC_SUBST(OACCLD) AC_SUBST(FCOPENACC) AC_SUBST(CCOPENACC) @@ -1113,6 +1118,7 @@ AC_SUBST(PSB_CUDA_SHORT_VERSION) AC_SUBST(CUDA_NVCC) AC_SUBST(CUDEFINES) AC_SUBST(CUDAD) +AC_SUBST(CUDAMODS) AC_SUBST(CUDALD) AC_SUBST(LCUDA) AC_SUBST(LIBRSB_LIBS) diff --git a/cuda/Makefile b/cuda/Makefile index 6fbf2cbd..2a8bb94f 100755 --- a/cuda/Makefile +++ b/cuda/Makefile @@ -47,14 +47,15 @@ COBJS= elldev.o hlldev.o diagdev.o hdiagdev.o vectordev.o ivectordev.o dnsdev.o OBJS=$(COBJS) $(FOBJS) -lib: objs ilib cudalib spgpulib +lib: mods objs ilib cudalib spgpulib $(AR) $(LIBNAME) $(OBJS) /bin/cp -p $(LIBNAME) $(LIBDIR) -objs: $(OBJS) iobjs cudaobjs spgpuobjs +mods: $(FOBJS) /bin/cp -p *$(.mod) $(MODDIR) /bin/cp -p *.h $(INCDIR) +objs: mods $(OBJS) iobjs cudaobjs spgpuobjs $(OBJS) iobjs cudaobjs spgpuobjs: spgpuinc diff --git a/ext/Makefile b/ext/Makefile index 6ef24cba..4b30d8b5 100755 --- a/ext/Makefile +++ b/ext/Makefile @@ -14,7 +14,7 @@ CINCLUDES= LIBNAME=libpsb_ext.a -FOBJS= psb_d_ell_mat_mod.o psb_d_hll_mat_mod.o \ +MODOBJS=psb_d_ell_mat_mod.o psb_d_hll_mat_mod.o \ psb_s_hll_mat_mod.o psb_s_ell_mat_mod.o \ psb_c_hll_mat_mod.o psb_c_ell_mat_mod.o \ psb_z_hll_mat_mod.o psb_z_ell_mat_mod.o \ @@ -31,13 +31,15 @@ FOBJS= psb_d_ell_mat_mod.o psb_d_hll_mat_mod.o \ COBJS= -OBJS=$(COBJS) $(FOBJS) +OBJS=$(COBJS) $(MODOBJS) lib: objs ilib $(AR) $(LIBNAME) $(OBJS) /bin/cp -p $(LIBNAME) $(LIBDIR) -objs: $(OBJS) iobjs +objs: mods $(OBJS) iobjs + +mods: $(MODOBJS) /bin/cp -p *$(.mod) $(MODDIR) @@ -65,11 +67,11 @@ psb_s_hll_mat_mod.o psb_c_hll_mat_mod.o psb_d_hll_mat_mod.o psb_z_hll_mat_mod.o: ilib: objs $(MAKE) -C impl lib LIBNAME=$(LIBNAME) -iobjs: $(OBJS) +iobjs: mods $(MAKE) -C impl objs clean: cclean iclean - /bin/rm -f $(FOBJS) *$(.mod) *.a + /bin/rm -f $(MODOBJS) *$(.mod) *.a cclean: /bin/rm -f $(COBJS) diff --git a/linsolve/Makefile b/linsolve/Makefile index c8fa3ac7..f97222e6 100644 --- a/linsolve/Makefile +++ b/linsolve/Makefile @@ -18,7 +18,9 @@ LIBNAME=$(METHDLIBNAME) FINCLUDES=$(FMFLAG). $(FMFLAG)$(MODDIR) -objs: $(OBJS) impld +objs: mods $(OBJS) impld + +mods: $(MODOBJS) /bin/cp -p $(CPUPDFLAG) *$(.mod) $(MODDIR) lib: objs diff --git a/openacc/Makefile b/openacc/Makefile index 6b1f3fbb..ed40e036 100644 --- a/openacc/Makefile +++ b/openacc/Makefile @@ -38,7 +38,9 @@ lib: objs ilib $(AR) $(LIBNAME) $(OBJS) /bin/cp -p $(LIBNAME) $(LIBDIR) -objs: $(OBJS) iobjs +objs: mods $(OBJS) iobjs + +mods: $(FOBJS) /bin/cp -p *$(.mod) $(MODDIR) iobjs: $(OBJS) diff --git a/prec/Makefile b/prec/Makefile index 5d7523f4..c934fe43 100644 --- a/prec/Makefile +++ b/prec/Makefile @@ -28,8 +28,11 @@ COBJS= FINCLUDES=$(FMFLAG). $(FMFLAG)$(MODDIR) OBJS=$(F90OBJS) $(COBJS) $(MPFOBJS) $(MODOBJS) -objs: $(OBJS) impld +objs: mods $(OBJS) impld + +mods: $(MODOBJS) /bin/cp -p $(CPUPDFLAG) *$(.mod) $(MODDIR) + lib: objs $(MAKE) -C impl lib $(AR) $(HERE)/$(LIBNAME) $(OBJS) diff --git a/util/Makefile b/util/Makefile index 96820899..67dfd6e8 100644 --- a/util/Makefile +++ b/util/Makefile @@ -29,8 +29,11 @@ LIBNAME=$(UTILLIBNAME) FINCLUDES=$(FMFLAG). $(FMFLAG)$(MODDIR) CINCLUDES=-I. -I$(INCDIR) -objs: $(OBJS) +objs: mods $(OBJS) + +mods: $(MODOBJS) /bin/cp -p $(CPUPDFLAG) *$(.mod) $(MODDIR) + lib: $(HERE)/$(LIBNAME) /bin/cp -p $(CPUPDFLAG) $(HERE)/$(LIBNAME) $(LIBDIR)