C++ 科学计算矩阵数学库: Intel MKL+ Dlib +Armadillo 编程环境配置安装以及使用matlab将M文件编译成链接库

这篇具有很好参考价值的文章主要介绍了C++ 科学计算矩阵数学库: Intel MKL+ Dlib +Armadillo 编程环境配置安装以及使用matlab将M文件编译成链接库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


配置时间 2022年11月13日

  •  电脑主机:以下编程环境 只适用于windows 10 操作系统 
  •  在线安装Visual Studio 2019编译器环境【MSVC 14.29版本(对应Visual Studio1929 (Version 16.10 + 16.11)】+对应windows SDK10 kit 【版本10.0.19041.0】,注意各个工具的版本。

     在线安装VS结束,要手动配置系统环境变量:
     INCLUDE环境变量:

C++ 科学计算矩阵数学库: Intel MKL+ Dlib +Armadillo 编程环境配置安装以及使用matlab将M文件编译成链接库

        LIB环境变量:

C++ 科学计算矩阵数学库: Intel MKL+ Dlib +Armadillo 编程环境配置安装以及使用matlab将M文件编译成链接库

        PATH环境变量:

C++ 科学计算矩阵数学库: Intel MKL+ Dlib +Armadillo 编程环境配置安装以及使用matlab将M文件编译成链接库

        VS安装路径环境变量:

C++ 科学计算矩阵数学库: Intel MKL+ Dlib +Armadillo 编程环境配置安装以及使用matlab将M文件编译成链接库

  • 安装Matlab必须2020a新版以上(PATH环境变量配置,尽量排序靠前上移)
    D:\Program Files\Polyspace\R2020a\bin\win64
    D:\Program Files\Polyspace\R2020a\runtime\win64
    D:\Program Files\Polyspace\R2020a\bin
    • 安装matlab,需要同时勾选 matlab coder 以及library compiler等编译器APP工具,以便于自己编写的matlab .m程序文件,编译成 C++ .lib .dll 链接库
    • 用matlab生成dll(Dynamic Linked Library)文件

      • 需要带有mcc编译器的matlab软件,这个可以通过在matlab命令行中输入:!mcc命令来查看: 仔细阅读打印信息之后,可以看到mcc编译器的命令使用方法。然后输入mex -setup设置语言为C++
      • 然后在命令窗口输入mbuild -setup选中要使用的 C++ 编译器,而不是 C 编译器,在这里请选择你需要的C++编译器,尽量与C++程序开发使用的编译器保持一致。比如可以使用Visual Studio自带的Microsoft Visual C++ 2019编译器( matlab只是适配mingw 6.3)
      • 选好编译器后在命令窗口输入deploytool进入编译窗口,在弹出的窗口中选择 Library Compiler 。选择C++ Shared Library类型,在旁边的白色框中点击加号将需要编译成dll的.m文件添加到当前项目中。然后可以点击右上角的package按钮生成dll文件了。
      • 等待一段时间之后就可以在指定的目录下for_redistribution_files_only文件夹内看到生成dll以及相应的.h.lib文件
  • Cmake工具【3.24版本 下载 .msi直接安装】
  • 安装Intel MKL OneAPI 库,参考:安装步骤
    • 不要勾选安装内容太多,只勾选oneAPI Math Kernel Library
    • 在 VC++目录中

      设置可执行文件目录:C:\Program Files (x86)\Intel\oneAPI\mkl\2022.1.0\bin\intel64 
      
      包含目录:C:\Program Files (x86)\Intel\oneAPI\mkl\2022.1.0\include
      
      库目录(有两个):C:\Program Files (x86)\Intel\oneAPI\mkl\2022.1.0\lib\intel64
      
      C:\Program Files (x86)\Intel\oneAPI\compiler\2022.1.0\windows\compiler\lib\intel64_win
      • 环境变量

C++ 科学计算矩阵数学库: Intel MKL+ Dlib +Armadillo 编程环境配置安装以及使用matlab将M文件编译成链接库

  • 项目涉及科学计算库Eigen、Dlib、Armadillo库等
    • Arma库不需要编译安装,直接下载源文件即可被C++项目使用
    • Arma库 要求MKL库 C++头文件 #include之前 宏定义:请看官网说明
    #define ARMA_USE_LAPACK
    #define ARMA_USE_BLAS
    #define ARMA_USE_OPENMP
    #define ARMA_DONT_USE_WRAPPER
  • Eigen库只需要源码即可(它们源码都在.h文件里)
  • 安装Dlib库,cmake编译C++源码(需要编译成链接库才能被后续自己程序使用)
    • 版本 dlib19.24
    • 利用VS2019编译器
    • 注意勾选BLAS、LAPARK、MKL库的支持,如果不需要人脸识别的使用,GIF、PNG、SQLITE3等可以不勾选
    • MKL_WITH_TBB库不勾选,AVX、SSE4可以勾选,mkl_iomp_dll路径要找对
    • 如果不想要底层加速计算库,不勾选上述库支持,后续项目使用计算则会很慢
    • 设置CMAKE_INSTALL_PREFIX :自己安装路径

C++ 科学计算矩阵数学库: Intel MKL+ Dlib +Armadillo 编程环境配置安装以及使用matlab将M文件编译成链接库

  • 在线安装Qt 6.3.2版本 + Qtcreator 8.02版本 ,这可以适配QWT 6.2 新版本

        QT 6.3.2  在线安装 搭配了 QtCreator 8.02(该Creator它由QT6.3.2 MSVC2019 X86_64构建的),在线安装,注意勾选MSVC 2019 编译器(Qt安装前本机已经安装VS2019环境以及路径Path都配置完成,QT自动识别系统中VS编程环境),以及安装可以按需勾选Mingw编译器,勾选外部Additonal library工具(多媒体模块等等,否则 qt multimedia 不能用)

安装新的QWT 6.2版本(最新版6.2支持>QT6.0),可以适配QtCreator 8.02,

【QWT插件 必须和QTCreator 同一版本编译器构建】。

QWT安装步骤(利用源码中的.pro文件),注意编译前的系列配置文件操作(参考链接),以及只能在release模式下编译。最后拷贝各个文件到QtCreator到对应目录下。【注意QWT需要匹配QtCreator版本和编译条件】,编译前需关闭部分注释,要参考链接:Qwt6.2笔记(一)之下载 编译 配置 - ;

自己项目:使用独立fftw3链接库和dlib链接库(use mkl blas编译版本)会冲突,编译dlib时候如果配置为MKL和BLAS等库,那么其中符号定义,则会与独立的fftw3.lib库里面函数或符号定义重名,编译不通过,因此 “独立的fftw3库”和“dlib+mkl库” 这二者取其一。

利用QT+MSVC2019编译项目代码时候,配置pro文件,注意debug与release的区分,否则会运行出错,release版本时候运行,如果链接了qwtd.dll(debug版本) 则出错。在自己项目使用QWT时候,配置pro文件,在MSVC release模式下,不能链接qwtd.lib库(因为是debug版本)文章来源地址https://www.toymoban.com/news/detail-503852.html

QT C++,链接库lib和dll最好放到同一目录下,以便后续项目的构建,
生成exe二进制程序直接动态链接 ,否则程序找动态库很麻烦

到了这里,关于C++ 科学计算矩阵数学库: Intel MKL+ Dlib +Armadillo 编程环境配置安装以及使用matlab将M文件编译成链接库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 报错Intel MKL FATAL ERROR: Cannot load libmkl_core.so.的一种解决方法

    今天上80服务器跑mdistiller的代码时,意外发现torch、numpy都不能用了T_T 以torch为例,出现如下报错情况 以numpy为例,出现如下报错情况 我们先看看报错信息,这个报错来自Inter MKL。Inter MKL全称是The Intel Math Kernel Library,它是一个主要是用于科学计算的共享库,提供了很多与数学

    2024年02月08日
    浏览(30)
  • [实习笔记] Intel MkL ,FFT,Vcpkg,FFTW,ITPP,IMGUI,Scibox,Matlab,Simlate,方波等概念的认识

    使用C++代码进行麦克风的信号识别,需要使用MKL这种高效的数学库来提高傅里叶变换的性能. Intel MKL(Math Kernel Library)是英特尔(Intel)公司开发的一种高性能数学库,专门用于数值计算和科学计算领域。MKL 提供了一系列优化过的数学函数和算法,可以加速数值计算任务,特

    2024年02月16日
    浏览(24)
  • Excel数学、工程和科学计算插件:FORMULADESK Studio

    如果 Excel 是您的武器 - 让我们磨砺您的剑!为整天使用 Excel 的人们提供创新的 Excel 加载项,你需要这个 FORMULADESK Studio。。。 Excel 插件为任何使用 Excel 执行数学、工程和科学计算的人提供了必备工具。 * 将公式视为真正的数学方程 * 为您的公式插入自动更新的数学方程 *

    2024年02月09日
    浏览(28)
  • 科学计算器如何求矩阵的逆

    大学本科买了四年的计算器不会求逆,到了研究生了好好研究下这个功能,终于终于会用了,以往 对着那个矩阵功能都发懵😂,记录一下这个史诗无敌隐藏功能 要是早知道本科线代就轻松了,不过现在知道也不晚,起码还有个高工考试hhh

    2023年04月21日
    浏览(21)
  • 分块矩阵在科学计算中的广泛应用

    分块矩阵(Sparse Matrix)在科学计算中具有广泛的应用,主要是因为它可以有效地表示稀疏数据。稀疏数据是指那些具有大量零元素的数据,例如网格上的热量分布、天气预报、图像处理等。传统的数组或列表数据结构无法有效地存储和处理这些稀疏数据,因为它们会浪费大量的

    2024年04月27日
    浏览(22)
  • 计算机科学cs/电子信息ei面试准备——数学基础/线性代数复习

    目录 1. 中值定理 2. 梯度和散度 方向导数和梯度 通量与散度 3. 泰勒公式是为了解决什么问题的? 4. 矩阵的秩是什么,矩阵的秩物理意义? 矩阵的秩 矩阵秩的物理意义 5. 特征值和特征向量的概念 5.1 传统方法 例题 5.2 雅可比迭代法 6. 什么是线性相关以及线性相关的性质?

    2024年02月16日
    浏览(33)
  • MKL稀疏矩阵运算示例及函数封装

    Intel MKL库提供了大量优化程度高、效率快的稀疏矩阵算法,使用MKL库的将大型矩阵进行稀疏表示后,利用稀疏矩阵运算可大量节省计算时间和空间,但由于MKL中的原生API接口繁杂,因此将常用函数封装,便于后续使用,最后在实际例子中调用接口执行想要的矩阵运算。 稀疏矩

    2023年04月23日
    浏览(26)
  • Python GPU 加速数据科学 | 计算距离矩阵在用 cuPy 时快了约 100 倍

    CSDN 叶庭云 : https://yetingyun.blog.csdn.net/ 利用 cuPy 的 cupyx.scipy.spatial.distance 方法计算距离矩阵时,这个 distance 模块 使用 pylibraft 作为后端,因此还需要安装好 pylibraft package 才行,可以直接从 Conda 安装 ,链接为:https://anaconda.org/rapidsai/pylibraft 也可以用 pip install 安装 pylibraft-

    2024年02月16日
    浏览(25)
  • Armadillo:矩阵类、向量类、Cube类和泛型类

    密集矩阵的类,其元素按列优先顺序存储(即逐列) 根矩阵类是 Mattype ,其中 type 是以下项之一: float 、 double 、 std::complexfloat 、 std::complexdoubleshort 、 int 、 long 和无符号的 short 、 int 、 long 为方便起见,定义了以下 typedef: 在本文档中,为了方便起见,使用了垫子类型;

    2024年04月15日
    浏览(28)
  • Cesium中常用的一些数学计算(矩阵、向量)用法——矩阵

    刚好本人最近在研究数字孪生模拟相关的专题,涉及到三维空间线代向量、矩阵相关的计算,顺便重温了一下线代,在使用的过程中遇到问题的一些总结和实用技巧在下头阐述,相信这篇文章能够给短时间接触这些API的人一些启发。 在三维中可以把矩阵的列看出变换后的基向

    2024年02月10日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包