Core Concepts
MultiPrecisionArrays.jl provides data structures and solvers for iterative refinement, offering valuable insights into precision tradeoffs.
Abstract
The content discusses the use of MultiPrecisionArrays.jl for iterative refinement in Julia. It covers various aspects such as storage/time tradeoffs, factorization precision, interprecision transfers, and more. The article delves into the implementation details and performance comparisons of different approaches.
Introduction to MultiPrecisionArrays.jl
Provides data structures and algorithms for iterative refinement.
Discusses classic iterative refinement and convergence properties.
Integral Equations Example
Demonstrates an example using Gmat(N) function.
Compares results with different values of alpha.
Classic Example: Double-Single Precision
Shows a Julia code implementing IR in this case.
Motivates the data structures in MultiPrecisionArrays.jl.
Running MultiprecisionArrays: I
Compares execution time between double and single precision LU factorization.
Harvesting Iteration Statistics: Part I
Illustrates iteration statistics using reporting keyword argument.
Half Precision
Discusses two half-precision formats supported by Julia.
Highlights limitations of using half precision due to lack of support in LAPACK/BLAS.
Using Low Precision Factorization as Preconditioner
Presents options if IR fails to converge, focusing on preconditioning methods like Krylov-IR and GMRES-IR.
Memory Allocations: I & II
Compares memory allocations for different approaches like BiCGSTAB-IR and MPBArray structure.
Details & Convergence Theory
Explains termination criteria for the while loop in IR.
Discusses interprecision transfers and convergence theory estimates.
Evaluating Residual in Extended Precision
Explores evaluating residuals in higher precision TR than working precision TW.
Appendix A: Interprecision Transfers: Part II
Analyzes cost comparison between MPS and LPS approaches for triangular solves vs factorizations.
Conclusion & Recommendations
Stats
This package provides data structures and solvers for several variants of iterative refinement.
The current version is v0.1.0 requiring AbstractArray{TW,2} where TW is single or double.
Quotes
"Iterative refinement is a perfect example of a storage/time tradeoff."
"Factorizing a high-precision matrix A means copying it into low precision."