Papers
Topics
Authors
Recent
Gemini 2.5 Flash
Gemini 2.5 Flash
131 tokens/sec
GPT-4o
10 tokens/sec
Gemini 2.5 Pro Pro
47 tokens/sec
o3 Pro
4 tokens/sec
GPT-4.1 Pro
38 tokens/sec
DeepSeek R1 via Azure Pro
28 tokens/sec
2000 character limit reached

MPLAPACK version 2.0.1 user manual (2109.13406v2)

Published 28 Sep 2021 in cs.MS

Abstract: The MPLAPACK (formerly MPACK) is a multiple-precision version of LAPACK (https://www.netlib.org/lapack/). MPLAPACK version 2.0.1 is based on LAPACK version 3.9.1 and translated from Fortran 90 to C++ using FABLE, a Fortran to C++ source-to-source conversion tool (https://github.com/cctbx/cctbx_project/tree/master/fable/). MPLAPACK version 2.0.1 provides the real and complex version of MPBLAS, and the real and complex versions of MPLAPACK support all LAPACK features: solvers for systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems, and related matrix factorizations except for mixed-precision routines. The MPLAPACK defines an API for numerical linear algebra, similar to LAPACK. It is easy to port legacy C/C++ numerical codes using MPLAPACK. MPLAPACK supports binary64, binary128, FP80 (extended double), MPFR, GMP, and QD libraries (double-double and quad-double). Users can choose MPFR or GMP for arbitrary accurate calculations, double-double or quad-double for fast 32 or 64-decimal calculations. We can consider the binary64 version as the C++ version of LAPACK. Moreover, it comes with an OpenMP accelerated version of MPBLAS for some routines and CUDA (A100 and V100 support) for double-double versions of Rgemm and Rsyrk. The peak performances of the OpenMP version are almost proportional to the number of cores, and the performances of the CUDA version are impressive, and approximately 400-600 GFlops. MPLAPACK is available at GitHub (https://github.com/nakatamaho/mplapack/) under the 2-clause BSD license.

Citations (6)

Summary

  • The paper presents MPLAPACK 2.0.1 as a comprehensive manual that adapts LAPACK algorithms for multiple-precision arithmetic with full function support.
  • It highlights hardware acceleration improvements with OpenMP and CUDA, achieving up to 592 GFlops on NVIDIA GPUs for key routines.
  • The manual underscores broad compatibility across platforms and discusses future integration with computational frameworks to boost usability.

Overview of MPLAPACK Version 2.0.1

The MPLAPACK library, an adaptation of the LAPACK library for multiple-precision arithmetic, represents an advance in numerical linear algebra by providing higher precision solutions to complex mathematical problems. MPLAPACK version 2.0.1, based on the LAPACK 3.9.1, confirms its utility through support for all major LAPACK functions with precision-independent programming. This version aligns its functionalities with well-known numerical operations such as solving systems of linear equations, eigenvalue problems, and singular value problems while maintaining compatibility with a multitude of floating-point formats including binary64, binary128, FP80, GMP, and MPFR.

Key Features and Enhancements

MPLAPACK 2.0.1 introduces several noteworthy enhancements that extend its functionality and improve computational performance.

  • Comprehensive Function Support: This release extends full support for LAPACK functions, including those involving complex and rectangular full-packed (RFP) formats.
  • Precision Flexibility: By leveraging multiple precision libraries like MPFR and GMP, MPLAPACK can compute results with increased numerical accuracy, for instance, reaching up to 400-600 GFlops on specialized hardware such as NVIDIA Tesla GPUs.
  • Hardware Acceleration: It takes advantage of OpenMP acceleration for some MPBLAS routines and provides CUDA support, which significantly enhances the execution speed for operations involving double-double precision matrices on NVIDIA GPUs.
  • Broad Compatibility: The library supports major operating systems and compilers, allowing seamless integration across various platforms, including Windows, macOS, and different Linux distributions.

Numerical Results and Performance Evaluation

This version emphasizes precision computation, addressing mathematical challenges such as ill-conditioned problems or large-scale simulations where standard double precision is insufficient. The paper details comprehensive benchmarking across diverse hardware configurations, demonstrating the efficiency improvements introduced by OpenMP and CUDA-based accelerations. For instance, in Rgemm and Rsyrk functions, the implementation achieves up to 592 GFlops using the NVIDIA A100 GPU without CPU-GPU data transfer overhead.

Implications and Future Directions

The implications of these advancements in MPLAPACK 2.0.1 are profound, especially in fields that demand high-precision computations such as quantum computing, computational physics, and numerical simulations. With valid applications ranging from semidefinite programming to precision-demanding scientific computations, the library stands as a vital tool for researchers and engineers.

Looking forward, MPLAPACK's roadmap includes optimizing more BLAS and LAPACK routines for high precision and integrating the library with common computational frameworks like Python and MATLAB. Additionally, upcoming releases plan to simplify API interactions by possibly moving to a template-based system, thus enhancing usability for developers dealing with various numeric types.

In conclusion, the MPLAPACK 2.0.1 release embodies a meticulous and systematic upgrade, ensuring that numerical precision in computation can be reliably achieved and maintained across various platforms and applications. This contributes to a broad lineage of efforts aimed at expanding the capabilities and reach of numerical linear algebra, ultimately serving as a cornerstone for precision-critical computational tasks.