- 积分
- 2127
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-6-12
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
参考文献:张林波 《并行计算导论》
- 参数顺序
LAPACK 程序中的参数按如下顺序出现:
(1) 选项参数,
(2) 问题规模参数,
(3) 输入数组或标量参数,有些可能被结果覆盖,
(4) 输出数组或标量参数,
(5) 工作数组及相应的规模参数,
(6) 返回信息 (INFO)。
值得注意的是并非每种参数都在一个子程序中出现。
- 参数说明
下面的例子展示了 LAPACK 中参数的说明格式。
TRANS (输入) 字符型;“’N’”表示对原矩阵进行操作, “’T’”表示对原矩阵的转置进行操作。
M (输入) 整型; 矩阵 A 的行数; M 或 -M 等于 A的行数。
A (输入/输出) 双精度实型;维数为 (LDA, N);输入为 A(mxn);如果 M>=0,输出时 A 被程序DGEQRF 返回的 QR 分解覆盖, 如果 M<0, 输出时 A 被程序 DGELQF 返回的 LQ 分解覆盖。
LDA (输入) 整型;矩阵 A 第一维的大小;LDA>=M。
INFO (输出) 整型;0 表示成功,<0 表示第 -INFO个参数有违法值, >0 则表示 U(INFO, INFO) 的值为零,即三角分解可以完成但上三角矩阵 U是奇异的,因而不能用以求解线性方程组。
每个参数的描述按如下顺序排列:
(1) 参数的分类:(输入),(输出),(输入/输出),(输入或输出),(工作数组),(工作数组/输出);
(2) 参数数据类型;
(3) 若参数是数组,其大小;
(4) 该参数所需的或将要提供的数据的描述,或二者都有。对于后者,在描述中以 “On entry” 和 “On exit” 开头;
(5) 若该参数是输入的标量, 对其值的限制(如上例中的“LDA>=M”)。
- 选项参数
一些选项的参数是 CHARACTER*1 型的, 这样的选项在 LAPACK中有 SIDE,TRANS,UPLO,DIAG。
SIDE在调用时的用法如下:
输入值 含义
’L’ 在矩阵的左边乘以一个对称或三角阵
’R’ 在矩阵的右边乘以一个对称或三角阵
TRANS在调用时的用法如下:
输入值 含义
’N’ 对原矩阵进行操作
’T’ 对原矩阵的转置进行操作
’C’ 对原矩阵的共轭转置进行操作
UPLO参数用于 Hermitian、对称和三角阵的情形,用于指示对
矩阵的上或下三角进行操作,如下所示:
输入值 含义
’U’ 上三角
’L’ 下三角
DIAG在对三角阵进行操作的程序中用于指明该三角阵是否对角
线元素为 1,如下所示:
输入值 含义
’U’ 单位三角阵
’N’ 非单位三角阵
当 DIAG 被指定为 'U' 值时,对应的对角元素将不被引用。
以上参数也可以用小写字母,但任何其他值都是非法的。为了增强程序的可读性,程序员也可以使用更长的字符串,但只有第一个字符有效。例如:
CALL DPOTRS('Upper',...)
- 工作数组
很多 LAPACK 程序需要一个或多个工作数组作为参数。这种数组的名字一般是 WORK,有时可以是 IWORK 和 RWORK,以区别不同的数据类型。紧随其后的是声明工作数组大小的 LWORK、LIWORK或 LRWORK 参数。工作数组的第一个元素总是返回为了完成计算任务所需的最小空间。若用户提供的工作数组不够大,则程序会赋值给 INFO 并把正确的数组大小存在 WORK(1) 中,最后调用 XERBLA 程序报错。因此建议用户最好每次都检查程序返回的 INFO 值。
若用户对于该工作组需要多大的空间有疑虑,不妨将 LWORK 设为 -1,然后进行调用,再把 WORK(1) 中返回的值作为 LWORK 的正确值。把 LWORK 设为 -1 不会引发任何错误信息, 而是被作为一个查询请求来处理。
- 错误处理
所有程序都返回错误指示信息INFO, 告诉用户计算成功或失败。因而推荐用户每次调用都检查返回的 INFO 值。INFO 值的定义如下所示:
INFO = 0 成功完成计算任务;
INFO < 0 一个或多个参数有错,无法进行计算;
INFO > 0 在计算过程中失败。
如果使用标准的 XERBLA 程序,当程序出错时,LAPACK 将打印一条错误信息,并且当 INFO<0 时终止程序运行,所以 LAPACK的所有函数通常不会返回 INFO<0。但是,对于非标准的 XERBLA,这种情况则有可能发生。
|
评分
-
查看全部评分
|