爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4204|回复: 3

[参考资料] LAPACK 参数设计

[复制链接]

新浪微博达人勋

发表于 2013-7-9 23:14:16 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

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,这种情况则有可能发生。

评分

参与人数 1金钱 +6 贡献 +1 收起 理由
mofangbao + 6 + 1

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-7-10 08:23:55 | 显示全部楼层
额  楼主是分享经验?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-7-10 13:13:39 | 显示全部楼层

这个不能算是经验,只是把自己找到的,感觉有用的资料分享一下,方便和我一样在找寻资料学习的朋友!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-12-15 21:08:33 | 显示全部楼层
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表