文章目录

  • 前言
  • 一、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选项;
并输入你的密码。

图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秒。

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

  1. CentOS 8下 MySQL 8.0 安装部署(亲测)

    MySQL 8正式版8.0.11已发布,官方表示MySQL8要比MySQL 5.7快2倍,还带来了大量的改进和更快的性能!到底谁最牛呢?请看:MySQL 5.7 vs 8.0,哪个性能更牛? 下载地址 ...

  2. 在 Linux 或者 Windows 服务器上安装部署 MATLAB

    在 Linux 或者 Windows 服务器上安装部署 MATLAB 目标 在服务器上安装 MATLAB,以供实验室内多个用户远程连接使用.特别是要完成 MATLAB 的激活. 安装方式 这里我们采用 ...

  3. Linux下Memcache服务器端的安装

    Linux下Memcache服务器端的安装 服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 . 下载:http://www.danga.com/memca ...

  4. mysql5.7.20linux安装,linux下 mysql5.7.20安装(精华)

    在linux 系统中mysql配置文件的读取顺序为: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 第一步 创 ...

  5. Linux 下杀毒软件 clamav 的安装和使用

    Linux 下杀毒软件 clamav 的安装和使用 安装依赖: 1 2 3 yum install -y pcre* zlib zlib-devel libssl-devel libssl yum i ...

  6. linux下python3源码安装及卸载

    Linux下Python3的源码编译安装和卸载方法 [日期:2019-06-21] 来源:博客园  作者:wuli潇萧 [字体:大 中 小] (一)Linux下软件的源码编译安装和卸载方法 Linux ...

  7. linux装软件需要root用户,Linux下非root用户安装软件的一般流程:

    1. 获取源代码,一般是wget方式,ubuntu可以使用apt-get source来获取源代码. 2. 解压源代码,一般使用tar -zxvf xxx.tar.gz即可 3. 切换到解压后的目录, ...

  8. 云计算基础课堂001 Linux系统与CentOS7的安装部署(小白向—怎么在VMware虚拟机安装基于Linux操作系统的CentOS7)

    云计算基础课堂001 Linux系统与CentOS7的安装部署 一.通过VMware部署CENTOS7系统 软件 创建虚拟机 安装CentOS7 进入并登陆系统 二.Linux历史与其发行版故事 三. ...

  9. 【dubbo-2.5.x】Linux下dubbo-admin监控/管理平台部署详细教程

    前言 Dubbo-Admin是Dubbo控制台管理的工具,是Dubbo组件之一,需要Dubbo-Admin管理平台来实时对服务调用情况进行调整,比如控制分布式服务的调用权重等,通过调整调整调用权重来控 ...

最新文章

  1. 超卖频发or商品滞销?压倒卖家的最后一根稻草竟是库存!
  2. layui fixbar 返回顶部_FANUC 数控系统机床返回参考点功能的应用研究
  3. 多线程put后可能导致get死循环
  4. Spring MVC拦截器+注解方式实现防止表单重复提交
  5. .net ajax批量删除,asp.net 全部选中与取消操作,选中后的删除(ajax)实现无刷新效果...
  6. 杨辉三角形函数 JavaScript Generator 实现
  7. 7.让网站支持http和https的访问方式
  8. win7系统iis服务器删除,Win7系统如何卸载iis 删除win7中iis的方法
  9. Nature杂志总编辑:如何培养一个有价值的研究者
  10. quartz定时任务集群版
  11. 超人视觉助我成功转型机器视觉行业
  12. oracle dmp和sql文件区别,数据库dbf与dmp文件
  13. python B站UP主所有视频封面下载
  14. 如何快速清洗空调扇(水冷式电风扇)(图文教程)
  15. OpenLayers加载天地图
  16. 大类资产配置策略(一)恒定混合策略(Constant-mix Strategy)
  17. STM32F1_片内FLASH编程
  18. 设计模式学习笔记(八):建造者模式
  19. wechat微信小程序panda我的界面(登录、我的基本信息的修改和保存)
  20. Python爬虫入门,详细讲解爬虫过程

热门文章

  1. 悲痛!武汉一副教授遇袭身亡!
  2. 大专的我是如何学Java的,这里列出了必学知识点,以及内部资料免费领取
  3. 动漫人物的耳朵怎么画?耳朵绘画技巧!
  4. 从零自学Python:day02
  5. markdown表格代码
  6. ❤️‍Spring从入门到大神--AOP从入门到精通
  7. unity打包 winodws打包pc启动分辨率设置
  8. throttle含义, 应用场景和原理
  9. 4月刊独家专访:Visual Studio 2010 是怎样炼成的
  10. matlab中最大无关组,matlab如何求极大线性无关组