首页/文章/ 详情

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

2年前浏览3659

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::i
do 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
最近编辑:2年前
寒江雪_123
硕士 | cae工程师 签名征集中
获赞 49粉丝 106文章 54课程 9
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈