Show simple item record

dc.contributor.authorSanderson, Conrad
dc.contributor.authorCurtin, Ryan
dc.date.accessioned2019-09-16T00:36:52Z
dc.date.available2019-09-16T00:36:52Z
dc.date.issued2019
dc.identifier.issn1300-686X
dc.identifier.doi10.3390/mca24030070
dc.identifier.urihttp://hdl.handle.net/10072/387315
dc.description.abstractDespite the importance of sparse matrices in numerous fields of science, software implementations remain difficult to use for non-expert users, generally requiring the understanding of the underlying details of the chosen sparse matrix storage format. In addition, 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 these issues, we present a user-friendly and open-source sparse matrix class for the C++ language, with a high-level application programming interface deliberately similar to the widely-used MATLAB language. This facilitates prototyping directly in C++ and aids the conversion of research code into production environments. 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, red-black tree, coordinate list) depending on which format is best suited and/or available for specific operations, and (ii) a template-based meta-programming framework to automatically detect and optimise the execution of common expression patterns. Empirical evaluations on large sparse matrices with various densities of non-zero elements demonstrate the advantages of the hybrid storage framework and the expression optimisation mechanism.
dc.description.peerreviewedYes
dc.languageEnglish
dc.language.isoeng
dc.publisherMDPI AG
dc.relation.ispartofpagefrom70:1
dc.relation.ispartofpageto70:16
dc.relation.ispartofissue3
dc.relation.ispartofjournalMathematical and Computational Applications
dc.relation.ispartofvolume24
dc.subject.fieldofresearchApplied mathematics
dc.subject.fieldofresearchcode4901
dc.titlePractical Sparse Matrices in C++ with Hybrid Storage and Template-Based Expression Optimisation
dc.typeJournal article
dc.type.descriptionC1 - Articles
dcterms.bibliographicCitationSanderson, C; Curtin, R, Practical Sparse Matrices in C++ with Hybrid Storage and Template-Based Expression Optimisation, Mathematical and Computational Applications, 24 (3), pp. 70:1-70:16
dcterms.licensehttp://creativecommons.org/licenses/by/4.0/
dc.date.updated2019-09-13T06:01:17Z
dc.description.versionVersion of Record (VoR)
gro.rights.copyright© 2019 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/) which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited
gro.hasfulltextFull Text
gro.griffith.authorSanderson, Conrad


Files in this item

This item appears in the following Collection(s)

  • Journal articles
    Contains articles published by Griffith authors in scholarly journals.

Show simple item record