c - MKL : calling ? GBTRF

标签 c matrix factorization

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

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) 矩阵顺序。据我所知,矩阵的阶数是行数和列数之间的最大值。库不应该从第二个和第三个参数中找出答案吗?

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

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

4)领先维度。这应该是 (3*d+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) 如果矩阵是行主矩阵,则更正。

关于c - MKL : calling ? GBTRF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13364752/

相关文章:

c++ - 编译器如何优化我们的代码?

c - helloworld.c 编译失败,出现 100 多个错误

c++ - 使用 Eigen 创建具有俯仰、偏航、滚动的旋转矩阵

java - 以数组形式返回 int 的质因数作为输入

Java:产生更大的随机数

java - 给定素数分解,生成一个数的所有因数

c++ - 如何调整/加长/截断文件并在开头留出更多空间?

C getchar() 刽子手游戏

c++ - 根据输入的动态二维数组

r - 行的累积和直至选择行号,然后对 R 中的列矩阵求和