CUSP : A C++ Templated Sparse Matrix Library