VS2015+Eigen3.3.5+Intel MKL2017

Visual Sudio拉下了好几年,以前在学校的时候,学的是C,经常参加一些比赛,但可惜的是比赛的形式都是笔试,对于编程能力的提升不是很大,好处是对C代码执行的原理弄得很透彻。如今做的是算法,用得最多的是Matlab,现在对Matlab很熟悉,但实在讲Matlab几乎囊括了这个世界上各个领域的所有算法,对于只有Matlab编程能力的工程师,迟早会失业,特别是在AI横行的时代。必须具有较强的代码能力,才能不断提升。意识到这一点,赶快捡起了C,下一步是Python & 机器学习。
Eigen是一个矩阵库,有了它,就能在VS上体验如Matlab代码一样的便捷,MKL是Intel的一个数学库,Eigen和MKL配合得天衣无缝。
准备:①VS2015安装好;②Eigen库下载好;③MKL2017下载好;
在这里插入图片描述
打上勾
还可以在网盘下载MKL:网盘地址
配置过程如下:
1、VS2015面板上点击项目——XX属性
在这里插入图片描述
Release模式比Debug模式天生就要快
2、找到Intel Performance Libraries项,如图配置
在这里插入图片描述
MKL那一栏要选择“Parallel”,如果没有安装IPP的库,就没有IPP那一栏。
3、在C/C++——常规那项中,将Eigen库添加进去(Eigen提前解压到某个目录)
如E:\VS2015\LibrarySelfDefined\eigen_b3f3d4950030
在这里插入图片描述
4、VC++目录那项——可执行文件目录、包含目录、库目录
在这里插入图片描述
可执行文件目录:
D:\IntelMKL\compilers_and_libraries_2017.5.267\windows\mkl\bin

包含目录:
D:\IntelMKL\compilers_and_libraries_2017.5.267\windows\mkl\include
E:\VS2015\LibrarySelfDefined\eigen_b3f3d4950030

库目录:
D:\IntelMKL\compilers_and_libraries_2017.5.267\windows\mkl\lib\intel64_win
D:\IntelMKL\compilers_and_libraries_2017.5.267\windows\compiler\lib\intel64_win

5、连接器——输入——附加依赖项不需要做任何配置
在这里插入图片描述
6、测试代码与结果
Matlab
在这里插入图片描述
非首次运行耗时。

a=rand(3000,3000);
b=rand(3000,3000);
tic
c=a*b;
toc

C++
在这里插入图片描述
非首次运行耗时。

#include <iostream>
#include <time.h>
#define EIGEN_USE_MKL_ALL //表示使用MKL加速Eigen
#include <Eigen/Dense>
using namespace Eigen;
using namespace std;
	MatrixXd a = MatrixXd::Random(3000, 3000);  // 随机初始化矩阵
	MatrixXd b = MatrixXd::Random(3000, 3000);
	double start = clock();
	MatrixXd c = a * b;
	double endd = clock();
	double thisTime = (double)(endd - start) / CLOCKS_PER_SEC;
	cout << thisTime << endl;

结论:Eigen+MKL运算速度仍然赶不上Matlab,但是已经非常接近了。
注意:上面的宏定义"#define EIGEN_USE_MKL_ALL"一定要写在任何Eigen声明之前。
不使用MKL加速的情况:
在这里插入图片描述
是的,你没有看错,经过MKL的加速,Eigen节省了约90%的时间。
7、参考博文:
https://blog.csdn.net/zhujiahui622/article/details/50504678
感谢该博主@zhujiahui622

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值