The Bernoulli Generic Matrix Library
Mateev, Nikolay; Pingali, Keshav; Stodghill, Paul
We have implemented the Bernoulli generic programming system for sparse matrix computations. What distinguishes it from existing generic sparse matrix libraries is that we use (i) a high-level matrix abstraction for writing generic matrix programs, (ii) a low-level matrix abstraction for describing the indexing structure and properties of sparse matrices formats, and (iii) restructuring compiler technology to transform the high-level generic programs into concrete implementations that efficiently access sparse matrices using the low-level abstraction. This paper describes the Bernoulli Generic Matrix Library (BGML). The BGML is the C++ implementation of these high-level and low-level abstractions. Within our system, it serves as the ``glue'' between user's sparse matrix format implementations and the restructuring sparse compiler. In this paper, we present the interfaces of the BGML and give examples of their use. Because of its role, it is critical that the BGML not impose much of an overhead on the compiler generated code. We discuss the implementation techniques that we had to use to get the most performance from the BGML. We also discuss the difficulties that we encountered in using available C++ compilers on the BGML.
computer science; technical report
Previously Published As