A User-Friendly Hybrid Sparse Matrix Class in C++
arXiv:1805.03380 · doi:10.1007/978-3-319-96418-8_50
Abstract
When implementing functionality which requires sparse matrices, there are numerous storage formats to choose from, each with advantages and disadvantages. To achieve good performance, several formats may need to be used in one program, requiring explicit selection and conversion between the formats. This can be both tedious and error-prone, especially for non-expert users. Motivated by this issue, we present a user-friendly sparse matrix class for the C++ language, with a high-level application programming interface deliberately similar to the widely used MATLAB language. The class internally uses two main approaches to achieve efficient execution: (i) a hybrid storage framework, which automatically and seamlessly switches between three underlying storage formats (compressed sparse column, coordinate list, Red-Black tree) depending on which format is best suited for specific operations, and (ii) template-based meta-programming to automatically detect and optimise execution of common expression patterns. To facilitate relatively quick conversion of research code into production environments, the class and its associated functions provide a suite of essential sparse linear algebra functionality (eg., arithmetic operations, submatrix manipulation) as well as high-level functions for sparse eigendecompositions and linear equation solvers. The latter are achieved by providing easy-to-use abstractions of the low-level ARPACK and SuperLU libraries. The source code is open and provided under the permissive Apache 2.0 license, allowing unencumbered use in commercial products.
References in corpus (1)
Cited by in corpus (38)
- Entanglement Hamiltonian of Interacting Fermionic Models
- Methods for suspensions of passive and active filaments
- The Ising critical quantum Otto engine
- Fully numerical Hartree-Fock and density functional calculations. I. Atoms
- Nematic superconductivity in magic-angle twisted bilayer graphene from atomistic modeling
- Gaussian conversion protocols for cubic phase state generation
- Practical Sparse Matrices in C++ with Hybrid Storage and Template-Based Expression Optimisation
- Fully numerical Hartree-Fock and density functional calculations. II. Diatomic molecules
- Ergodicity breaking with long range cavity induced quasiperiodic interactions
- BayesMallows: An R Package for the Bayesian Mallows Model
- Compressed sensing reconstruction using Expectation Propagation
- Continuous quantum error detection and suppression with pairwise local interactions
- Initial operation and data processing on a system for real-time evaluation of Thomson scattering signals on the Large Helical Device
- Restoring metrological quantum advantage of measurement precision in noisy scenario
- Quantum illumination with noisy probes: Conditional advantages of non-Gaussianity
- Importance truncation for the in-medium similarity renormalization group
- PyArmadillo: a streamlined linear algebra library for Python
- Multiparty Spohn's theorem for a combination of local Markovian and non-Markovian quantum dynamics
- Time- and ensemble-average statistical mechanics of the Gaussian Network Model
- StocHy: automated verification and synthesis of stochastic processes
- Availing non-Markovian dynamics in effective negative temperature-based transient quantum Otto engines
- Estimating phase transition of perturbed J1-J2 Heisenberg quantum chain in mixtures of ground and first excited states
- Correlation between resource-generating capacities of quantum gates
- Integrating Inter-vehicular Communication, Vehicle Localization, and a Digital Map for Cooperative Adaptive Cruise Control with Target Detection Loss
- Transient effects in quantum refrigerators with finite environments
- Entanglement transitions in the quantum Ising chain: A comparison between different unravelings of the same Lindbladian
- A method to compute the communicability of nodes through causal paths in temporal networks
- Systematic large flavor fTWA approach to interaction quenches in the Hubbard model
- Fitting 3D Shapes from Partial and Noisy Point Clouds with Evolutionary Computing
- Violation of the thermodynamic uncertainty relation in quantum collisional models
- Quick Adaptive Ternary Segmentation: An Efficient Decoding Procedure For Hidden Markov Models
- SmartGridToolbox: A Library for Simulating Modern and Future Electricity Networks
- Efficient Alternating Least Squares Algorithms for Low Multilinear Rank Approximation of Tensors
- Flexible numerical optimization with ensmallen
- Turbulence and Capillary Waves on Bubbles
- Quantum Heat Transformers
- SymPhas --General purpose software for phase-field, phase-field crystal and reaction-diffusion simulations
- An Extended Symbolic-Arithmetic Model for Teaching Double-Black Removal with Rotation in Red-Black Trees