Registered Member
|
All,
Could anyone share experience on performance and ease of implementation into Eigen from using SuperLU and Umfpack module? I am looking for a linear solver for a square sparse which will be hugh in dimension but may contains only 30%-50% of non-zero element. I notice many sparse solver people using Umfpack. Is this mean SuperLU is inferior? Best, |
Moderator
|
from my experience, SuperLU is often faster than UmfPack but it might exhibit some numerical issues due to static pivoting. Note that 30%-50% of non-zero is rather very dense, not sparse. Typical sparse matrices for non-distributed solvers go from 10k^2 to 1M^2 in sizes, with 6 to 100 non-zeros per column (or row).
|
Registered Member
|
Geal, Thks for your sharing. Good to know the line between dense and sparse in order to gain performance benefit. In the near future when my 2D numerical problem will have a lot more elements (more than 10k-by-10k with 5 - 6 non-zero per row). I started off with small problem to gain more familiarity with Eigen. I have some few more questions: 1.) Did you Eigen team happen to revert back the contents in "Tutorial Page 9 - Sparse Matrix" yesterday? I accessed the link yesterday and noticed the it has changed to one older version. 2.) With messing with Eigen 3.1.0Alpha whole day, I still can't get either SuperLU or UmfPack working. I am using department facilities so I prefer to add all header files in my project folder instead of complier folder (I use #include "Eigen/,,,," instead of <Eigen/...>. Can anyone guide me how to do this and what additional library I need to download in order to allow me using sparse solver? What I did is download SuperLU and SparseSuit. Look into what SuperLUSupport.h and UmfPackSupport.h call for. Then copy any headers required by SuperLUSupport.h and UmfPackSupport.h from downloaded SuperLU/SparseSuit into Eigen/src/SuperLUSupport or Eigen/src/UmfPackSupport. Is this a possible method to get this work? Big Thanks... |
Moderator
|
You should rather configure your build system to add include paths. How to do this depends on your build system. If you directly call gcc, the option is -I/path/to/SuperLU/include/. You also have to link against libsuperlu and a blas library, e.g., you can compile the Eigen's one:
$ make blas |
Registered users: Bing [Bot], Google [Bot], Yahoo [Bot]