Linux下MKL库的安装部署与使用,并利用cmake编译器调用MKL库去提升eigen库的计算速度
文章目录
- 前言
- 一、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库的计算速度相关推荐
- CentOS 8下 MySQL 8.0 安装部署(亲测)
MySQL 8正式版8.0.11已发布,官方表示MySQL8要比MySQL 5.7快2倍,还带来了大量的改进和更快的性能!到底谁最牛呢?请看:MySQL 5.7 vs 8.0,哪个性能更牛? 下载地址 ...
- 在 Linux 或者 Windows 服务器上安装部署 MATLAB
在 Linux 或者 Windows 服务器上安装部署 MATLAB 目标 在服务器上安装 MATLAB,以供实验室内多个用户远程连接使用.特别是要完成 MATLAB 的激活. 安装方式 这里我们采用 ...
- Linux下Memcache服务器端的安装
Linux下Memcache服务器端的安装 服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 . 下载:http://www.danga.com/memca ...
- mysql5.7.20linux安装,linux下 mysql5.7.20安装(精华)
在linux 系统中mysql配置文件的读取顺序为: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 第一步 创 ...
- Linux 下杀毒软件 clamav 的安装和使用
Linux 下杀毒软件 clamav 的安装和使用 安装依赖: 1 2 3 yum install -y pcre* zlib zlib-devel libssl-devel libssl yum i ...
- linux下python3源码安装及卸载
Linux下Python3的源码编译安装和卸载方法 [日期:2019-06-21] 来源:博客园 作者:wuli潇萧 [字体:大 中 小] (一)Linux下软件的源码编译安装和卸载方法 Linux ...
- linux装软件需要root用户,Linux下非root用户安装软件的一般流程:
1. 获取源代码,一般是wget方式,ubuntu可以使用apt-get source来获取源代码. 2. 解压源代码,一般使用tar -zxvf xxx.tar.gz即可 3. 切换到解压后的目录, ...
- 云计算基础课堂001 Linux系统与CentOS7的安装部署(小白向—怎么在VMware虚拟机安装基于Linux操作系统的CentOS7)
云计算基础课堂001 Linux系统与CentOS7的安装部署 一.通过VMware部署CENTOS7系统 软件 创建虚拟机 安装CentOS7 进入并登陆系统 二.Linux历史与其发行版故事 三. ...
- 【dubbo-2.5.x】Linux下dubbo-admin监控/管理平台部署详细教程
前言 Dubbo-Admin是Dubbo控制台管理的工具,是Dubbo组件之一,需要Dubbo-Admin管理平台来实时对服务调用情况进行调整,比如控制分布式服务的调用权重等,通过调整调整调用权重来控 ...
最新文章
- 超卖频发or商品滞销?压倒卖家的最后一根稻草竟是库存!
- layui fixbar 返回顶部_FANUC 数控系统机床返回参考点功能的应用研究
- 多线程put后可能导致get死循环
- Spring MVC拦截器+注解方式实现防止表单重复提交
- .net ajax批量删除,asp.net 全部选中与取消操作,选中后的删除(ajax)实现无刷新效果...
- 杨辉三角形函数 JavaScript Generator 实现
- 7.让网站支持http和https的访问方式
- win7系统iis服务器删除,Win7系统如何卸载iis 删除win7中iis的方法
- Nature杂志总编辑:如何培养一个有价值的研究者
- quartz定时任务集群版
- 超人视觉助我成功转型机器视觉行业
- oracle dmp和sql文件区别,数据库dbf与dmp文件
- python B站UP主所有视频封面下载
- 如何快速清洗空调扇(水冷式电风扇)(图文教程)
- OpenLayers加载天地图
- 大类资产配置策略(一)恒定混合策略(Constant-mix Strategy)
- STM32F1_片内FLASH编程
- 设计模式学习笔记(八):建造者模式
- wechat微信小程序panda我的界面(登录、我的基本信息的修改和保存)
- Python爬虫入门,详细讲解爬虫过程