分布式SILC:基于MPI的并行矩阵计算库的易用接口
1. 引言
传统使用矩阵计算库的方式,直接依赖于特定库的应用程序编程接口,这会导致用户程序在源代码层面依赖于所使用的库。当需要将程序移植到其他计算环境,或者尝试使用具有不同求解器、矩阵存储格式和算术精度的其他库时,用户往往需要对程序进行大量修改。
为解决这一问题,提出了一个名为简单库集合接口(SILC)的易用应用框架。在SILC框架中,用户程序首先将矩阵和向量等数据存入一个独立的内存空间,然后通过文本形式的数学表达式发出计算请求,这些请求会被转换为对适当库函数的调用,并在独立于用户程序的内存空间中执行,最后用户程序从该内存空间获取计算结果。
下面是传统编程风格和SILC框架下求解线性方程组$Ax = b$的C程序对比:
传统编程风格:
double *A, *B;
int desc_A[9], desc_B[9], *ipiv, info;
/* create matrix A and vector B */
PDGESV(N, NRHS, A, IA, JA, desc_A, ipiv, B,
IB, JB, desc_B, &info);
/* solution X is stored in B */
SILC框架:
silc_envelope_t A, b, x;
/* create matrix A and vector B */
SILC_PU
超级会员免费看
订阅专栏 解锁全文
406

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



