PLASMA version 2.0 has been released. This release extends the functionality and robustness of PLASMA version 1.0.
PLASMA version 1.0 was released in November 2008 as a proof-of-concept implementation of a linear equations solver based on LU factorization, SPD linear equations solver based on Cholesky factorization and least squares problem solver based on QR and LQ factorizations, with support for real arithmetic in double precision only.
PLASMA version 2.0 provides improved stability and performance along with the following new features:
- Multiple Precision Support:
- Real arithmetic and complex arithmetic are supported in both single precision and double precision. Only complex-double code is developed. complex-single, real-double and real-single code is automatically generated from the complex-double reference implementation.
- LAPACK Interface and Native Interface:
- All computational routines are available in two versions. One accepts input matrices in LAPACK column-major layout, second one accepts input matrices in tile layout, which is the native layout for PLASMA. The first option provides for convenience at the expense of translation overhead, the second one provides increased performance at the cost of ease of use. Conversion routines between the LAPACK layout and the tile layout are provided.
- LAPACK-Compliant Error Handling:
- The error codes returned by the computational routines with LAPACK interface follow LAPACK convention for both numerical errors, related to the numerical properties of the input matrices, as well as errors caused by illegal values of input parameters.
- LAPACK-Derived Testing Suite:
- The software is accompanied by a test suite derived from the one of LAPACK, which in an automated fashion generates thousands of calls, testing the software’s behavior under normal conditions, as well as in the presence of illegal arguments and numerically deficient matrices.
- Convenient Workspace Allocation:
- Whenever possible, PLASMA allocates workspaces internally. In situations, where workspaces serve the purpose of passing data from one routine to another, e.g., from a factorization routine to a solve routine, PLASMA provides straightforward helper routines to take care of the allocations.
- Thread Safety:
- PLASMA is thread safe, which means that multiple instances of PLASMA can co-exist within the address space of a single process. In other words, a single process can create multiple threads and each of these threads can use an independent instance and change its settings without conflicts with other threads.
- Mixed-Precision Solver Prototype:
- A prototype of a mixed-precision solver based on the LU factorization is included. Currently, the implementation is not optimized for performance and does not provide performance benefits over the fixed-precision algorithm. It is only included to demonstrate the technique.
PLASMA can be downloaded from the software section of the PLASMA web site along with a Python installer to assist with the installation of PLASMA.
There is documentation available and a user forum for support.
Thank you for your interest from the PLASMA development team