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 16.06.01
What's New and What's Coming Up
- Version 15 improves the iterative solver for unsymmetric systems.
- Version 15 includes GPU-accelerated libraries.
- 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
- Multithreaded Out-of-Core Symmetric Solver
- 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 compiler optimization in certain parts of WSMP had to be turned down in the libraries compiled using Intel compilers due to compiler bugs. This is likely to adversely impact performance. Please send e-mail to (wsmp |AT| us |DOT| ibm |DOT| com) for custom compiled libraries for your application if speed is critical.
- 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 AIX, setting the environment variable RT_GRQ to ON if smt_threads are enabled can result in performance degradation. RT_GRQ must be set to OFF if smt_threads are enabled and ON if smt_threads are disabled.
- 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