`

Eigen的编译选项;MKL的使用

阅读更多
使用时在工程的property页面的如下图所示位置定义(或者在#include <Eigen/Core>前使用#define定义):


1、SSE4.2支持,用Visual Studio时需要手动添加
(但不知道在哪儿用到了SSE4.2):
  • EIGEN_VECTORIZE_SSE4_2

在include最多的Core文件中有这么一段:
引用
    // Detect sse3/ssse3/sse4:
    // gcc and icc defines __SSE3__, ...
    // there is no way to know about this on msvc. You can define EIGEN_VECTORIZE_SSE* if you
    // want to force the use of those instructions with msvc.

更多有关Vectorization的内容参见以下页面的Vectorization一节:
http://eigen.tuxfamily.org/index.php?title=FAQ

2、将矩阵由列优先改为行优先
  • EIGEN_DEFAULT_TO_ROW_MAJOR


3、禁用Eigen的并行化
  • EIGEN_DONT_PARALLELIZE
http://eigen.tuxfamily.org/dox/TopicMultiThreading.html
注意:要想使用OpenMP,除了不能定义以上选项外 ,在Visual Studio中还要设置 "C/C++ -> Language -> OpenMP Support"选项为:Yes (/openmp)

4、使用Intel MKL数学函数库
需要定义:
  • EIGEN_USE_MKL_ALL

我的测试结果:MKL在资源利用和速度上比起Eigen还是有一定的优势的,矩阵越大越明显;但还是不如Matlab,可是Matlab用的也是MKL啊!!!(malab中输入version -lapack查看)。
官方文档:http://eigen.tuxfamily.org/dox/TopicUsingIntelMKL.html
Intel提供的编译选项生成器(能再难用点儿么):https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/
MKL文档:https://software.intel.com/en-us/articles/intel-math-kernel-library-documentation/
MKL教程:https://software.intel.com/zh-cn/node/529734#88D72261-26DE-42D4-807B-36E48C770AFA
composer xe自行去官网下载,能试用一个月,也不知道是怎么授权的,反正我这台装了一年,卸载后,没法再装了,但别的机器拷过来的编译好的程序,再加上以下的DLL,是可以运行的。。。那么,,MKL的licence在哪一步体现了?

说下配置:Intel Composer XE 2015下载下来不能用(安装时CRC校验不通过。。。),用的是MKL11,也就是2013的版本
由于MKL11不支持VS2013,只好手动配置:

安装路径为:D:\ProgramFiles(x86)\
我只用到了X64的版本:
需要的Include路径:
  • D:\ProgramFiles(x86)\Intel\Composer XE 2013\mkl\include

需要的lib路径:
  • D:\ProgramFiles(x86)\Intel\Composer XE 2013\mkl\lib\intel64
  • D:\ProgramFiles(x86)\Intel\Composer XE 2013\compiler\lib\intel64

需要的lib:
  • mkl_intel_lp64_dll.lib mkl_core_dll.lib mkl_intel_thread_dll.lib mkl_blacs_msmpi_lp64.lib  libiomp5md.lib

运行时需要的DLL:
  • mkl_blacs_lp64.dll
  • mkl_core.dll
  • mkl_intel_thread.dll
  • mkl_mc3.dll
  • mkl_vml_mc3.dll
  • libiomp5md.dll

这些DLL是我试出来的(在没有MKL的机器上运行MKL程序),他们分布在以下两个路径中(运行时还缺DLL的话会弹出提示,提示缺少的DLL,到时可以再去这两个地方找):
(注意第一个是在C盘,而不在安装路径中,该路径安装时会自动被写入环境变量path中)
  • C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler
  • D:\ProgramFiles(x86)\Intel\Composer XE 2013\redist\intel64\mkl

注意:使用MKL时有只bug,即调用m1.householderQr();方法时说该方法重定义!
参见:http://eigen.tuxfamily.org/bz/show_bug.cgi?id=704

某次的实验结果(工程文件见附件):




更多Eigen的编译选项请参见官方文档:
http://eigen.tuxfamily.org/dox/TopicPreprocessorDirectives.html
  • 大小: 45.1 KB
  • 大小: 9.3 KB
分享到:
评论
6 楼 cherishLC 2015-10-12  
Andy__Zou 写道
cherishLC 写道
Andy__Zou 写道
cherishLC 写道
Andy__Zou 写道
您好,您的工程里面的那些hpp文件附件里面没有诶  可否共享下呢

附件重新传了一下,Timer类直接贴到cpp文件里了,另外一个应该不需要。

谢谢!工程里要用到mkl_blacs_msmpi_lp64.lib  libiomp5md.lib库,但是我下载intel mkl的找不到这两个库,能否共享下么?

直接在mkl安装文件夹内搜索啊,不一定是在同一个文件夹里,,带版权的东西不好共享了


我找遍了整个文件夹都没找到这两个库,其它的库都有诶

用我给的网址生成自己的编译选项啊,,不同版本不一样的,我的是11.0的,不可能说MKL安装了不能用的。。。
5 楼 Andy__Zou 2015-10-12  
cherishLC 写道
Andy__Zou 写道
cherishLC 写道
Andy__Zou 写道
您好,您的工程里面的那些hpp文件附件里面没有诶  可否共享下呢

附件重新传了一下,Timer类直接贴到cpp文件里了,另外一个应该不需要。

谢谢!工程里要用到mkl_blacs_msmpi_lp64.lib  libiomp5md.lib库,但是我下载intel mkl的找不到这两个库,能否共享下么?

直接在mkl安装文件夹内搜索啊,不一定是在同一个文件夹里,,带版权的东西不好共享了


我找遍了整个文件夹都没找到这两个库,其它的库都有诶
4 楼 cherishLC 2015-10-09  
Andy__Zou 写道
cherishLC 写道
Andy__Zou 写道
您好,您的工程里面的那些hpp文件附件里面没有诶  可否共享下呢

附件重新传了一下,Timer类直接贴到cpp文件里了,另外一个应该不需要。

谢谢!工程里要用到mkl_blacs_msmpi_lp64.lib  libiomp5md.lib库,但是我下载intel mkl的找不到这两个库,能否共享下么?

直接在mkl安装文件夹内搜索啊,不一定是在同一个文件夹里,,带版权的东西不好共享了
3 楼 Andy__Zou 2015-10-08  
cherishLC 写道
Andy__Zou 写道
您好,您的工程里面的那些hpp文件附件里面没有诶  可否共享下呢

附件重新传了一下,Timer类直接贴到cpp文件里了,另外一个应该不需要。

谢谢!工程里要用到mkl_blacs_msmpi_lp64.lib  libiomp5md.lib库,但是我下载intel mkl的找不到这两个库,能否共享下么?
2 楼 cherishLC 2015-09-26  
Andy__Zou 写道
您好,您的工程里面的那些hpp文件附件里面没有诶  可否共享下呢

附件重新传了一下,Timer类直接贴到cpp文件里了,另外一个应该不需要。
1 楼 Andy__Zou 2015-09-24  
您好,您的工程里面的那些hpp文件附件里面没有诶  可否共享下呢

相关推荐

    树莓派安装yolov5-lite所需的onnxruntime安装包,方便

    4. **编译与安装**:根据树莓派的架构,选择正确的构建选项。对于树莓派4,可以使用以下命令: ``` mkdir build && cd build cmake -Donnxruntime_BUILD_TESTS=OFF -Donnxruntime_ENABLE_MKL_DNN=OFF -...

    visual c++ 环境 矩阵实现 c语言 matrix

    在 Visual C++ 中,你还可以利用向量和矩阵库,如 Intel 的 MKL(Math Kernel Library)或开源的 Eigen 库,它们提供了高效且优化的矩阵运算功能。这些库通常以 C++ 类的形式封装了矩阵操作,并且可能需要更高级的...

    stm32+esp8266+mqtt/onenet智能家居

    stm32+esp8266+mqtt/onenet智能家居

    Android开发不用存储权限进行拍照demo源码

    Android开发不用存储权限进行拍照,得到拍照后的图片效果。有一点难度,关键是存储路径的定义。

    weathered_copper_bulb_lit.png

    j

    ComfyUI使用反向 LoRA 进行优化

    反向Lora提高画面细节。

    NM-XMS-108小秘书(凤凰电话管理系统)【纽曼声卡版小秘书】

    小秘书(凤凰电话管理系统)【纽曼声卡版小秘书】,主要用来做为来电自动录音功能。

    基于SpringBoot的疫情居家检测管理系统(源码+数据库+数据库表结构文档)514

    基于SpringBoot的疫情居家检测管理系统,系统包含三种角色:管理员、用户、医生,主要功能如下。 【用户功能】 1. 首页:获取系统信息。 2. 论坛:参与居民讨论和分享信息。 3. 公告:查看社区发布的各类公告。 4. 医保信息:了解医疗保障相关信息。 5. 个人中心:管理个人信息,查看预约和就诊历史。 【管理员功能】 1. 首页:查看系统整体。 2. 个人中心:管理管理员的个人信息。 3. 管理员管理:维护系统管理员的账户信息。 4. 医生管理:添加、编辑和删除医生信息。 5. 用户管理:查看和管理系统用户的信息。 6. 预约管理:审核和管理用户对医生的预约服务。 7. 就诊历史管理:查看和管理用户的就诊历史记录。 8. 健康信息管理:记录和查看用户的健康信息。 9. 药品管理:管理系统内的药品种类。 10. 药品入库管理:记录和管理药品的入库情况。 11. 药品使用管理:记录和管理药品的使用情况。 12. 医保信息管理:管理医保相关信息。 13. 论坛管理:审核和回复用户在论坛上的帖子。 14. 公告管理:发布、编辑和管理公告信息。 15. 基础数据管理:管理系统的基础数据。 16. 轮播图信息:管理系统首页的轮播图展示。 【医生功能】 1. 首页:查看医生个人信息。 2. 个人中心:管理医生的个人信息。 3. 预约管理:查看和管理用户对医生的预约服务。 4. 就诊历史管理:查看和管理用户的就诊历史记录。 5. 健康信息管理:记录和查看用户的健康信息。 6. 药品管理:管理系统内的药品种类。 7. 药品入库管理:记录和管理药品的入库情况。 8. 药品使用管理:记录和管理药品的使用情况。 9. 医保信息管理:管理医保相关信息。 10. 论坛管理:审核和回复用户在论坛上的帖子。 11. 公告管理:发布、编辑和管理公告信息。 12. 轮播图信息:管理系统首页的轮播

    基于python的Opencv项目实战.zip

    基于python的Opencv项目实战.zip

    鸿蒙开发画廊效果demo源码

    鸿蒙开发画廊效果功能,中间大,两边小的浏览效果,难度不小,进行了一定的封装。很好看的画廊效果

    win32汇编环境,网络编程入门之十九

    win32汇编环境,网络编程入门之十九

    Linux文件管理类命令详解.zip

    linux

    【HD-RK3576-PI】定制用户升级固件

    【HD-RK3576-PI】定制用户升级固件

    机器学习大规模L1正则化线性分类优化方法与软件性能对比分析:详解GLMNET算法及实验结果

    内容概要:本文是关于大规模L1正则化线性分类优化方法和软件比较的补充材料,由台湾大学计算机科学系的研究团队撰写。文章详细介绍了GLMNET算法的核心公式推导及其具体实现步骤,包括如何计算L¯j(0; X˜),以及如何维护关键变量以减少计算量。此外,文中对比了多种求解器(如CDN、IPM、TRON等)在不同数据集上的性能,涵盖达到特定停止准则所需时间、迭代次数及每次迭代的平均成本。研究结果显示,在大多数数据集上,CDN方法表现最优,但在极严格的条件下,IPM方法表现更好。对于L1和L2正则化的逻辑回归,文中指出L1正则化在某些数据类型上可能提供更好的准确性,但训练时间较长,因此推荐先尝试L2正则化用于分类任务,而L1正则化更适合特征选择。 适合人群:对机器学习算法尤其是正则化技术有一定了解的数据科学家和研究人员。 使用场景及目标:①需要进行大规模线性分类问题的优化;②比较不同优化方法和工具包在实际应用中的效果;③理解L1和L2正则化在逻辑回归中的区别及其适用情况。 其他说明:本文提供了详细的数学推导和实验结果分析,有助于深入理解各种优化方法的工作原理及其优劣。读者可以通过这些内容选择最适合自身需求的算法和工具包。

    西电A测或通院微控温度仿真控制系统的proteus文件

    西电A测或通院微控温度仿真控制系统的proteus文件

    华为ONT使能2.0工具

    华为ONT使能2.0工具

    basalt_top.png

    basalt_top

    无极调速数控车床主轴箱装配CAD图.rar

    无极调速数控车床主轴箱装配CAD图.rar

    乳液涂料生产流程图.rar

    乳液涂料生产流程图.rar

Global site tag (gtag.js) - Google Analytics