Linux下MKL库的安装部署与使用,并利用cmake编译器调用MKL库去提升eigen库的计算速度
MKL库安装MKL库在Linux下的运用
前言
在用C/C++编写模型预测控制算法(MPC)的代码时候,由于预测步长和控制步长的设置较大,导致在利用eigen库进行矩阵计算的时候,矩阵n次幂计算时间过长,导致MPC算法难以落地。因此,如何减少MPC的计算时间就显得尤为重要。在我的实践过程中,我对MPC算法进行了两次速度上的提升,当时的预测步长是40,控制步长是15,然后利用osqp-eigen库求解二次规划的(c++的二次规划求解器不是本文章重点)。计算一次的时间是0.12秒,显然不够用,后来在MPC算法中加入了矩阵快速幂的算法,将速度提升到了0.06秒左右,显然还是不够,最后没辙了,将预测步长改为15,控制步长改为5(我记得是这样),计算一次的时间变为了0.005秒左右。然后了解到英特尔公司的MKL库可以对eigen库的矩阵运算加速,实现了对MPC算法的第二次提速。本文将介绍在Linux系统下,MKL库如何部署到电脑上,并用cmake编译器进行编译。
提示:因为本文章用MKL库对eigen库的矩阵运算进行加速,所以这边建议读者您先把eigen库安装到自己的电脑上,eigen库的安装链接如下
eigen库安装教程
一、MKL库的下载
MKL库的百度云链接如下(大概700M左右),只是2018版本,如果读者找到新的版本可以留言,我懒得找了。
2018版本的MKL库
二、MKL库的安装与配置
1.MKL库的安装与配置
下载并解压安装包之后,进入到安装包,然后执行如下命令:
$ ./install.sh
接下来就按照引导进行安装:
图1
此处建议跟我选择的一样,即选择1选项;
并输入你的密码。
图2
按回车健
图3
连续按几次空格
图4
输入accept并回车。
图5
图6
选择1选项
图7
选择1选项
图8
按回车
图9
然后执行以下指令
$ /opt/intel/mkl/bin/mklvars.sh intel64 mod
2.代码测试
测试代码下载。
该测试代码源于该位博主,感谢他的分享,他的相关博客链接点击此,因为该位博主的文件直接用g++编译器进行编译,而我这边使用cmake编译器对代码工程进行管理,只有此处不同。
Cmakelist.txt文件如下配置:
cmake_minimum_required(VERSION 3.0.2) #cmake最低要求版本
project(TestMKL) #工程名字
#头文件的搜索路径
include_directories(
/opt/intel/mkl/include/
include #-------即/usr/local/include路径
)
#库的搜索路径
link_directories(/opt/intel/mkl/lib/intel64
/opt/intel/lib/intel64)
#生成可执行程序:mkl_test
add_executable(mkl_test
mkl_test.cpp)
#将库链接到可执行程序:mkl_test
target_link_libraries(mkl_test
libmkl_rt.so
pthread
libm.so
libdl.so
)
拿到测试代码后,进入mkl_ws,并打开终端,执行以下指令:
$ cmake .
$ make
$ ./mkl_test
注意:如果编译报错说找不到头文件啥的,这个情况一般是eigen的文件里面找不到MKL库的头文件,只需要把MKL库里面的头文件的绝对路径添加上去就行
总结
值得注意的是,在使用MKL库时,电脑最好是搭载了英特尔公司的cpu。
1:因为我自身的电脑是AMD的cpu,在使用MKL库的时候,上面的测试代码在使用MKL库的时候,计算时间是0.38秒,不使用MKL库的计算时间是8.7秒。
2:而实验室的电脑cpu是酷睿i7,同一个代码在使用MKL库的时候,酷睿i7的计算时间是0.058,不使用MKL库的计算时间是6.21秒。
更多推荐
所有评论(0)