Merge pull request #1262 from davydden/pkg/suite_sparse_fix_blas
suite-sparse: enable TBB and fix Blas/Lapack libs
This commit is contained in:
commit
4ad29b6c9b
2 changed files with 29 additions and 13 deletions
|
@ -32,21 +32,20 @@ class SuiteSparse(Package):
|
||||||
homepage = 'http://faculty.cse.tamu.edu/davis/suitesparse.html'
|
homepage = 'http://faculty.cse.tamu.edu/davis/suitesparse.html'
|
||||||
url = 'http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-4.5.1.tar.gz'
|
url = 'http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-4.5.1.tar.gz'
|
||||||
|
|
||||||
version('4.5.1', 'f0ea9aad8d2d1ffec66a5b6bfeff5319')
|
|
||||||
version('4.5.3', '8ec57324585df3c6483ad7f556afccbd')
|
version('4.5.3', '8ec57324585df3c6483ad7f556afccbd')
|
||||||
|
version('4.5.1', 'f0ea9aad8d2d1ffec66a5b6bfeff5319')
|
||||||
|
|
||||||
# FIXME: (see below)
|
variant('tbb', default=True, description='Build with Intel TBB')
|
||||||
# variant('tbb', default=True, description='Build with Intel TBB')
|
|
||||||
|
|
||||||
depends_on('blas')
|
depends_on('blas')
|
||||||
depends_on('lapack')
|
depends_on('lapack')
|
||||||
|
|
||||||
depends_on('metis@5.1.0', when='@4.5.1:')
|
depends_on('metis@5.1.0', when='@4.5.1:')
|
||||||
# FIXME:
|
|
||||||
# in @4.5.1. TBB support in SPQR seems to be broken as TBB-related linkng
|
# in @4.5.1. TBB support in SPQR seems to be broken as TBB-related linkng
|
||||||
# flags does not seem to be used, which leads to linking errors on Linux.
|
# flags does not seem to be used, which leads to linking errors on Linux.
|
||||||
# Try re-enabling in future versions.
|
depends_on('tbb', when='@4.5.3:+tbb')
|
||||||
# depends_on('tbb', when='+tbb')
|
|
||||||
|
patch('tbb_453.patch', when='@4.5.3')
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
# The build system of SuiteSparse is quite old-fashioned.
|
# The build system of SuiteSparse is quite old-fashioned.
|
||||||
|
@ -73,20 +72,24 @@ def install(self, spec, prefix):
|
||||||
])
|
])
|
||||||
|
|
||||||
# Intel TBB in SuiteSparseQR
|
# Intel TBB in SuiteSparseQR
|
||||||
if '+tbb' in spec:
|
if 'tbb' in spec:
|
||||||
make_args.extend([
|
make_args.extend([
|
||||||
'SPQR_CONFIG=-DHAVE_TBB',
|
'SPQR_CONFIG=-DHAVE_TBB',
|
||||||
'TBB=-L%s -ltbb' % spec['tbb'].prefix.lib,
|
'TBB=-L%s -ltbb' % spec['tbb'].prefix.lib,
|
||||||
])
|
])
|
||||||
|
|
||||||
# BLAS arguments require path to libraries
|
# Make sure Spack's Blas/Lapack is used. Otherwise System's
|
||||||
# FIXME: (blas/lapack always provide libblas and liblapack as aliases)
|
# Blas/Lapack might be picked up.
|
||||||
|
blas = to_link_flags(spec['blas'].blas_shared_lib)
|
||||||
|
lapack = to_link_flags(spec['lapack'].lapack_shared_lib)
|
||||||
if '@4.5.1' in spec:
|
if '@4.5.1' in spec:
|
||||||
# adding -lstdc++ is clearly an ugly way to do this, but it follows
|
# adding -lstdc++ is clearly an ugly way to do this, but it follows
|
||||||
# with the TCOV path of SparseSuite 4.5.1's Suitesparse_config.mk
|
# with the TCOV path of SparseSuite 4.5.1's Suitesparse_config.mk
|
||||||
make_args.extend([
|
blas += ' -lstdc++'
|
||||||
'BLAS=-lblas -lstdc++',
|
|
||||||
'LAPACK=-llapack'
|
make_args.extend([
|
||||||
])
|
'BLAS=%s' % blas,
|
||||||
|
'LAPACK=%s' % lapack
|
||||||
|
])
|
||||||
|
|
||||||
make('install', *make_args)
|
make('install', *make_args)
|
||||||
|
|
13
var/spack/repos/builtin/packages/suite-sparse/tbb_453.patch
Normal file
13
var/spack/repos/builtin/packages/suite-sparse/tbb_453.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/SPQR/Lib/Makefile b/SPQR/Lib/Makefile
|
||||||
|
index eaade58..d0de852 100644
|
||||||
|
--- a/SPQR/Lib/Makefile
|
||||||
|
+++ b/SPQR/Lib/Makefile
|
||||||
|
@@ -13,7 +13,7 @@ ccode: all
|
||||||
|
include ../../SuiteSparse_config/SuiteSparse_config.mk
|
||||||
|
|
||||||
|
# SPQR depends on CHOLMOD, AMD, COLAMD, LAPACK, the BLAS and SuiteSparse_config
|
||||||
|
-LDLIBS += -lamd -lcolamd -lcholmod -lsuitesparseconfig $(LAPACK) $(BLAS)
|
||||||
|
+LDLIBS += -lamd -lcolamd -lcholmod -lsuitesparseconfig $(TBB) $(LAPACK) $(BLAS)
|
||||||
|
|
||||||
|
# compile and install in SuiteSparse/lib
|
||||||
|
library:
|
Loading…
Reference in a new issue