Linux下MKL库的安装部署与使用,并利用cmake编译器调用MKL库去提升eigen库的计算速度

article/2025/9/14 6:39:37

文章目录

  • 前言
  • 一、MKL库的下载
  • 二、MKL库的安装与配置
    • 1.MKL库的安装与配置
    • 2.代码测试
  • 总结


前言

在用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
此处建议跟我选择的一样,即选择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 pthreadlibm.solibdl.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秒。


http://chatgpt.dhexx.cn/article/mmd6RSTP.shtml

相关文章

mysql 报1055错误_MySQL数据库报1055错误

有点坑啊,当初装MySQL数据库的时候没有整配置文件,结果MySQL报1055错误的时候,网上的解决办法都说如果需要永久生效的话,只能通过改配置文件实现,but,我没有配置文件,蜜汁尴尬啊 1、已安装的MyS…

mysql运行sql错误1055_sql数据库执行错误代码1055怎么解决?

展开全部 错误代码1055。不过看了Expression里面的原因描述,我基本知道怎么回事了。原因是因为62616964757a686964616fe59b9ee7ad9431333431373139mysql中对 group by 用法的规定。严格意义上说,就是group by之后。select 的字段只能是group by的字段。或者需要加聚合函数的。…

FOJ 1055

一,题目链接 http://acm.fzu.edu.cn/problem.php?pid1055 二,题目描述 三,题目分析 1.程序段的格式是已知的,一行为三个字符,且中间是赋值运算符,只需用一个数组记录字符是否 是已知的(查表法…

MYSQL数据库报错 1055

MYSQL数据库报错 1055 今天在做毕业设计,当点开要查看的视图的时候,爆出了1055的错,该错误如下: 错误原因:在MySQL5.7之后,sql_mode中默认存在ONLY_FULL_GROUP_BY,SQL语句未通过ONLY_FULL_GRO…

leetcode1055

暴力查询即可,外面一层遍历target字符串,内层对source进行遍历,直到当前的内层遍历source中已无可匹配字符,在进行下一次source遍历,直到外层遍历结束。最终统计进行了几次内层遍历。 优化的方法:将内层遍历…

Mysql报错1055

Mysql group by报错 1055 [Err] 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘xm_xhd.al.dy_uid’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_…

MySQL 报错1055

一、问题描述 SELECT * FROM tbluser GROUP BY sex当我以这条语句进行数据库查询的时候,报了个错: > 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ceb.tbluser.uid which is not functiona…

mac mysql 1055_MySQL错误1055

问题描述:在MySQL数据库下,执行SQL插入语句报错。错误信息如下: 错误原因:在MySQL5.7之后,sql_mode中默认存在ONLY_FULL_GROUP_BY,SQL语句未通过ONLY_FULL_GROUP_BY语义检查所以报错。 ONLY_FULL_GROUP_BY:ONLY_FULL_GROUP_BY要求select语句中查询出来的列必须是明确的(…

MySQL 错误代码:1055 解决方案(推荐!!)

MySQL 错误代码:1055 解决办法 一、 MySQL版本二、 问题描述1. 问题描述2.ONLY_FULL_GROUP_BY-SQL示例 三、解决办法1.方法一2.方法二(临时)3.方法三(永久) 四、sql_mode常用值 一、 MySQL版本 MySQL版本:8.0.11 二、…

MySQL 出现1055错误 this is incompatible with sql mode=only full group by 的解决办法

文章目录 一、打开MySQL8.0 Command Line Client二、找到MySQL的my.ini文件路径三、修改my.ini里面的内容 前言 在学习过程中出现的问题:IDEA与Navicat出现不兼容的情况 会弹出1055的错误,这种错误通常在mysql 5.7以上的版本才会出现 1055 Expression #…

MySQL查询出现1055错误的解决方法

当SQL语句查询报1055错误时的解决方法 报错内容如下 报错原因 1.SQL语句中使用了group by,并且不需要分组的字段没有加上any_value()函数 2.MySQL数据库版本是大于5.7,报错信息中最后有一句sql_modeONLY_FULL_GROUP_BY,是因为MySQL数据库的…

1055 习题4-9-3 逆序输出正整数各位上数字

题目描述 输入一个不多于5位的正整数,按逆序输出各位上的数字,末尾换行。 注意:确保输入的正整数的位数不多于5。 输入 一个不多于5位的正整数。 输出 逆序输出各位上的数字,中间以空格分隔。 注意末尾的换行。 样例输入 2143 样…

IDEA破解后老是出现agent弹窗问题

第一步:在1这个路径下早到2这个文件 2.用解压软件提取2这个文件META-INF里面的important.txt放到上面1这个目录下(这里使用的是7z解压)

Intellij IDEA 破解方法和地址

IntelliJ IDEA是来自捷克的Jetbrains公司开发的Java开发工具(完爆Eclipse/MyEclipse)。有旗舰版和社区版两大版本,相对社区版而言旗舰版的功能更加丰富。官网提供了两个版本之间差异的详细比较。擅长企业级应用、移动应用以及Web应用开发。 支持MacOS,Windows7,Lin…

idea破解办法

在安装后启动的时候,Activate new license with选择License server,填上http://idea.iteblog.com/key.php,如图所示: 点击Activate,然后就搞定了。

Intellij idea破解以及运行优化

Intellij idea破解以及运行优化 idea 破解: 方式一:服务器破解,这种方式比较快速,但是很不稳定,所以不推荐 方式二:在校学生或者教师都可以免费申请,申请网址:https://www.jetbrain…

IDEA破解后无法启动

在网上找了破解IDEA的方法 原文:https://blog.csdn.net/qq_38637558/article/details/78914772 ①到这个地方下载 IntelliJ IDEA 注册码:http://idea.lanyus.com/ ②然后将这个jar包放入bin目录下,bin目录下,你的idea安装后的…

Intellij idea破解2017

最开始的时候intellij用得是社区版,因为博主没有钱去买专业版。。。但是后来发现社区版的功能确实弱了很多,比如流弊闪闪的Diagrams功能就没有…比如社区版不支持web项目,想起个tomcat跑个web项目都没法搞。于是,博主重新下载了个…

IDEA破解

① 到这个地方下载 IntelliJ IDEA 破解补丁:http://idea.lanyus.com/ 就是这个jar包:JetbrainsCrack-2.6.10-release-enc.jar ② 然后将这个jar包放入bin目录下,bin目录下,你的idea安装后的bin目录下 ③ 然后还是在这个bin目录…

IntelliJ IDEA破解

今天写个IDEA破解,废话不多说,直接给网址 官网:https://www.jetbrains.com/idea/ 破解注册码:http://idea.lanyus.com/ 里面有永久破解,还有注册码,可你根据你的喜爱,来选择,今天…