Feature/fs1519 suitesparse ldl spqr
Tested with fixed openSuse package, now SPQR works for me, too.
Merge request reports
Activity
- dune/istl/ldl.hh 0 → 100644
154 */ 155 void apply(T* x, T* b) 156 { 157 const int dimMat(ldlMatrix_.N()); 158 ldl_perm(dimMat, Y_, b, P_); 159 ldl_lsolve(dimMat, Y_, Lp_, Li_, Lx_); 160 ldl_dsolve(dimMat, Y_, D_); 161 ldl_ltsolve(dimMat, Y_, Lp_, Li_, Lx_); 162 ldl_permt(dimMat, x, Y_, P_); 163 } 164 165 void setOption(unsigned int option, double value) 166 { 167 DUNE_UNUSED_PARAMETER(option); 168 DUNE_UNUSED_PARAMETER(value); 169 } Hi @dominic . Are you referring to setOption? If so, I added it in order to have exactly the same methods of umfpack. I think it is necessary because you can change the solver in your code with only a typedef without the need of commenting out any methods. I don't think there is a ldl control array but I can take a look again to see if I have missed it.
@marco.agnese istl does not have any type of parameter interface. To some extent this is what we want to achieve in the
feature/istl-ini
branch, where all components will get an additional interface to configure via aParameterTree
@christi I don't get your comment.
setOption
is already used by UMFPack bindings. How isParameterTree
related to Marco's code?
- dune/istl/spqr.hh 0 → 100644
159 std::cout<<"Rank Estimate: "<<cc_->SPQR_istat[4]<<std::endl<<std::endl; 160 } 161 } 162 163 /** \copydoc InverseOperator::apply(X&,Y&,double,InverseOperatorResult&) */ 164 virtual void apply (domain_type& x, range_type& b, double reduction, InverseOperatorResult& res) 165 { 166 DUNE_UNUSED_PARAMETER(reduction); 167 apply(x, b, res); 168 } 169 170 void setOption(unsigned int option, double value) 171 { 172 DUNE_UNUSED_PARAMETER(option); 173 DUNE_UNUSED_PARAMETER(value); 174 } Those additional solvers use
ColCompMatrix
as internal matrix structure and set theStoresColumnCompressed
capability to true. I would conclude, that it is possible without further adjustments to plug them into the overlapping schwarz code. It would be nice if this could be tested. The guard in https://gitlab.dune-project.org/core/dune-istl/blob/master/dune/istl/overlappingschwarz.hh#L313 has to be changed for that though (btw I think this guarding could be safely deleted!)Yes, I can remove the guard and add a preprocessor variable into https://gitlab.dune-project.org/core/dune-istl/blob/master/dune/istl/test/overlappingschwarztest.cc in order to choose the direct solver in the test. What do you think?
@dominic Since I cannot push any change to the branch do you want to do the change yourself or how it works?
@marco.agnese I have given you developer status, which allows you to push to feature branches.
Added 9 commits:
- 4a0f4cdb...f8774757 - 8 commits from branch
master
- 6105a90a - Merge branch 'master' into feature/FS1519-suitesparse-ldl-spqr
- 4a0f4cdb...f8774757 - 8 commits from branch
@dominic I have implemented the change but I have trouble testing it since the build-system found SuperLU but it seems that there are some missing headers so it fails to compile the test. May you test it?
I have tested your branch. There seems to be some problem in SPQR:
/home/dominic/dune/dune-istl/dune/istl/spqr.hh: In member function ‘virtual void Dune::SPQR<Dune::BCRSMatrix<Dune::FieldMatrix<K, n, p>, TA> >::apply(Dune::SPQR<Dune::BCRSMatrix<Dune::FieldMatrix<K, n, p>, TA> >::domain_type&, Dune::SPQR<Dune::BCRSMatrix<Dune::FieldMatrix<K, n, p>, TA> >::range_type&, Dune::InverseOperatorResult&)’: /home/dominic/dune/dune-istl/dune/istl/spqr.hh:154:42: error: ‘cholmod_common’ has no member named ‘SPQR_flopcount’ std::cout<<"Flops Taken: "<<cc_->SPQR_flopcount<<std::endl; ^ /home/dominic/dune/dune-istl/dune/istl/spqr.hh:155:44: error: ‘cholmod_common’ has no member named ‘SPQR_analyze_time’ std::cout<<"Analysis Time: "<<cc_->SPQR_analyze_time<<" s"<<std::endl; ^ /home/dominic/dune/dune-istl/dune/istl/spqr.hh:156:45: error: ‘cholmod_common’ has no member named ‘SPQR_factorize_time’ std::cout<<"Factorize Time: "<<cc_->SPQR_factorize_time<<" s"<<std::endl; ^ /home/dominic/dune/dune-istl/dune/istl/spqr.hh:157:45: error: ‘cholmod_common’ has no member named ‘SPQR_solve_time’ std::cout<<"Backsolve Time: "<<cc_->SPQR_solve_time<<" s"<<std::endl;
I have also problem with spqrtest. At linking stage I have these errors:
/usr/local_machine/suitesparse-4.4.0/lib/libspqr.a(spqr_larftb.o): In function `void spqr_larftb<double>(int, long, long, long, long, long, double*, double*, double*, double*, cholmod_common_struct*)': spqr_larftb.cpp:(.text._Z11spqr_larftbIdEvilllllPT_S1_S1_S1_P21cholmod_common_struct[_Z11spqr_larftbIdEvilllllPT_S1_S1_S1_P21cholmod_common_struct]+0x2c3): undefined reference to `dlarfb_' spqr_larftb.cpp:(.text._Z11spqr_larftbIdEvilllllPT_S1_S1_S1_P21cholmod_common_struct[_Z11spqr_larftbIdEvilllllPT_S1_S1_S1_P21cholmod_common_struct]+0x3b9): undefined reference to `dlarft_' spqr_larftb.cpp:(.text._Z11spqr_larftbIdEvilllllPT_S1_S1_S1_P21cholmod_common_struct[_Z11spqr_larftbIdEvilllllPT_S1_S1_S1_P21cholmod_common_struct]+0x673): undefined reference to `dlarft_' spqr_larftb.cpp:(.text._Z11spqr_larftbIdEvilllllPT_S1_S1_S1_P21cholmod_common_struct[_Z11spqr_larftbIdEvilllllPT_S1_S1_S1_P21cholmod_common_struct]+0x711): undefined reference to `dlarft_' spqr_larftb.cpp:(.text._Z11spqr_larftbIdEvilllllPT_S1_S1_S1_P21cholmod_common_struct[_Z11spqr_larftbIdEvilllllPT_S1_S1_S1_P21cholmod_common_struct]+0x7a8): undefined reference to `dlarft_' /usr/local_machine/suitesparse-4.4.0/lib/libspqr.a(spqr_larftb.o): In function `void spqr_larftb<std::complex<double> >(int, long, long, long, long, long, std::complex<double>*, std::complex<double>*, std::complex<double>*, std::complex<double>*, cholmod_common_struct*)': spqr_larftb.cpp:(.text._Z11spqr_larftbISt7complexIdEEvilllllPT_S3_S3_S3_P21cholmod_common_struct[_Z11spqr_larftbISt7complexIdEEvilllllPT_S3_S3_S3_P21cholmod_common_struct]+0x2c3): undefined reference to `zlarfb_' spqr_larftb.cpp:(.text._Z11spqr_larftbISt7complexIdEEvilllllPT_S3_S3_S3_P21cholmod_common_struct[_Z11spqr_larftbISt7complexIdEEvilllllPT_S3_S3_S3_P21cholmod_common_struct]+0x3b9): undefined reference to `zlarft_' spqr_larftb.cpp:(.text._Z11spqr_larftbISt7complexIdEEvilllllPT_S3_S3_S3_P21cholmod_common_struct[_Z11spqr_larftbISt7complexIdEEvilllllPT_S3_S3_S3_P21cholmod_common_struct]+0x673): undefined reference to `zlarft_' spqr_larftb.cpp:(.text._Z11spqr_larftbISt7complexIdEEvilllllPT_S3_S3_S3_P21cholmod_common_struct[_Z11spqr_larftbISt7complexIdEEvilllllPT_S3_S3_S3_P21cholmod_common_struct]+0x711): undefined reference to `zlarft_' spqr_larftb.cpp:(.text._Z11spqr_larftbISt7complexIdEEvilllllPT_S3_S3_S3_P21cholmod_common_struct[_Z11spqr_larftbISt7complexIdEEvilllllPT_S3_S3_S3_P21cholmod_common_struct]+0x7a8): undefined reference to `zlarft_' /usr/local_machine/suitesparse-4.4.0/lib/libspqr.a(spqr_front.o): In function `long spqr_front<double>(long, long, long, double, long, long, double*, long*, char*, double*, double*, double*, double*, cholmod_common_struct*)': spqr_front.cpp:(.text._Z10spqr_frontIdElllldllPT_PlPcS1_S1_PdS4_P21cholmod_common_struct[_Z10spqr_frontIdElllldllPT_PlPcS1_S1_PdS4_P21cholmod_common_struct]+0x656): undefined reference to `dlarfg_' spqr_front.cpp:(.text._Z10spqr_frontIdElllldllPT_PlPcS1_S1_PdS4_P21cholmod_common_struct[_Z10spqr_frontIdElllldllPT_PlPcS1_S1_PdS4_P21cholmod_common_struct]+0x936): undefined reference to `dlarf_' /usr/local_machine/suitesparse-4.4.0/lib/libspqr.a(spqr_front.o): In function `long spqr_front<std::complex<double> >(long, long, long, double, long, long, std::complex<double>*, long*, char*, std::complex<double>*, std::complex<double>*, double*, double*, cholmod_common_struct*)': spqr_front.cpp:(.text._Z10spqr_frontISt7complexIdEElllldllPT_PlPcS3_S3_PdS6_P21cholmod_common_struct[_Z10spqr_frontISt7complexIdEElllldllPT_PlPcS3_S3_PdS6_P21cholmod_common_struct]+0x67e): undefined reference to `zlarfg_' spqr_front.cpp:(.text._Z10spqr_frontISt7complexIdEElllldllPT_PlPcS3_S3_PdS6_P21cholmod_common_struct[_Z10spqr_frontISt7complexIdEElllldllPT_PlPcS3_S3_PdS6_P21cholmod_common_struct]+0x9c2): undefined reference to `zlarf_'
Do you experience something similar?
Edited by Dominic KempfDoes spqrtest work for you both? It works for be, but I get the following compiler error:
[ 0%] Building CXX object dune/istl/test/CMakeFiles/overlappingschwarztest.dir/overlappingschwarztest.cc.o In file included from /temp/gruenich/dune/complete/dune-istl/dune/istl/test/overlappingschwarztest.cc:12: /temp/gruenich/dune/complete/dune-istl/dune/istl/overlappingschwarz.hh:1248:18: error: no matching member function for call to 'apply' sdsolver.apply(assigner.lhs(), assigner.rhs()); ~~~~~~~~~^~~~~ /temp/gruenich/dune/complete/dune-istl/dune/istl/overlappingschwarz.hh:662:19: note: in instantiation of function template specialization 'Dune::SeqOverlappingSchwarz<Dune::BCRSMatrix<Dune::FieldMatrix<double, 1, 1>, std::allocator<Dune::FieldMatrix<double, 1, 1> > >, Dune::BlockVector<Dune::FieldVector<double, 1>, std::allocator<Dune::FieldVector<double, 1> > >, Dune::AdditiveSchwarzMode, Dune::SPQR<Dune::BCRSMatrix<Dune::FieldMatrix<double, 1, 1>, std::allocator<Dune::FieldMatrix<double, 1, 1> > > >, std::allocator<Dune::BlockVector<Dune::FieldVector<double, 1>, std::allocator<Dune::FieldVector<double, 1> > > > >::apply<true>' requested here sm.template apply<true>(v, b); ^ /temp/gruenich/dune/complete/dune-istl/dune/istl/overlappingschwarz.hh:1217:58: note: in instantiation of member function 'Dune::SeqOverlappingSchwarzApplier<Dune::SeqOverlappingSchwarz<Dune::BCRSMatrix<Dune::FieldMatrix<double, 1, 1>, std::allocator<Dune::FieldMatrix<double, 1, 1> > >, Dune::BlockVector<Dune::FieldVector<double, 1>, std::allocator<Dune::FieldVector<double, 1> > >, Dune::AdditiveSchwarzMode, Dune::SPQR<Dune::BCRSMatrix<Dune::FieldMatrix<double, 1, 1>, std::allocator<Dune::FieldMatrix<double, 1, 1> > > >, std::allocator<Dune::BlockVector<Dune::FieldVector<double, 1>, std::allocator<Dune::FieldVector<double, 1> > > > > >::apply' requested here SeqOverlappingSchwarzApplier<SeqOverlappingSchwarz>::apply(*this, x, b); ^ /temp/gruenich/dune/complete/dune-istl/dune/istl/test/overlappingschwarztest.cc:176:29: note: in instantiation of member function 'Dune::SeqOverlappingSchwarz<Dune::BCRSMatrix<Dune::FieldMatrix<double, 1, 1>, std::allocator<Dune::FieldMatrix<double, 1, 1> > >, Dune::BlockVector<Dune::FieldVector<double, 1>, std::allocator<Dune::FieldVector<double, 1> > >, Dune::AdditiveSchwarzMode, Dune::SPQR<Dune::BCRSMatrix<Dune::FieldMatrix<double, 1, 1>, std::allocator<Dune::FieldMatrix<double, 1, 1> > > >, std::allocator<Dune::BlockVector<Dune::FieldVector<double, 1>, std::allocator<Dune::FieldVector<double, 1> > > > >::apply' requested here Dune::SPQR<BCRSMat> > spqr_prec0(mat, domains, 1); ^ /temp/gruenich/dune/complete/dune-istl/dune/istl/spqr.hh:134:18: note: candidate function not viable: requires 3 arguments, but 2 were provided virtual void apply(domain_type& x, range_type& b, InverseOperatorResult& res) ^ /temp/gruenich/dune/complete/dune-istl/dune/istl/spqr.hh:164:18: note: candidate function not viable: requires 4 arguments, but 2 were provided virtual void apply (domain_type& x, range_type& b, double reduction, InverseOperatorResult& res) ^ 1 error generated.
Edited by Dominic Kempf@gruenich it compiles but it does NOT link, see my previous message. Do you have any clue what is wrong? I am using SPQR in DUNE-FEM and I don't have any linking issue so FindSuiteSparse seems perfectly working.
Wow, 3 testers, 3 different errors. I have SuiteSparse 4.2.1, Marcos has 4.4.0. This might be a problem source.
Concerning Marcos error, I guess that the Suitesparse check does not gather the correct set of libraries to link for SPQR.
Mine, I have no clue.
Christophs, I think, revealed the hidden assumption of the overlapping schwarz code, that the solver has an apply method taking to plain c arrays (no idea why that is so).
@dominic When I implemented the wrappers I was using SuiteSparse 4.2.1 therefore I am pretty sure that cc_->SPQR_flopcount and the other members are available also in that version
Added 15 commits:
- be1c8442...f9aede6e - 13 commits from branch
master
- 4bac91be - Merge branch 'master' into feature/FS1519-suitesparse-ldl-spqr
- ab1d4887 - Merge branch 'master' into feature/FS1519-suitesparse-ldl-spqr
- be1c8442...f9aede6e - 13 commits from branch
Added 11 commits:
- 3a5c3d6a - [bugfix] Produce a linker error when pardiso lib is not found
- 8fa53e4b - [fixup] correctly nest namespace and ifdef directive
- 05561591 - [pardiso] update the Pardiso preconditioner to current Dune and Pardiso versions
- a3ae2c23 - Typo
- ca6e0ddb - bvector: Fix NaN behaviour of infinity_norm()
- ef237c59 - bcrsmatrix: Fix NaN behaviour of infinity_norm()
- 56be52b3 - matrix: Fix NaN behaviour of infinity_norm()
- 349df800 - Test complex for floating point T only
- 8d58bc2d - [bugfix] fix broken assertion.
- 033153ea - fix includes, remove useless preprocessor variables and use std::exceptions
- 37ac9466 - Merge branch 'feature/FS1519-suitesparse-ldl-spqr' of ssh://gitlab.dune-project.…
Toggle commit listAccording to Tim Davis (the developer of SuiteSparse) to fix my linking error: "You have to link SPQR to LAPACK". I tried to edit manually the CMake cache but it didn't work. What do I have to change into FindSuiteSparse in order to link lapack to SPQR? I tried different things but the error was always there.
Hi @gruenich, thank you for your help. This was exactly what I tried. It add the lapack flag to the linker but the error is still present and it is exactly the same. Maybe a problem of flag ordering?
The fun part is that the wrapper for SPQR which I wrote inside dune-fem links correctly. How is this possible since it uses FindSuiteSparse of dune-common?
Have you deleted the build directory of both common and istl? What code from dune-fem are you referring to? I could not find an executable including SPQR when I had a quick look into fem's repository.
You can compare how the linker was invoked withmake yourtarget VERBOSE=true
and then compare or post both here.Yes I have delete the build directory of both common and istl. In dune-fem there are only the wrappers but there aren't any tests yet. I am using SPQR in one of my codes which are based on dune-fem. If I compile spqrtest the linking flags are
/usr/bin/c++ -O3 -Wall -funroll-loops -finline-functions -fomit-frame-pointer -ffast-math -mfpmath=sse -msse3 -std=c++11 -Wl,-no-as-needed -pthread CMakeFiles/spqrtest.dir/spqrtest.cc.o -o spqrtest -rdynamic /usr/local_machine/dune-trunk/build/dune-common/lib/libdunecommon.a /usr/local_machine/suitesparse-4.4.0/lib/libumfpack.a /usr/local_machine/suitesparse-4.4.0/lib/libcholmod.a /usr/local_machine/suitesparse-4.4.0/lib/libamd.a /usr/local_machine/suitesparse-4.4.0/lib/libcamd.a /usr/local_machine/suitesparse-4.4.0/lib/libcolamd.a /usr/local_machine/suitesparse-4.4.0/lib/libccolamd.a /usr/local_machine/suitesparse-4.4.0/lib/libldl.a /usr/local_machine/suitesparse-4.4.0/lib/libspqr.a /usr/local_machine/suitesparse-4.4.0/lib/libsuitesparseconfig.a /usr/local_machine/suitesparse-4.4.0/lib/libumfpack.a /usr/local_machine/suitesparse-4.4.0/lib/libcholmod.a /usr/local_machine/suitesparse-4.4.0/lib/libamd.a /usr/local_machine/suitesparse-4.4.0/lib/libcamd.a /usr/local_machine/suitesparse-4.4.0/lib/libcolamd.a /usr/local_machine/suitesparse-4.4.0/lib/libccolamd.a /usr/local_machine/suitesparse-4.4.0/lib/libsuitesparseconfig.a -lsuperlu /usr/lib/libf77blas.so.3gf /usr/lib/libatlas.so.3gf /usr/local_machine/parmetis-4.0.3/lib/libparmetis.a /usr/local_machine/parmetis-4.0.3/lib/libmetis.a -lm -pthread /usr/local_machine/openmpi-1.8.4/lib/libmpi.so /usr/local_machine/parmetis-4.0.3/lib/libmetis.a -lm -lgmp -lgmpxx -pthread /usr/local_machine/openmpi-1.8.4/lib/libmpi.so /usr/local_machine/suitesparse-4.4.0/lib/libldl.a /usr/local_machine/suitesparse-4.4.0/lib/libspqr.a -lsuperlu /usr/lib/libf77blas.so.3gf /usr/lib/libatlas.so.3gf /usr/local_machine/parmetis-4.0.3/lib/libparmetis.a /usr/local_machine/parmetis-4.0.3/lib/libmetis.a -lm /usr/local_machine/openmpi-1.8.4/lib/libmpi.so -lgmp -lgmpxx /usr/local_machine/parmetis-4.0.3/lib/libmetis.a -lm /usr/local_machine/openmpi-1.8.4/lib/libmpi.so -lgmp -lgmpxx -Wl,-rpath,/usr/local_machine/openmpi-1.8.4/lib
while with dune-fem are
/usr/bin/c++ -O3 -Wall -funroll-loops -finline-functions -fomit-frame-pointer -ffast-math -mfpmath=sse -msse3 -std=c++11 -Wl,-no-as-needed -pthread CMakeFiles/dune-navier-stokes.dir/dune-navier-stokes.cc.o -o dune-navier-stokes -rdynamic /usr/local_machine/dune-trunk/build/dune-fem/lib/libdunefem.a /usr/local_machine/dune-trunk/build/dune-alugrid/lib/libdunealugrid.a /usr/local_machine/dune-trunk/build/dune-grid/lib/libdunealbertagrid_3d.a /usr/local_machine/dune-trunk/build/dune-grid/lib/libdunealbertagrid_2d.a /usr/local_machine/dune-trunk/build/dune-grid/lib/libdunealbertagrid_1d.a /usr/local_machine/dune-trunk/build/dune-grid/lib/libdunegrid.a /usr/local_machine/dune-trunk/build/dune-geometry/lib/libdunegeometry.a /usr/local_machine/dune-trunk/build/dune-common/lib/libdunecommon.a /usr/local_machine/suitesparse-4.4.0/lib/libumfpack.a /usr/local_machine/suitesparse-4.4.0/lib/libspqr.a /usr/local_machine/suitesparse-4.4.0/lib/libldl.a /usr/local_machine/suitesparse-4.4.0/lib/libcholmod.a /usr/local_machine/suitesparse-4.4.0/lib/libamd.a /usr/local_machine/suitesparse-4.4.0/lib/libcamd.a /usr/local_machine/suitesparse-4.4.0/lib/libcolamd.a /usr/local_machine/suitesparse-4.4.0/lib/libccolamd.a /usr/local_machine/suitesparse-4.4.0/lib/libsuitesparseconfig.a /usr/local_machine/petsc-3.5.3/lib/libpetsc.so /usr/local_machine/petsc-3.5.3/lib/libHYPRE.a /usr/local_machine/petsc-3.5.3/lib/libsuperlu_dist_3.3.a -llapack -lblas /usr/local_machine/parmetis-4.0.3/lib/libparmetis.a /usr/local_machine/parmetis-4.0.3/lib/libmetis.a -lX11 -lssl -lcrypto /usr/local_machine/openmpi-1.8.4/lib/libmpi_usempi.so /usr/local_machine/openmpi-1.8.4/lib/libmpi_mpifh.so -lgfortran -lquadmath -lm /usr/local_machine/openmpi-1.8.4/lib/libmpi_cxx.so -lstdc++ /usr/local_machine/openmpi-1.8.4/lib/libmpi.so -lgcc_s -lpthread -ldl /usr/local_machine/zoltan-3.8/lib/libzoltan.a /usr/local_machine/parmetis-4.0.3/lib/libparmetis.a /usr/local_machine/parmetis-4.0.3/lib/libmetis.a -lm -pthread /usr/local_machine/openmpi-1.8.4/lib/libmpi.so -pthread /usr/local_machine/openmpi-1.8.4/lib/libmpi.so -lz /usr/local_machine/suitesparse-4.4.0/lib/libumfpack.a /usr/local_machine/suitesparse-4.4.0/lib/libcholmod.a /usr/local_machine/suitesparse-4.4.0/lib/libamd.a /usr/local_machine/suitesparse-4.4.0/lib/libcamd.a /usr/local_machine/suitesparse-4.4.0/lib/libcolamd.a /usr/local_machine/suitesparse-4.4.0/lib/libccolamd.a /usr/local_machine/suitesparse-4.4.0/lib/libldl.a /usr/local_machine/suitesparse-4.4.0/lib/libspqr.a /usr/local_machine/suitesparse-4.4.0/lib/libsuitesparseconfig.a /usr/local_machine/suitesparse-4.4.0/lib/libumfpack.a /usr/local_machine/suitesparse-4.4.0/lib/libcholmod.a /usr/local_machine/suitesparse-4.4.0/lib/libamd.a /usr/local_machine/suitesparse-4.4.0/lib/libcamd.a /usr/local_machine/suitesparse-4.4.0/lib/libcolamd.a /usr/local_machine/suitesparse-4.4.0/lib/libccolamd.a /usr/local_machine/suitesparse-4.4.0/lib/libsuitesparseconfig.a -lsuperlu /usr/lib/libf77blas.so.3gf /usr/lib/libatlas.so.3gf /usr/local_machine/parmetis-4.0.3/lib/libparmetis.a /usr/local_machine/parmetis-4.0.3/lib/libmetis.a -lm -pthread /usr/local_machine/openmpi-1.8.4/lib/libmpi.so /usr/local_machine/parmetis-4.0.3/lib/libmetis.a -lm -lm /usr/local_machine/dune-trunk/build/dune-grid/lib/libdunegrid.a /usr/local_machine/ug-3.11.0/lib/libugS2.a /usr/local_machine/ug-3.11.0/lib/libugS3.a /usr/local_machine/ug-3.11.0/lib/libdevS.a /usr/local_machine/dune-trunk/build/dune-geometry/lib/libdunegeometry.a /usr/local_machine/dune-trunk/build/dune-common/lib/libdunecommon.a /usr/local_machine/parmetis-4.0.3/lib/libparmetis.a /usr/local_machine/parmetis-4.0.3/lib/libmetis.a -lm -pthread /usr/local_machine/openmpi-1.8.4/lib/libmpi.so /usr/local_machine/parmetis-4.0.3/lib/libmetis.a -lm -lgmp -lgmpxx -pthread /usr/local_machine/openmpi-1.8.4/lib/libmpi.so /usr/local_machine/petsc-3.5.3/lib/libpetsc.so /usr/local_machine/petsc-3.5.3/lib/libHYPRE.a /usr/local_machine/petsc-3.5.3/lib/libsuperlu_dist_3.3.a -llapack -lblas /usr/local_machine/parmetis-4.0.3/lib/libparmetis.a /usr/local_machine/parmetis-4.0.3/lib/libmetis.a -lX11 -lssl -lcrypto /usr/local_machine/openmpi-1.8.4/lib/libmpi_usempi.so /usr/local_machine/openmpi-1.8.4/lib/libmpi_mpifh.so -lgfortran -lquadmath -lm /usr/local_machine/openmpi-1.8.4/lib/libmpi_cxx.so -lstdc++ /usr/local_machine/openmpi-1.8.4/lib/libmpi.so -lgcc_s -lpthread -ldl /usr/local_machine/dune-trunk/build/dune-fem/lib/libdunefem.a /usr/local_machine/dune-trunk/build/dune-alugrid/lib/libdunealugrid.a /usr/local_machine/dune-trunk/build/dune-grid/lib/libdunealbertagrid_3d.a /usr/local_machine/dune-trunk/build/dune-grid/lib/libdunealbertagrid_2d.a /usr/local_machine/dune-trunk/build/dune-grid/lib/libdunealbertagrid_1d.a /usr/local_machine/dune-trunk/build/dune-grid/lib/libdunegrid.a /usr/local_machine/dune-trunk/build/dune-geometry/lib/libdunegeometry.a /usr/local_machine/dune-trunk/build/dune-common/lib/libdunecommon.a /usr/local_machine/dune-trunk/build/dune-grid/lib/libdunealbertagrid_2d.a /usr/local_machine/alberta-3.0.0/lib/libalberta_2d.so /usr/local_machine/dune-trunk/build/dune-grid/lib/libdunegrid.a /usr/local_machine/dune-trunk/build/dune-fem/lib/libdunefem.a /usr/local_machine/dune-trunk/build/dune-alugrid/lib/libdunealugrid.a /usr/local_machine/dune-trunk/build/dune-grid/lib/libdunealbertagrid_3d.a /usr/local_machine/dune-trunk/build/dune-grid/lib/libdunealbertagrid_2d.a /usr/local_machine/dune-trunk/build/dune-grid/lib/libdunealbertagrid_1d.a /usr/local_machine/dune-trunk/build/dune-grid/lib/libdunegrid.a /usr/local_machine/dune-trunk/build/dune-geometry/lib/libdunegeometry.a /usr/local_machine/dune-trunk/build/dune-common/lib/libdunecommon.a /usr/local_machine/alberta-3.0.0/lib/libalberta_utilities.so -lm -lltdl /usr/lib/libf77blas.so.3gf /usr/lib/libatlas.so.3gf /usr/local_machine/suitesparse-4.4.0/lib/libumfpack.a /usr/local_machine/suitesparse-4.4.0/lib/libcholmod.a /usr/local_machine/suitesparse-4.4.0/lib/libamd.a /usr/local_machine/suitesparse-4.4.0/lib/libcamd.a /usr/local_machine/suitesparse-4.4.0/lib/libcolamd.a /usr/local_machine/suitesparse-4.4.0/lib/libccolamd.a /usr/local_machine/suitesparse-4.4.0/lib/libsuitesparseconfig.a /usr/local_machine/suitesparse-4.4.0/lib/libspqr.a /usr/local_machine/suitesparse-4.4.0/lib/libldl.a /usr/local_machine/petsc-3.5.3/lib/libpetsc.so /usr/local_machine/petsc-3.5.3/lib/libHYPRE.a /usr/local_machine/petsc-3.5.3/lib/libsuperlu_dist_3.3.a -llapack -lblas /usr/local_machine/parmetis-4.0.3/lib/libparmetis.a /usr/local_machine/parmetis-4.0.3/lib/libmetis.a -lX11 -lssl -lcrypto /usr/local_machine/openmpi-1.8.4/lib/libmpi_usempi.so /usr/local_machine/openmpi-1.8.4/lib/libmpi_mpifh.so -lgfortran -lquadmath -lm /usr/local_machine/openmpi-1.8.4/lib/libmpi_cxx.so -lstdc++ /usr/local_machine/openmpi-1.8.4/lib/libmpi.so -lgcc_s -lpthread -ldl /usr/local_machine/zoltan-3.8/lib/libzoltan.a -lm -lsuperlu /usr/local_machine/ug-3.11.0/lib/libugS2.a /usr/local_machine/ug-3.11.0/lib/libugS3.a /usr/local_machine/ug-3.11.0/lib/libdevS.a -lgmp -lgmpxx /usr/local_machine/alberta-3.0.0/lib/libalberta_2d.so /usr/local_machine/alberta-3.0.0/lib/libalberta_utilities.so -lm -lltdl -lz -Wl,-rpath,/usr/local_machine/petsc-3.5.3/lib:/usr/local_machine/openmpi-1.8.4/lib:/usr/local_machine/alberta-3.0.0/lib /usr/bin/ld: warning: libblas.so.3gf, needed by /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libsuperlu.so, may conflict with libblas.so.3 /usr/bin/ld: warning: libblas.so.3gf, needed by /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libsuperlu.so, may conflict with libblas.so.3 /usr/bin/ld: warning: libblas.so.3gf, needed by /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libsuperlu.so, may conflict with libblas.so.3
The second one works, but it is crazy long so could be difficult to compare against the first one.
PS It is truncated because is too long; if you edit it, you can see the full line!
Edited by Marco AgneseAdded 14 commits:
- 37ac9466...35c9a1bf - 13 commits from branch
master
- 7c3bea4d - Merge branch 'master' into feature/FS1519-suitesparse-ldl-spqr
- 37ac9466...35c9a1bf - 13 commits from branch
Added 22 commits:
- b250bf60 - Adjust Doxygen comments.
- 7a4c7de8 - [suitesparse] Create test for SPQR
- 673d1a60 - [suitesparse] Create wrapper for SPQR solver
- a34d685c - [suitesparse] Create wrapper for LDL linear solver
- e9986a89 - [umfpack] Factorization extraction, make colcomp public
- 8394a69a - [suitesparse] Cleanup of SPQR wrapper
- 7846d481 - [suitesparse] Fixed segmentation fault in SPQR
- a973fabb - [suitesparse] LDL wrapper derived from Dune::InverseOperator
- 2e74d580 - [suitesparse][cleanup] Remove useless parantheses
- 69b9d30c - [suitesparse] Activate SPQR test
- f1d7c040 - [suitesparse] Add test for LDL wrapper
- aa96d622 - [suitesparse] Add setOption to LDL wrapper for compatibility
- 0fec2806 - [suitesparse][cleanup] Remove useless class variable in SPQR wrapper
- f229b274 - [suitesparse][cleanup] Format includes, white space changes.
- 9ec8cbf8 - [CMake][suitesparse] Add ldltest and spqr test to build system
- 7102ea6e - [SuiteSparse] Enable CMake checks for LDL and SPQR
- fe80c39a - test overlappingschwartz also with SPQR and LDL
- 9e953de2 - fix includes, remove useless preprocessor variables and use std::exceptions
- c623d17d - fix include config
- 844e2c06 - [bugfix] Produce a linker error when pardiso lib is not found
- bf9378c7 - [fixup] correctly nest namespace and ifdef directive
- ca3de931 - [pardiso] update the Pardiso preconditioner to current Dune and Pardiso versions
Toggle commit listAdded 19 commits:
- 4edb4d52 - Adjust Doxygen comments.
- 3fdfba90 - [suitesparse] Create test for SPQR
- 858d1c9e - [suitesparse] Create wrapper for SPQR solver
- 6f037b8a - [suitesparse] Create wrapper for LDL linear solver
- a2b8e1d2 - [umfpack] Factorization extraction, make colcomp public
- 51ab8358 - [suitesparse] Cleanup of SPQR wrapper
- 3f6f3457 - [suitesparse] Fixed segmentation fault in SPQR
- 6868b618 - [suitesparse] LDL wrapper derived from Dune::InverseOperator
- 334aafe0 - [suitesparse][cleanup] Remove useless parantheses
- 6193b962 - [suitesparse] Activate SPQR test
- ea1ad1bb - [suitesparse] Add test for LDL wrapper
- c5d21c89 - [suitesparse] Add setOption to LDL wrapper for compatibility
- bd1e6c44 - [suitesparse][cleanup] Remove useless class variable in SPQR wrapper
- 253b29b0 - [suitesparse][cleanup] Format includes, white space changes.
- 69baaf8f - [CMake][suitesparse] Add ldltest and spqr test to build system
- 6fa91d76 - [SuiteSparse] Enable CMake checks for LDL and SPQR
- 7f30864f - test overlappingschwartz also with SPQR and LDL
- 3db040a0 - fix includes, remove useless preprocessor variables and use std::exceptions
- 6a47c649 - fix include config
Toggle commit list@gruenich Yes I agree with you. My issue with spqrtest is a linking issue caused by FindSuiteSparse. I am going to open an issue in dune-common. The only commit that I would remove from the merge is 7f30864f. Please do the merge.
Hi @gruenich, can we merge this?
Added 29 commits:
- 6a47c649...6b890e74 - 13 commits from branch
master
- 9ddfaccb - Adjust Doxygen comments.
- a39bd5a8 - [suitesparse] Create test for SPQR
- 36a20860 - [suitesparse] Create wrapper for SPQR solver
- 10c05e6f - [suitesparse] Create wrapper for LDL linear solver
- 7f1f5934 - [umfpack] Factorization extraction, make colcomp public
- 9d25e1af - [suitesparse] Cleanup of SPQR wrapper
- 1edf9bda - [suitesparse] Fixed segmentation fault in SPQR
- 28e812ee - [suitesparse] LDL wrapper derived from Dune::InverseOperator
- 94acdc9c - [suitesparse][cleanup] Remove useless parantheses
- 8a0fba38 - [suitesparse] Activate SPQR test
- 8ff42cf9 - [suitesparse] Add test for LDL wrapper
- 9efd2742 - [suitesparse] Add setOption to LDL wrapper for compatibility
- b0d1e24f - [suitesparse][cleanup] Remove useless class variable in SPQR wrapper
- 4bb59d9a - [suitesparse][cleanup] Format includes, white space changes.
- 823a76c5 - [CMake][suitesparse] Add ldltest and spqr test to build system
- d0b42794 - [SuiteSparse] Enable CMake checks for LDL and SPQR
Toggle commit list- 6a47c649...6b890e74 - 13 commits from branch
mentioned in commit ea087758
mentioned in merge request !20 (merged)
mentioned in commit a6f130c0
@gruenich I was a bit slow to react here. Your assumption that spqrtest works for everybody was wrong. My above error is alive and kickin:
/home/dominic/dune/dune-istl/dune/istl/spqr.hh: In member function ‘virtual void Dune::SPQR<Dune::BCRSMatrix<Dune::FieldMatrix<K, n, p>, TA> >::apply(Dune::SPQR<Dune::BCRSMatrix<Dune::FieldMatrix<K, n, p>, TA> >::domain_type&, Dune::SPQR<Dune::BCRSMatrix<Dune::FieldMatrix<K, n, p>, TA> >::range_type&, Dune::InverseOperatorResult&)’: /home/dominic/dune/dune-istl/dune/istl/spqr.hh:154:42: error: ‘cholmod_common’ has no member named ‘SPQR_flopcount’ std::cout<<"Flops Taken: "<<cc_->SPQR_flopcount<<std::endl; ^ /home/dominic/dune/dune-istl/dune/istl/spqr.hh:155:44: error: ‘cholmod_common’ has no member named ‘SPQR_analyze_time’ std::cout<<"Analysis Time: "<<cc_->SPQR_analyze_time<<" s"<<std::endl; ^ /home/dominic/dune/dune-istl/dune/istl/spqr.hh:156:45: error: ‘cholmod_common’ has no member named ‘SPQR_factorize_time’ std::cout<<"Factorize Time: "<<cc_->SPQR_factorize_time<<" s"<<std::endl; ^ /home/dominic/dune/dune-istl/dune/istl/spqr.hh:157:45: error: ‘cholmod_common’ has no member named ‘SPQR_solve_time’ std::cout<<"Backsolve Time: "<<cc_->SPQR_solve_time<<" s"<<std::endl;
To be honest, I have no idea, why it would work for you. Why should
cholmod_common
have aSPQR
-related methods? I use libsuitesparse-dev from Debian 8.2 in version 4.2.1.@dominic With SuiteSparse 4.4.0 I don't experience the error. But, also with SuiteSparse 4.2.1 everything worked. I have always compiled SuiteSparse from the source, that is the only difference which I can see.
mentioned in issue #5 (closed)
See #5 (closed) from now on.