Watson Sparse Matrix Package (WSMP) - overview
Note: Please use the "WSMP temporary license files" tab above to download just the license files without upgrading the software.
Watson Sparse Matrix Package (WSMP) is a collection of algorithms for efficiently solving large sparse systems of linear equations. This high-performance, robust, and easy-to-use software can be used as a serial package, or in a shared-memory multiprocessor environment, or as a scalable parallel solver in a message-passing environment, where each process can be either serial or multithreaded.
WSMP Version 17.07.01
What's New and What's Coming Up
- If you need WSMP and PWSMP libraries for a platform-compiler combination missing here, please send e-mail to (wsmp |AT| us |DOT| ibm |DOT| com).
- WSMP Users' Guide Part I - Symmetric Direct Solvers
- WSMP Users' Guide Part II -- General Direct Solvers
- WSMP Users' Guide Part III -- Iterative Solvers
Related Papers and Reports
- Blocked ILU-based preconditioners and solvers
- Sparse matrix factorization on massively parallel computers
- Comparison of iterative solvers for SPD systems
- Adaptive techniques for improving the performance of incomplete factorization preconditioning
- Comparison of general direct solvers
- Unsymmetric solver algorithms
- Shared- and distributed-memory parallel general solver
- Symmetric solver details
- Parallel symmetric algorithm
Known Bugs and Issues
- The Linux libraries included in the standard distribution below may not work due to compiler, glibc, or MPI incompatibility. Please send e-mail to (wsmp |AT| us |DOT| ibm |DOT| com) if you are unable to run the example programs.
- MPI_THREAD_MULTIPLE thread support must be requested from mpi_init_thread for the distributed-memory unsymmetric solver.
- Please refer to the section titled "Recent Changes and Other Important Notes" in the Users' Guide before upgrading to a newer version of the software.
- On Linux, setting the environment variables MALLOC_TRIM_THRESHOLD_ and MALLOC_MMAP_MAX_ to -1 and 0, respectively, yields the best performance, especially for the unsymmetric and symmetric indefinite solvers. However, setting MALLOC_TRIM_THRESHOLD_ to -1 can lead to memory problems when multiple processes are running on the same node/machine. In such cases, a reasonable value between 1000000 and 100000000 could be used.
- On AIX, the environment variables SPINLOOPTIME and YIELDLOOPTIME must be set to 200, AIXTHREAD_COND_DEBUG and AIXTHREAD_MUTEX_DEBUG must be set to OFF.
- memchk.c (to check the amount of stack and heap space available to you)
- triplet2cs.c (to convert a sparse matrix from triplet to CSC/CSR format)
- wgsmp_ex1.f, wgsmp_ex2.f (small tests for the unsymmetric solver)
- wssmp_ex1.f, wssmp_ex2.f (small tests for the symmetric solver)
- pwgsmp_ex1.f (test for the distributed-memory parallel unsymmetric solver)
- pwssmp_ex1.f, pwssmp_ex2.f, pwssmp_ex3.f (tests for message-passing symmetric solver)
- zgsmp_ex1.f, pzgsmp_ex1.f, pzgsmp_ex2.f (tests for complex unsymmetric direct solvers)
- zssmp_ex1.f, pzssmp_ex1.f, pzssmp_ex2.f, pzssmp_ex3.f (tests for serial and parallel symmetric complex interface)
- wismp_ex1.f, wismp_ex2.c, wismp_ex3.f, zismp_ex1.f, zismp_ex2.c, zismp_ex3.f (tests for real and complex iterative solvers)
E-mail contact for WSMP: wsmp |AT| us |DOT| ibm |DOT| com