Nlopt库Eigen库以及MKL的使用心得
来源:互联网 发布:英语听力软件高中下载 编辑:程序博客网 时间:2024/06/07 23:20
写这篇文章的目的主要是为了过一段时间忘记了的时候 可以回顾一下 省得忘的死死的..
希望有用到它的朋友 可以共同讨论..
首先接受一下Nlopt这个库:
它是一个可以实现二次规划的C++库.
这个库配置非常简单稍后会上传库的源码
值得说明的是 这个库本人下载下来之后没有.lib文件 只有.def文件
(需要利用.def 生成.lib文件 这个过程可以参考http://blog.csdn.net/yunfeiyang62/article/details/45949701 )
下载完之后生成.lib之后 就可以做简单的配置环境了(头文件、库文件的配置 非常简单 要是不会的话 之后我会在具体说明, 目前暂时忽略)
如果已经成功配置好Nlopt环境的话 如果使用它?
下面先提供几个网页
A. Nlopt库参数介绍:http://manpages.ubuntu.com/manpages/wily/man3/nlopt.3.html
B. 简单的使用介绍1:http://ab-initio.mit.edu/wiki/index.php/NLopt_Tutorial
C. 简单的使用介绍2:https://zhuanlan.zhihu.com/p/24350637?columnSlug=econcode
上面的网页中有实例代码 非常简单易懂 看完之后 应该对这个库的基本使用 有了基础的了解
其次介绍Eigen库:
它是一个可以实现矩阵计算的C++库
这个库让C语言中的矩阵计算 变成的 “1+1 = 2”
下面提供几个使用Eigen库的方法:
A. http://blog.csdn.net/xiamentingtao/article/details/54341475
B. http://www.cnblogs.com/goingupeveryday/p/5699053.html
这个库本人是之前安装PCL库附带安装的 如果只想安装Eigen库 可以参考上面的 "B." 网页
这个库虽然很好用 但是速度方面耗时也是巨大的 (尤其对于高维度的) ..
所以引出了 MKL 这个库
MKL库全称 Intel® Math Kernel Library :
一个数学核心函数库提供经过高度优化和大量线程化处理大大提高运算速度!
先提供下载网址:
https://registrationcenter.intel.com/en/products/postregistration/?sn=33RM-ZLG7FNL9&EmailID=368280257%40qq.com&Sequence=2058373
https://software.intel.com/en-us/mkl
安装完毕后环境配置一样不难 如有不会的 可以@我
之后在工程设置Property Pages->Inter Performance Library->Use intel MKL->Parallel
并在程序代码中添加
#define EIGEN_USE_MKL_ALL
#define EIGEN_VECTORIZE_SSE4_2
即可使用
下面测试下运行速度,代码如下(注销掉上面2个宏就是无加速版):
#define SPEED 1
#ifndef SPEED
#define EIGEN_USE_MKL_ALL
#define EIGEN_VECTORIZE_SSE4_2
#else
#endif
#include <iostream>
#include <Eigen/Core>
#include <Eigen/Dense>
#include <time.h>
using namespace std;
using namespace Eigen;
// 使用Eigen+Intel MKL
int main(int argc, char *argv[])
{
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;
#ifndef SPEED
cout << "加速后: " << thisTime << endl;
#else
cout << "未加速: " << thisTime << endl;
#endif // 1
system("PAUSE");
return 0;
希望有用到它的朋友 可以共同讨论..
首先接受一下Nlopt这个库:
它是一个可以实现二次规划的C++库.
这个库配置非常简单稍后会上传库的源码
值得说明的是 这个库本人下载下来之后没有.lib文件 只有.def文件
(需要利用.def 生成.lib文件 这个过程可以参考http://blog.csdn.net/yunfeiyang62/article/details/45949701 )
下载完之后生成.lib之后 就可以做简单的配置环境了(头文件、库文件的配置 非常简单 要是不会的话 之后我会在具体说明, 目前暂时忽略)
如果已经成功配置好Nlopt环境的话 如果使用它?
下面先提供几个网页
A. Nlopt库参数介绍:http://manpages.ubuntu.com/manpages/wily/man3/nlopt.3.html
B. 简单的使用介绍1:http://ab-initio.mit.edu/wiki/index.php/NLopt_Tutorial
C. 简单的使用介绍2:https://zhuanlan.zhihu.com/p/24350637?columnSlug=econcode
上面的网页中有实例代码 非常简单易懂 看完之后 应该对这个库的基本使用 有了基础的了解
其次介绍Eigen库:
它是一个可以实现矩阵计算的C++库
这个库让C语言中的矩阵计算 变成的 “1+1 = 2”
下面提供几个使用Eigen库的方法:
A. http://blog.csdn.net/xiamentingtao/article/details/54341475
B. http://www.cnblogs.com/goingupeveryday/p/5699053.html
这个库本人是之前安装PCL库附带安装的 如果只想安装Eigen库 可以参考上面的 "B." 网页
这个库虽然很好用 但是速度方面耗时也是巨大的 (尤其对于高维度的) ..
所以引出了 MKL 这个库
MKL库全称 Intel® Math Kernel Library :
一个数学核心函数库提供经过高度优化和大量线程化处理大大提高运算速度!
先提供下载网址:
https://registrationcenter.intel.com/en/products/postregistration/?sn=33RM-ZLG7FNL9&EmailID=368280257%40qq.com&Sequence=2058373
https://software.intel.com/en-us/mkl
安装完毕后环境配置一样不难 如有不会的 可以@我
之后在工程设置Property Pages->Inter Performance Library->Use intel MKL->Parallel
并在程序代码中添加
#define EIGEN_USE_MKL_ALL
#define EIGEN_VECTORIZE_SSE4_2
即可使用
下面测试下运行速度,代码如下(注销掉上面2个宏就是无加速版):
#define SPEED 1
#ifndef SPEED
#define EIGEN_USE_MKL_ALL
#define EIGEN_VECTORIZE_SSE4_2
#else
#endif
#include <iostream>
#include <Eigen/Core>
#include <Eigen/Dense>
#include <time.h>
using namespace std;
using namespace Eigen;
// 使用Eigen+Intel MKL
int main(int argc, char *argv[])
{
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;
#ifndef SPEED
cout << "加速后: " << thisTime << endl;
#else
cout << "未加速: " << thisTime << endl;
#endif // 1
system("PAUSE");
return 0;
}
速度上可以看出 运算速度不是一个数量级..
感谢上面几个链接中的大大们 已经研究出这么好的东西 为我们所用
大概总结干货就这 .. To be continue..阅读全文
0 0
- Nlopt库Eigen库以及MKL的使用心得
- eigen库使用心得
- Eigen库的使用
- windows上安装nlopt库/使用lib /def:... 命令
- Eigen库使用
- Eigen库使用注意事项
- vs2015+eigen+intel MKL
- Eigen 库的配置
- 比较OpenBLAS,Intel MKL和Eigen的矩阵相乘性能
- Visual Studio下实现Eigen+Intel MKL的矩阵乘法
- 比较OpenBLAS,Intel MKL和Eigen的矩阵相乘性能
- Qt使用Eigen矩阵库
- Eigen库使用报错
- makefile链接使用eigen库
- numpy使用MKL库提升计算性能
- Eigen库
- intel编译器icc以及数学库MKL的下载与安装
- 用户自定义的MKL库的创建
- ASP判断select默认选中代码
- ZCMU新人训练赛J
- Android四大图片缓存(Imageloader,Picasso,Glide,Fresco)原理、特性对比
- android 线性布局设置控件固定在底部
- egret写的tips
- Nlopt库Eigen库以及MKL的使用心得
- Docker基础教程(3)Docker的简单使用
- [iOS sql数据库] 根据多个条件delete数据
- (hdu6069)2017杭电多校联赛第四场-Counting Divisors 因子个数求和(数论)
- 基于局部flush和全屏flush
- POJ.3468 A Simple Problem with Integers(线段树 区间更新 区间查询)
- 打开文件的最大个数
- OkHttp3的简单封装
- 【枚举情况】UVALive