前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >调用MKL函数库

调用MKL函数库

作者头像
fem178
发布2019-05-07 11:45:13
4.9K0
发布2019-05-07 11:45:13
举报
文章被收录于专栏:数值分析与有限元编程

MKL是Intel公司出品的数学函数库,有C和Fortran接口。它集成BLAS, LAPACK 和 ScalLAPACK 等函数库。其中,Lapack 包含了求解科学与工程计算中最常见的数值线性代数问题。

正确使用函数库,就是让编译器正确的识别 include 和 lib。具体要 use 哪个module?链接哪个 lib 文件? ●include告诉编译器,我们使用到的这些函数是什么,需要多少个参数,每个参数是什么类型,返回什么值。它的作用就像 Interface 接口一样。它没有函数内部如何实现的说明,只有接口!对于 Fortran 函数库,通常 include 里包含的都是 *.mod 文件,有些也包含 *.f90 文件(源代码方式声明接口)。

●lib 链接器在链接成最终可执行文件时,需要把 lib 中的函数库一起链接。它是函数内部的实现,是函数的实际作用体,也是可执行代码。

下面结合矩阵LU分解来说明具体操作

使用sgetrf函数对矩阵进行LU分解,函数的命名规则是这样的,s代表single也就是单精度,ge代表一般矩阵,f代表factorization。函数的具体参数如下: call sgetrf( m, n, a, lda, ipiv, info )

输入参数为以下: m :代表输入矩阵a的行数 n :代表输入矩阵a的列数 a :代表输入矩阵 lda :就是矩阵a的第一个维度,一般是m 输出参数为: a :上三角部分为经过LU分解后的矩阵U,下三角部分(不包括主对角线元素)为L矩阵。

注意这里不是纯上三角矩阵!!! ipiv :INTEGER类型。是一个数组,维度一般是max(1,min(m, n)),具体英文说明是The pivot indices; for 1 ≤ i ≤ min(m, n), row i was interchanged with row ipiv(i). info:INTEGER类型。执行标示符,成功是0,其他为失败标识,具体查看mkl帮助。

★在源代码添加use lapack95语句。

★★在项目属性里按如下配置即可

输出结果为:

代码点击这里下载

MKL函数库的关键字理解:

数据类型关键字:

s:real, single precision,单精度实数 c:complex, single precision,单精度复数 d:real, double precision,双精度实数 z:complex, double precision,双精度复数

常用矩阵类型关键字:

ge:general matrix,一般矩阵 gb:general band matrix,一般带状矩阵 sy:symmetric matrix,对称矩阵 sp:symmetric matrix (packed storage) sb:symmetric band matrix tr:triangular matrix,三角阵 tp:triangular matrix (packed storage) tb:triangular band matrix.

常用操作类型关键字:

mv: matrix-vector product,矩阵向量乘积 sv:solving a system of linear equations with a single unknown vector mm:matrix-matrix product,矩阵矩阵乘积 sm:solving a system of linear equations with multiple unknown vectors

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数值分析与有限元编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档