diff --git a/Makefile.am b/Makefile.am index 5b979bb..e8795e7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,12 +1,12 @@ lib_LTLIBRARIES = libla.la -include_HEADERS = fortran.h cuda_la.h auxstorage.h davidson.h laerror.h mat.h qsort.h vec.h bisection.h diis.h la.h noncblas.h smat.h bitvector.h fourindex.h la_traits.h nonclass.h sparsemat.h sparsesmat.h conjgrad.h gmres.h matexp.h permutation.h -libla_la_SOURCES = vec.cc mat.cc smat.cc sparsemat.cc sparsesmat.cc laerror.cc noncblas.cc bitvector.cc strassen.cc nonclass.cc cuda_la.cc +include_HEADERS = fortran.h cuda_la.h auxstorage.h davidson.h laerror.h mat.h qsort.h vec.h bisection.h diis.h la.h noncblas.h smat.h bitvector.h fourindex.h la_traits.h nonclass.h sparsemat.h sparsesmat.h csrmat.h conjgrad.h gmres.h matexp.h permutation.h +libla_la_SOURCES = vec.cc mat.cc smat.cc sparsemat.cc sparsesmat.cc csrmat.cc laerror.cc noncblas.cc bitvector.cc strassen.cc nonclass.cc cuda_la.cc check_PROGRAMS = t test t_SOURCES = t.cc t2.cc test_SOURCES = test.cc LDADD = .libs/libla.a ACLOCAL_AMFLAGS = -I m4 -EXTRA_DIST = LICENSE +EXTRA_DIST = LICENSE doxygen.cfg aminclude.am acinclude.m4 footer.html .cu.o: $(NVCC) -o $@ -c $< $(NVCCFLAGS) @@ -20,7 +20,10 @@ CXXFLAGS += -DNO_STRASSEN -DFORTRAN_ CXXFLAGS += $(CBLASOPT) $(CLAPACKOPT) LDFLAGS += $(CBLASLIB) +LDFLAGS += $(BLASLIB) +LDFLAGS += $(ATLASLIB) CXXFLAGS += $(TRACEBACKOPT) LDFLAGS += $(CUDALIBS) LDFLAGS += $(TRACEBACKLIB) +include $(top_srcdir)/aminclude.am diff --git a/configure.ac b/configure.ac index 5cc9af8..d6a85bd 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.63]) -AC_INIT([libla], [0.5], [jiri@pittnerovi.com]) +AC_INIT([libla], [0.6], [jiri@pittnerovi.com]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) @@ -18,19 +18,17 @@ AC_LANG(C++) # Checks for mandatory libraries. -AC_CHECK_LIB([blas], [dgemm_],, [ - echo ERROR: BLAS not found! You have to install the BLAS library. - exit - ]) - -AC_CHECK_LIB([atlas], [ATL_zgemv],, [ +ATLASLIB="" +AC_CHECK_LIB([atlas], [ATL_zgemv],ATLASLIB=-latlas, [ echo "ATLAS not found, I hope you are using some other (more) efficient BLAS!" ]) +AC_SUBST([ATLASLIB]) -AC_CHECK_LIB([lapack], [dgeev_],, [ - echo ERROR: LAPACK not found! You have to install the LAPACK library +AC_CHECK_LIB([blas], [dgemm_],BLASLIB=-lblas, [ + echo ERROR: BLAS not found! You have to install the BLAS library. exit - ]) + ],[$ATLASLIB]) +AC_SUBST([BLASLIB]) MATPTROPT="" @@ -42,18 +40,25 @@ AC_ARG_ENABLE([matptr],[ --enable-matptr switch to double** matrix representa esac], ,) -#check for optional libraries #cblas and clapack available? -AC_CHECK_LIB([cblas], [cblas_ddot], [CBLASLIB=-lcblas], [CBLASOPT=-DNONCBLAS]) +AC_CHECK_LIB([cblas], [cblas_ddot], [CBLASLIB=-lcblas], [CBLASOPT=-DNONCBLAS],[$ATLASLIB]) AC_CHECK_HEADER([cblas.h],,[CBLASOPT=-DNONCBLAS CBLASLIB=""], AC_INCLUDES_DEFAULT) AC_SUBST([CBLASLIB]) AC_SUBST([CBLASOPT]) -AC_CHECK_LIB([lapack], [clapack_dgesv], , [CLAPACKOPT=-DNONCLAPACK]) + +AC_CHECK_LIB([lapack], [dgeev_],, [ + echo ERROR: LAPACK not found! You have to install the LAPACK library + exit + ],[$CBLASLIB $BLASLIB $ATLASLIB]) + + +AC_CHECK_LIB([lapack], [clapack_dgesv], , [CLAPACKOPT=-DNONCLAPACK],[$CBLASLIB $BLASLIB $ATLASLIB]) AC_CHECK_HEADER([clapack.h],,[CLAPACKOPT=-DNONCLAPACK], AC_INCLUDES_DEFAULT) AC_SUBST([CLAPACKOPT]) + #CUDA available? link with cublas and avoid cblas and clapack then... AC_CHECK_LIB([cublas], [cublasInit], [MATPTROPT="" NVCC=nvcc NVCCFLAGS="-O -arch sm_20" CUDALIBS=-lcublas CUDAOPT=-DCUDALA CBLASOPT=-DNONCBLAS CLAPACKOPT=-DNONCLAPACK CBLASLIB=""], [CUDALIB="" CUDAOPT=""]) AC_CHECK_HEADER([cublas.h],,[CUDAOPT="" CUDALIBS=""], AC_INCLUDES_DEFAULT) @@ -122,6 +127,9 @@ AC_CHECK_MEMBERS([struct stat.st_blksize]) # Checks for library functions. AC_CHECK_FUNCS([getpagesize memset sqrt]) +#Doxygen support +DX_INIT_DOXYGEN($PACKAGE_NAME, doxygen.cfg) + AC_CONFIG_FILES([Makefile]) AC_OUTPUT echo @@ -131,8 +139,11 @@ echo "Please make sure that the generated Makefile employs a proper version of o echo "BLAS/LAPACK library. If not, re-run configure with CXXFLAGS and LDFLAGS options " echo "set to '-I path' and '-L path' for your preferred BLAS/LAPACK library version. " echo "In addition, similarly you might set include and link paths for Nvidia CUBLAS. " +echo "Use ./configure --disable-optimize CXXFLAGS='' LDFLAGS='' for a fast compile. " +echo "Use --enable-fotran64int to link with BLAS and LAPACK using 64-bit integers. " +echo "For documentation, 'make doxygen-doc' and see doxygen-doc/html/index.html " echo "For usage examples see file t.cc. Do not forget using copyonwrite() before " -echo "changing individual matrix/vector elements via l.h.s. operator[] or operator() " +echo "changing individual matrix/vector elements via l.h.s. operator() " echo "**********************************************************************************" -#echo "Use ./configure --disable-optimize CXXFLAGS="" LDFLAGS="" for a fast compile " +echo