Watson Sparse Matrix Package (WSMP) is a collection of algorithms for efficiently solving large systems of linear equations whose coefficient matrices are sparse. 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 node can either be a uniprocessor or a shared-memory multiprocessor.
WSMP Version 13.11.01
What's New and What's Coming Up
- Version 13 includes a new Part III, which contains multithreaded iterative solvers for symmetric positive definite and general sparse systems.
- Version 13 includes a multithreaded out-of-core symmetric solver without pivoting.
- Cygwin version is now available (32-bit only).
- An MPI-based symmetric indefinite solver with pivoting is available in Version 12 and later.
- 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 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.
- The distributed-memory parallel unsymmetric solver can use only one thread per process when using an MPI implementation that is not thread-safe. Therefore, the WSETMAXTHRDS routine must be used to set the number of threads to 1 in such an environment. MPI_INIT_THREAD must be used for initializing MPI-2 with the appropriate level of thread support.
- Running WSMP in 64-bit mode with multiple threads on certain Linux distributions can result in severe memory fragmentation or memory leaks. This is due to a bug in the glibc malloc library, and is not a WSMP bug.
- C++ wrapper for the message passing library, thanks to Rich Lee at Stanford Linear Accelerator Center.
- Link for downloading GOTO BLAS libraries to speed up WSMP on certain platforms.
- 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)
- wsmp-AIX.tar.gz (~ 16 MB)
- wsmp-Linux64-Intel.tar.gz (~ 14 MB)
- wsmp-Linux64-GNU.tar.gz (~ 11 MB)
- wsmp-Linux64-Power.tar.gz (~ 16 MB)
- wsmp-Linux64-Other_x86.tar.gz (~ 11 MB)
- wsmp-BGP.tar.gz (~ 18 MB)
- wsmp-MacOS.tar.gz (~ 13 MB)
- wsmp-Cray.tar.gz (~ 6 MB)
- wsmp-Cygwin.tar.gz (~ 2 MB)
E-mail contact for WSMP: wsmp |AT| us |DOT| ibm |DOT| com