From 5c917d34ef6b153ea07eb3c6fb830d05f6578993 Mon Sep 17 00:00:00 2001 From: "Mulas, Giacomo" <gmulas@oa-cagliari.inaf.it> Date: Thu, 7 Mar 2024 14:19:34 +0100 Subject: [PATCH] clean up the various options of lapack vs mkl vs internal lucin, making sure it works. --- src/Makefile | 4 ++-- src/cluster/Makefile | 4 ++-- src/cluster/cluster.cpp | 2 ++ src/libnptm/lapack_calls.cpp | 2 ++ src/make.inc | 41 ++++++++++++++++++++++++++++++++++-- 5 files changed, 47 insertions(+), 6 deletions(-) diff --git a/src/Makefile b/src/Makefile index 61a13c6f..dd65769a 100644 --- a/src/Makefile +++ b/src/Makefile @@ -9,8 +9,8 @@ override BUILDDIR_NPTM=$(BUILDDIR)/libnptm endif ifndef LIBNPTM # choose one of the two following lines, depending on whether a static or dynamic libnptm is wanted -override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.a -#override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.so +#override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.a +override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.so endif DOCSDIR=$(SRCDIR)/../doc diff --git a/src/cluster/Makefile b/src/cluster/Makefile index 8a117426..c13c9680 100644 --- a/src/cluster/Makefile +++ b/src/cluster/Makefile @@ -12,8 +12,8 @@ override BUILDDIR_NPTM=$(BUILDDIR)/libnptm endif ifndef LIBNPTM # choose one of the two following lines, depending on whether a static or dynamic libnptm is wanted -override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.a -#override LIBNPTM=$(BUILDDIR_NPTM)/libnpTm.so +#override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.a +override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.so endif include ../make.inc diff --git a/src/cluster/cluster.cpp b/src/cluster/cluster.cpp index a0fc6642..52ab59ac 100644 --- a/src/cluster/cluster.cpp +++ b/src/cluster/cluster.cpp @@ -32,10 +32,12 @@ #include "../include/TransitionMatrix.h" #endif +#ifdef USE_LAPACK #ifndef INCLUDE_LAPACK_CALLS_H_ #include "lapacke.h" #include "../include/lapack_calls.h" #endif +#endif #ifndef INCLUDE_ALGEBRAIC_H_ #include "../include/algebraic.h" diff --git a/src/libnptm/lapack_calls.cpp b/src/libnptm/lapack_calls.cpp index 462bdaec..8ec06e98 100644 --- a/src/libnptm/lapack_calls.cpp +++ b/src/libnptm/lapack_calls.cpp @@ -6,6 +6,7 @@ #include "../include/lapack_calls.h" #endif +#ifdef USE_LAPACK void zinvert(std::complex<double> **mat, lapack_int n, int &jer) { jer = 0; __complex__ double *arr = new __complex__ double[n * n]; @@ -30,3 +31,4 @@ void zinvert(std::complex<double> **mat, lapack_int n, int &jer) { delete[] IPIV; delete[] arr; } +#endif diff --git a/src/make.inc b/src/make.inc index 35dc5713..d5b96b5a 100644 --- a/src/make.inc +++ b/src/make.inc @@ -38,11 +38,48 @@ ifndef HDF5_INCLUDE override HDF5_INCLUDE=/usr/include/hdf5/serial endif +# define (outside) USE_LAPACK for lapacke support, LAPACK_ILP64 for ilp64 interface, MKL_ILP64 the same if using MKL implementation +ifdef USE_LAPACK +ifndef LAPACK_ILP64 +override LAPACK_ILP64=1 +endif +# define (outside) USE_MKL to use the MKL implementation of lapacke +ifdef USE_MKL +ifndef MKL_ILP64 +override MKL_ILP64=1 +endif +ifndef LAPACK_INCLUDE +# this is for the MKL implementation +override LAPACK_INCLUDE=$(MKLROOT)/include +endif +ifndef LAPACK_LDFLAGS +# this is for the MKL implementation +override LAPACK_LDFLAGS=-L$(MKLROOT)/lib -Wl,--no-as-needed -lmkl_intel_ilp64 -lmkl_gnu_thread -lmkl_core -lgomp -lpthread -lm -ldl +endif +# the next else refers to USE_MKL +else +ifndef LAPACK_INCLUDE +# this is for standard "vanilla" lapacke64 +override LAPACK_INCLUDE=/usr/include +endif +ifndef LAPACK_LDFLAGS +# this is for standard "vanilla" lapacke64 +override LAPACK_LDFLAGS=-llapacke64 +endif +# the next endif is for USE_MKL +endif +#the next endif is for USE_LAPACK +endif + # CXXFLAGS defines the default compilation options for the C++ compiler ifndef CXXFLAGS -override CXXFLAGS=-O3 -ggdb -pg -coverage -DLAPACK_ILP64 -I$(HDF5_INCLUDE) +ifdef USE_LAPACK +override CXXFLAGS=-O3 -ggdb -pg -coverage -I$(HDF5_INCLUDE) -I$(LAPACK_INCLUDE) +else +override CXXFLAGS=-O3 -ggdb -pg -coverage -I$(HDF5_INCLUDE) #override CXXFLAGS=-O3 -I$(HDF5_INCLUDE) endif +endif # HDF5_LIB defines the default path to the HDF5 libraries to use # CXXLDFLAGS defines the default linker flags to use for C++ codes @@ -50,7 +87,7 @@ ifndef CXXLDFLAGS ifndef HDF5_LIB override HDF5_LIB=/usr/lib/x86_64-linux-gnu/hdf5/serial endif -override CXXLDFLAGS=-L/usr/lib64 -L$(HDF5_LIB) -lhdf5 -llapacke64 $(LDFLAGS) +override CXXLDFLAGS=-L/usr/lib64 -L$(HDF5_LIB) -lhdf5 $(LAPACK_LDFLAGS) $(LDFLAGS) #else #override CXXLDFLAGS=-L/usr/lib64 -L$(HDF5_LIB) -lhdf5 $(CXXLDFLAGS) endif -- GitLab