首页/文章/ 详情

如何快过matlab?-MKL数值计算库的Fortran95接口使用及MKL文档下载

1年前浏览3205

Intel MKL (Math Kernel Library)是Intel公司开发的数学函数库,其提供了一系列用于数值计算的Fortran和C语言接口,用户通过调用MKL可以高效并行地完成矩阵乘法,线性方程组求解,FFT快速傅里叶变换等工作。MKL库具有优秀的计算性能,在笔者常用的线性方程组的求解上,MKL库的计算效率甚至能够超过matlab,从计算效率上来说,和全世界范围内各种数值计算库相比,MKL基本上也处于第一梯队。

Intel MKL主要包含如下内容:

(1)基本线性代数子系统库(BLAS, level 1, 2, 3)和线性代数库(LAPACK):提供向量、向量-矩阵、矩阵-矩阵操作。

(2)ScaLAPACK分布式线性代数库:含基础线性代数通信子程序(Basic Linear Algebra Communications Subprograms, BLACS)和并行基础线性代数子程序(Parallel Basic Linear Algebra Subprograms, PBLAS)

(3)PARDISO直接离散算子:一种迭代离散算子,支持用于求解方程的离散系统的离散BLAS (level 1, 2, and 3)子函数,并提供可用于集群系统的分布式版本的PARDISO。

(4)快速傅立叶变换方程(Fast Fourier transform, FFT):支持1、2或3维,支持混合基数(不局限与2的次方),并有分布式版本。

(5)向量数学库(Vector Math Library, VML):提供针对向量优化的数学操作。

(6)向量统计库(Vector Statistical Library, VSL):提供高性能的向量化随机数生成算子,可用于一些几率分布、剪辑和相关例程和汇总统计功能。

(7)数据拟合库(Data Fitting Library):提供基于样条函数逼近、函数的导数和积分,及搜索。

(8)扩展本征解算子(Extended Eigensolver):基于FEAST的本征值解算子的共享内存版本的本征解算子。

MKL库的使用通常通过C接口或者Fortran接口进行,而针对Fortran接口,又包含F77接口和F95接口。一般情况下,F95接口所需要的参数更少,更易使用,F77接口更传统全面,对于某些函数,MKL不提供F95接口。本文主要介绍如何使用F95接口。

(一)安装

一般情况下,在VS IVF或者VS oneAPI平台下MKL库不需要单独安装,安装好VS oneAPI后就已经包含了MKL库,关于VS oneAPI的安装步骤,可参考b站up主地球屋里老师的视频https://www.bilibili.com/video/BV1oh411o7AT/?spm_id_from=333.999.0.0

(二)使用

2.1 创建fortran项目,添加.f90源代码文件。

本文用于演示的源代码文件如下:

    program Console1_mkl95use blas95implicit noneinteger,parameter::n=100real(kind=8)::a(n),sum1,resinteger::ido i=1,n  a(i)=ienddo   sum1=asum(a)write(*,*)"sum",sum1res=dot(a,a)write(*,*)"res",resend program Console1_mkl95

    关于F95接口函数的具体使用,可参考MKL文档进行:

    以MKL中的Blas routines下的求和函数为例,syntax下以s,sc,d,dz开头的位F77接口的函数,而不带上述字母开头的为f95接口,因此求和函数的f95接口函数名为asum,同理,对于内积的dot函数:

    其F95接口的函数名为dot。

    在这个代码中,通过use blas95使用blas库的95接口,asum函数和dot函数为Blas中的用于对向量求和和求内积的函数。

    2.2 选择解决方案平台:

    2.3 点击 项目-属性,确保平台为前一步选择的平台,进入fortran-Libraries,将Use Intel Math Kernel Library选择为3者中的一个(一般选Parallel)

    2.4 进入Link-input,将Additinal Dependencies中加入要用到的MKL函数的依赖库,本文的示例代码用的是blas中的函数的95接口,因此依赖库为 mkl_blas95_ilp64.lib或者mkl_blas95_lp64.lib。

    2.5 经过上述步骤,MKL的F95接口已经配置完成,运行即可。如出现错误,重新按照上述步骤进行。

    以上,就是MKL库的F95接口配置,在后面的文章中,还将描述F77接口及C接口的配置。感谢您的阅读。

    【完】

    来源:有限元术
    科普通信
    著作权归作者所有,欢迎分享,未经许可,不得转载
    首次发布时间:2022-10-17
    最近编辑:1年前
    寒江雪_123
    硕士 | cae工程师 签名征集中
    获赞 48粉丝 98文章 49课程 9
    点赞
    收藏
    未登录
    还没有评论
    课程
    培训
    服务
    行家
    VIP会员 学习 福利任务 兑换礼品
    下载APP
    联系我们
    帮助与反馈