高性能混合语言编程的矩阵向量积实现案例
1. 矩阵类接口扩展
通常,矩阵类会配备更全面的接口。例如,会提供订阅运算符,这样就可以使用 A(i,j) 或 A[i,j] 这样的语法对稀疏矩阵进行索引。此外,更多的算术运算符和输入输出支持也是常见的扩展。
2. 面向对象实现
面向对象编程的核心思想是类按层次结构组织,应用代码可以统一处理层次结构中的所有类。
- 可以创建一个 Matrix 类,定义用于执行矩阵向量积的(虚拟)方法,但该类没有数据,不能用于存储矩阵。
- 子类实现各种矩阵格式,并利用特定格式在矩阵向量积方法中编写优化算法。例如 MatDense 、 MatSparse 和 MatTridiagonal 就是这样的子类。
下面是一个求解器函数的示例:
void some_solver(const Matrix& A, const Vecd& b, Vecd& x)
{
...
r = A*x;
...
}
通过 Matrix 引用参数,可以传递 Matrix 层次结构中任何子类的实例,C++ 在运行时会跟踪实例对应的类类型。如果传递 MatSparse 实例作为参数 A ,C+
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



