最近一个c++项目中使用了intel MKL库,作为业余人士踩了一天的坑,记录下目前的过程。
visual studio 2022 的MKL库(Math Kernel Library)的配置分为三步。
(1)到micrsoft官网下载指定版本的visual studio installer(百度vs2022前几条就有)
micrsoft官网网址:Visual Studio 2022 IDE
(2)到intel官网下载oneMKL安装文件
官方网址:(Accelerate Fast Math with Intel® oneAPI Math Kernel Library)
拉到最下面下载单个oneAPI MKL的安装文件即可,然后按照需求选择组件进行安装。
(3)在visual studio中建立好C++项目后,
进入项目“属性”,对应修改
a. 可执行文件目录
b. 包含目录
c. 库目录
d. 链接器-输入-附加依赖项
运行代码之后,报错了!
由于找不到libiomp5md.dll,无法继续执行代码!!
搜索到一些解决方法,
按照 博主:梦里的天窗 visual studio 2022中oneAPI MKL库的配置
是要将intel64_win里面的文件全部复 制到intel64里面。
目前还没找到更好的办法,找到之后再更新。
ps:
1、Intel数学核心函数库(MKL)是一套高度优化、线程安全的数学例程、函数,面向高性能的工程、科学与财务应用。英特尔 MKL 的集群版本包括 ScaLAPACK 与分布式内存快速傅立叶转换,并提供了线性代数 (BLAS、LAPACK 和Sparse Solver)、快速傅立叶转换、矢量数学 (Vector Math) 与随机号码生成器支持。
主要包括:
① LAPACK (线形代数工具linear algebra package)
② DFTs (离散傅立叶变换 Discrete Fourier transforms)
③ VML (矢量数学库Vector Math Library)
④ VSL (矢量统计库Vector Statistical Library)
2、MKL的主要功能
1)BLAS 和 LAPACK
在英特尔处理器中部署经过高度优化的基本线性代数例程BLAS(Basic Linear Algebra Subroutines)和 线性代数包LAPACK(Linear Algebra Package)例程,它们提供的性能改善十分显著。
2)ScaLAPACK
ScaLAPACK是一个并行计算软件包,适用于分布存储的MIMD并行机。ScaLAPACK提供若干线性代数求解功能,具有高效、可移植、可伸缩、高可靠性的特点,利用它的求解库可以开发出基于线性代数运算的并行应用程序。
ScaLAPACK 的英特尔? MKL 实施可提供显著的性能改进,远远超出标准 NETLIB 实施所能达到的程度。
3)PARDISO稀疏矩阵解算器
利用 PARDISO 直接稀疏矩阵解算器解算大型的稀疏线性方程组,该解算器获得了巴塞尔大学的授权,是一款易于使用、具备线程安全性、高性能的内存高效型软件库。英特尔? MKL 还包含共轭梯度解算器和 FGMRES 迭代稀疏矩阵解算器。
4)快速傅立叶变换 (FFT)
充分利用带有易于使用的新型 C/Fortran 接口的多维 FFT 子程序(从 1 维至 7 维)。英特尔? MKL 支持采用相同 API 的分布式内存集群,支持将工作负载轻松地分布到大量处理器上,从而实现大幅的性能提升。此外,英特尔? MKL 还提供了一系列 C 语言例程(“wrapper”),这些例程可模拟 FFTW 2.x 和 3.0 接口,从而支持当前的 FFTW 用户将英特尔? MKL 集成到现有应用中。
5)矢量数学库(VML)
矢量数学库(Vector Math Library)借助计算密集型核心数学函数(幂函数、三角函数、指数函数、双曲函数、对数函数等)的矢量实施显著提升应用速度。
6)矢量统计库—随机数生成器(VSL)
利用矢量统计库(Vector Statistical Library)随机数生成器加速模拟,从而实现远远高于标量随机数生成器的系统性能提升。