Archive for the ‘Sparse Matrices’ Category

Domen Stadler Project consist of Visual Studio solution for mumps solver library. It also include input files for testing and a WinForm to modify Mumps source files in order to compile and use them under the 64-bit or 32-bit windows environment.

Below I have documented the compilation of MUMPS 4.10.0 with 8 Byte integers on 64-bit Windows. One may need 8 Byte integers in the case of the serial version of MUMPS when the number of entries in the factor is more than 2^32. METIS For ordering, I employ METIS and it must be compatible with […]

This text and example files are contributed by Carlo de Falco The files are at /files/contrib/carlo.defalco/ I assume that you have already read Sample code in C++ to run MUMPS. The goal in this section is to compare two codes to run the mumps solver in serial and in parallel.  We would like to develop a command line tool that will […]

Domen Stadler Files are in /files/contrib/domen.stadler/ For startes, this work was performed on the Windows XP 32 bit computer, but there is no reason to occur any troubles on other windows platforms. To be able to compile, one would need following software: -MUMPS source code ( (tried with versions 4.8.0 and 4.10.0), -WinMUMPS package ( […]

The code in run_sparse_solver.cpp demonstrates how one can use LinearSolver to programm a tool similar to run_taucs and run_mumps. Yet now the code is written for any sparse solver for that the LinearSolver interface has been implemented. When you start reading the code, it is good first to skip function readArguments and just browse main. Let us now […]

So far we have defined an interface in the class LinearSolver and then implemented it for different solvers: UMFPACK, TAUCS, MUMPS and PARDISO. The implementation in solver_*.cpp uses solvers.h but the application code actually needs almost nothing from these files. The word almost means that it is still necessary to instantiate a particular solver class […]

Solvers MUMPS and PARDISO are different from TAUCS and UMFPACK in respect that they posses more functionality within the same interface. For example they can work with positive definite, indefinite or unsymmetric matrices and the switch is done through a single variable. They also support out-of-core and this setting  is controlled by another variable. The LinearSolver interface for […]

TAUCS library contains several solvers and there are accordingly more classes in solver_taucs.cpp. Each solver has its own class:  TAUCSllt – Cholesky decomposition column by column (slow); TAUCSldlt – LDLT factorization for indefinite matrices (slow); TAUCSllt_mf – Multifrontal supernodal Cholesky decomposition (the best among TAUCS library for positive definite matrices); TAUCSllt_ll – Left-looking supernodal Cholesky decomposition; TAUCSllt_ooc – […]

The complete code that implement the LinearSolver interface for the UMFPACK solver is in solver_umfpack.cpp including the declaration of the class UMFPACK. This may look unusual but the reason is quite simple. The declaration of the class UMFPACK is used only to compile the code of the class and it will be never accessed from the application code directly. The […]

Two specialized drivers, run_taucs.cpp and run_mumps.cpp presented previously show a common problem when one needs to deal with a sparse solver. If you expect that in the future you may need to change a sparse solver, you must be then ready to modify the part of your code that works with the sparse solver. For example all algorithms that use […]