diff --git a/build/Makefile.am b/build/Makefile.am index ad10a23f023a953bacb813d5a45a8a7743a7f99d..70a7bffc16617b0b0c1b5177acc9a57f684f6173 100644 --- a/build/Makefile.am +++ b/build/Makefile.am @@ -1,5 +1,5 @@ AUTOMAKE_OPTIONS=subdir-objects -LDADD=libnptm/libnptm.la -L/usr/lib64 ${HDF5_LDFLAGS} ${LAPACK_LDFLAGS} +LDADD=libnptm/libnptm.la -L/usr/lib64 ${HDF5_LDFLAGS} ${LAPACKLDFLAGS} ${MAGMALDFLAGS} lib_LTLIBRARIES=libnptm/libnptm.la libnptm_libnptm_la_SOURCES=../src/libnptm/algebraic.cpp ../src/libnptm/clu_subs.cpp ../src/libnptm/Commons.cpp ../src/libnptm/Configuration.cpp ../src/libnptm/file_io.cpp ../src/libnptm/lapack_calls.cpp ../src/libnptm/logging.cpp ../src/libnptm/magma_calls.cpp ../src/libnptm/Parsers.cpp ../src/libnptm/sph_subs.cpp ../src/libnptm/tfrfme.cpp ../src/libnptm/TransitionMatrix.cpp ../src/libnptm/tra_subs.cpp ../src/libnptm/types.cpp bin_PROGRAMS=cluster/edfb_clu cluster/clu cluster/np_cluster sphere/edfb_sph sphere/sph sphere/np_sphere trapping/frfme trapping/lffft trapping/np_trapping diff --git a/build/configure.ac b/build/configure.ac index 17cf170639b14b446f9f5c2a967047ef0fbd75c6..89f91def69f74fda56467036a704db93dc71b15d 100644 --- a/build/configure.ac +++ b/build/configure.ac @@ -22,15 +22,52 @@ EOF m4_define( [M4_DETECT_LAPACK], [ - LAPACK_ROOT=$MKLROOT - if test "x$LAPACK_ROOT" != "x"; then - export LAPACK_INCLUDE=$(MKLROOT)/include - export LAPACK_LIB=$(MKLROOT)/lib - export LAPACK_LIBRARY="-Wl,--no-as-needed -lmkl_intel_ilp64 -lmkl_gnu_thread -lmkl_core -lgomp -lpthread -lm -ldl" + export -p | grep MKL + MKL_DEF=$? + if test "x$MKL_DEF" = "x0"; then + export LAPACKFLAGS="-DUSE_LAPACK -DLAPACK_ILP64 -DUSE_ILP64 -I{MKLROOT}/include" + export LAPACKLDFLAGS="-L${MKLROOT}/lib -Wl,--no-as-needed -lmkl_intel_ilp64 -lmkl_gnu_thread -lmkl_core -lgomp -lpthread -lm -ldl" else - export LAPACK_INCLUDE=/usr/include - export LAPACK_LIB=/lib/x86_64-linux-gnu - export LAPACK_LIBRARY="-llapacke64" + if test -f /usr/include/lapacke.h; then + export LAPACKFLAGS="-DUSE_LAPACK -DLAPACK_ILP64 -DUSE_ILP64" + export LAPACKLDFLAGS="-llapacke64" + fi + fi + ] +) + +m4_define( + [M4_DETECT_MAGMA], + [ + if test "x$CUDA_LIB" = "x"; then + export -p | grep CUDA + CUDA_DEF=$? + if test "x$CUDA_DEF" = "x0"; then + CUDA_LIB=${CUDA_HOME}/targets/x86_64-linux/lib + else + CUDA_LIB=/usr/local/cuda/targets/x86_64-linux/lib + fi + fi + export -p | grep MAGMA + MAGMA_DEF=$? + if test "x$MAGMA_DEF" = "x0"; then + export MAGMAFLAGS="-DUSE_MAGMA -DMAGMA_ILP64 -I${MAGMA_INCLUDE}" + export MAGMALDFLAGS="-L${CUDA_LIB} -lcudart -L${MAGMA_LIB} -lmagma" + else + if test "x$MAGMA_INCLUDE" != "x"; then + export MAGMAFLAGS="-DUSE_MAGMA -DMAGMA_ILP64 -I${MAGMA_INCLUDE}" + else + if test -f /usr/include/magma_v2.h; then + export MAGMAFLAGS="-DUSE_MAGMA -DMAGMA_ILP64" + fi + fi + if test "x$MAGMA_LIB" != "x"; then + export MAGMALDFLAGS="-L${CUDA_LIB} -lcudart -L${MAGMA_LIB} -lmagma" + else + if test -f /usr/include/magma_v2.h; then + export MAGMALDFLAGS="-L${CUDA_LIB} -lcudart -lmagma" + fi + fi fi ] ) @@ -184,9 +221,16 @@ AS_IF( # Configure the optional features M4_DETECT_LAPACK AS_IF( - [test "x$LAPACK_LIBRARY" != "x"], - [AC_MSG_NOTICE([LAPACK detected])], - [AC_MSG_NOTICE([No LAPACK found])] + [test "x$LAPACKLDFLAGS" != "x"], + [AC_MSG_NOTICE([LAPACK detected. Activating by default (use --without-lapack to disable).])], + [AC_MSG_NOTICE([No LAPACK found.])] +) + +M4_DETECT_MAGMA +AS_IF( + [test "x$MAGMALDFLAGS" != "x"], + [AC_MSG_NOTICE([MAGMA detected. Activating by default (use --without-magma to disable).])], + [AC_MSG_NOTICE([MAGMA not found.])] ) AC_ARG_ENABLE( @@ -207,34 +251,39 @@ AC_ARG_WITH( [AS_HELP_STRING([--with-lapack], [use LAPACK @<:@default=check@:>@])], [ if test "x$withval" = "xno"; then - AC_SUBST([LAPACK_FLAGS], [""]) - AC_SUBST([LAPACK_LDFLAGS], [""]) + AC_SUBST([LAPACKFLAGS], [""]) + AC_SUBST([LAPACKLDFLAGS], [""]) + else + AC_SUBST([LAPACKFLAGS], [${LAPACKFLAGS}]) + AC_SUBST([LAPACKLDFLAGS], [${LAPACKLDFLAGS}]) fi ], [ - if test "x$LAPACK_INCLUDE" != "x"; then - AC_SUBST([LAPACK_FLAGS], ["-DUSE_LAPACK -DLAPACK_ILP64 -DUSE_ILP64 -I${LAPACK_INCLUDE}"]) - AC_SUBST([LAPACK_LDFLAGS], ["-L${LAPACK_LIB} ${LAPACK_LIBRARY}"]) - fi + AC_SUBST([LAPACKFLAGS], [${LAPACKFLAGS}]) + AC_SUBST([LAPACKLDFLAGS], [${LAPACKLDFLAGS}]) ] ) AC_ARG_WITH( [magma], [AS_HELP_STRING([--with-magma], [use MAGMA @<:@default=check@:>@])], - [], - [] -) - -AC_ARG_ENABLE( - [ilp64], - [AS_HELP_STRING([--enable-ilp64], [use MAGMA @<:@default=check@:>@])], - [], - [] + [ + if test "x$withval" = "xno"; then + AC_SUBST([MAGMAFLAGS], [""]) + AC_SUBST([MAGMALDFLAGS], [""]) + else + AC_SUBST([MAGMAFLAGS], [${MAGMAFLAGS}]) + AC_SUBST([MAGMALDFLAGS], [${MAGMALDFLAGS}]) + fi + ], + [ + AC_SUBST([MAGMAFLAGS], [${MAGMAFLAGS}]) + AC_SUBST([MAGMALDFLAGS], [${MAGMALDFLAGS}]) + ] ) FFLAGS="-std=legacy -O3" -CXXFLAGS="-O3 -ggdb -Wno-format-contains-nul -I$HDF5_INCLUDE $OMPFLAGS $LAPACK_FLAGS" +CXXFLAGS="-O3 -ggdb -Wno-format-contains-nul -I$HDF5_INCLUDE $OMPFLAGS $LAPACKFLAGS $MAGMAFLAGS" SUBDIRS="cluster libnptm sphere testing trapping" # Send output to Makefiles