SparseBase's current (as of version 0.1.2) format system has several weaknesses that we would like to address in the upcomming releases. Here I will be describing these weaknesses. We are already working on new designs and we are also open to suggestions.
Currently, most classes in the library have three templated types (IDType, NNZType, ValType). These allow the users to set the various underlying arrays of the sparse format to different types. For example all 3 arrays of a CSR could be different types allowing flexible memory and precision management. Since SparseBase's main goal is to accommodate the user's needs, this flexibility is an important feature.
However this system introduces some problems:
- We are stuck with these 3 types which might not scale well to a tensor. Since tensor implementations could have any number of arrays, there would be less control on the types of tensor arrays.
- Templates take a long time to compile which will only get worse as the library increases in com