0

我必须使用 MKL 来求解线性方程组。该方程组用于求解 2D 泊松问题,因此正好有 5 条对角线与 0 不同。系统 Ax=b 的矩阵 A 是方阵,其大小为 n*n。我检查了英特尔的文档,我对调用顺序有点困惑。原型是:

lapack_int LAPACKE_dgbtrf( int matrix_order, lapack_int m, lapack_int n, lapack_int kl, lapack_int ku, <datatype>* ab, lapack_int ldab, lapack_int* ipiv );

1)matrix_order。Afaik矩阵的顺序是行数和列数之间的最大值。图书馆不应该从第二个和第三个参数中找出它吗?

2)m 和 n。这些是指原始矩阵 A 还是带存储中的表示?

3)带存储。鉴于问题的结构,我在主对角线上方有 d 条对角线,在主对角线下方有 d 条对角线,因此,包括分解的额外行,带存储的内存区域应该有 (n*n)*(3*d+ 1)元素。元素是按列的。我对吗?

4)领先的维度。这应该是 (3*d+1)

任何帮助表示赞赏

4

1 回答 1

1

1) 根据 MKL 文档 ( http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/GUID-C124D9D6-BCF5-471E-B750-0CF9CD1ACB02.htm ),订单说明如果矩阵是行或列优先的(LAPACK_ROW_MAJOR 或 LAPACK_COL_MAJOR)。

2)正确,它们是原始矩阵中的“m”和“n”。

3) 大小为 n * (3 * d + 1),它们的布局取决于 1)。

4) 如果矩阵是行优先的,则更正。

于 2013-08-06T20:10:49.433 回答