c++ 用vs2019编译mxnet1.9.0

2023-11-16

一、编译环境之windows10(编译出动态库libmxnet.dll、libmxnet.lib、mxnet_70.lib及include头文件)。

一)环境及依赖

1. Windows10
2. Cuda11.1
3. Cudnn8.1.0.77
4. Cmake 3.18.0

5. Anaconda3
6. Opencv4.5.3
7. MKL-2022.1(当前最新版,强烈建议用这个而不是用OpenBLAS,OpenBLAS本身编译麻烦不说,在使用OpenBLAS编译mxnet时老是报找不到相关符号,不知道是不是OpenBLAS版本不匹配
8. Vs2019

二)编译步骤

1. 下载源码

GitHub - apache/incubator-mxnet: Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more

下载最新的mxnet对应的.tar.gz包(进入release页面下载,具体如下:)

点击进入release页面,再划到最后选择下载

 2.准备好依赖库

  • opencv下载及编译,这里我就不列出来了,网上一大把,注意配置环境变量path,其他没啥
  • cuda、cudnn下载及安装,直接上之前找到的教程,(安装这两个之前,一定记得要先安装vs)如下:CUDA环境配置-win10+VS2019+CUDA11.1_Leung_1010的博客-CSDN博客_launch samples
  • Anaconda3,官网下载安装即可(可能你会想这个是python的,我明明是做c++开发,应该不需要这个才对,但是mxnet是基于python的,所以编译的时候是需要这个环境的,否则用cmake编译的时候会报找不到python执行器
  • Cmake下载及安装,直接到官网下载安装即可,Download | CMake

 

并配置环境变量path,D:\Program Files\CMake\bin(自己的安装路径所在的bin

这里注意不要下错了,如图:

mkl网上有安装教程,我就截图下我的配置

  

 3.Cmake-gui生成vs2019的.sln

  • 在apache-mxnet-src-1.9.0.rc8-incubating解压后的文件夹中新建一个build文件夹,选择如下图(这个时候下面的选项应该是空白的,由于我configure过,所以下面已经出现了对应的选项): 

  • 点击configure,就会出现那片红色的选项,具体选择如下: 

        图片上没出现的选项不选即可,cpp-package不能勾选,因为1.9.0版本删掉了一个文件夹,勾选了会报找不到那个文件夹,具体提示我记不得了,最后点击configure,运行结果如下:

在点击generate,运行结果如下:

 对应文件夹生成mxnet.sln这一步就成功了,如下:

4. 编译mxnet.sln

        生成libmxnet.dll、libmxnet.lib、mxnet_70.dll、mxnet_70.lib(这个70根据cuda版本不一样生成的版本不一样,如用的11.4版本的cuda,则生成的是mxnet_75)这一步耗时很长

  •  配置ALL_BUILD的Windows SDK版本,如下,这里的所有配置都和cuda项目启动的配置一致,建议使用启动cuda自带的例子时自动生成得配置: 

  • 配置CUDA C/C++,如下: 

 这里Code Generation的配置也是从cuda项目那边复制过来的

 根据自己电脑情况填写最大进程数,这个我也不了解,就照着别人的+1来的

 编译成功如下:

打开文件夹成功生成lib和dll

 5. 生成op.h

        需将相关dll拷贝到D:\Software\apache-mxnet-src-1.9.0.rc8-incubating\cpp-package\scripts文件夹下,需拷贝的dll如下(具体哪些是哪个第三方包的我记不得了,反正就去mxnet自己和他所依赖的第三方包的文件夹下找):

         放好dll之后,进入cmd,进入该文件夹,再执行python OpWrapperGenerator.py libmxnet.dll,执行成功,结果如下:

 6. 运行环境配置

就是基本的包目录、库目录、附加依赖项等,如下(我这里截图的配置是之前编译的路径,大家根据自己的根目录来配置就行):

 这里还要重点说下可执行文件目录,可以直接在里面配置也可以在环境变量中配置path,我这边是配置的path,如下:

点击编辑,添加如下:

 7.问题描述

  • 找不到libmxnet.dll,这个就是没有配置path,配置上就好了(有些人会直接将dll放入项目中,这样确实可以找到dll文件了,但是如果依赖了其他dll,直接引入,就会报下面那种莫名其妙的错误)
  • 报莫名其妙的错误,如:0xC0000005:执行位置0x0000000000000000时出现访问冲突。也是没有配置path,配置上就好了
  • 其他不记得有啥问题了,大家有啥问题可以留言,看看我遇到过没

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++ 用vs2019编译mxnet1.9.0 的相关文章

  • 如何检查图像对象与资源中的图像对象是否相同?

    所以我试图创建一个简单的程序 只需在单击图片框中更改图片即可 我目前只使用两张图片 所以我的图片框单击事件函数的代码 看起来像这样 private void pictureBox1 Click object sender EventArgs
  • 当我使用“control-c”关闭发送对等方的套接字时,为什么接收对等方的套接字不断接收“”

    我是套接字编程的新手 我知道使用 control c 关闭套接字是一个坏习惯 但是为什么在我使用 control c 关闭发送进程后 接收方上的套接字不断接收 在 control c 退出进程后 发送方的套接字不应该关闭吗 谢谢 我知道使用
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • Newtonsoft JSON PreserveReferences处理自定义等于用法

    我目前在使用 Newtonsoft Json 时遇到一些问题 我想要的很简单 将要序列化的对象与所有属性和子属性进行比较以确保相等 我现在尝试创建自己的 EqualityComparer 但它仅与父对象的属性进行比较 另外 我尝试编写自己的
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • C# 中的递归自定义配置

    我正在尝试创建一个遵循以下递归结构的自定义配置部分
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • 在 Dynamics CRM 插件中访问电子邮件发件人地址

    我正在编写一个 Dynamics CRM 2011 插件 该插件挂钩到电子邮件实体的更新后事件 阶段 40 pipeline http msdn microsoft com en us library gg327941 aspx 并且在此阶
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • const、span 和迭代器的问题

    我尝试编写一个按索引迭代容器的迭代器 AIt and a const It两者都允许更改容器的内容 AConst it and a const Const it两者都禁止更改容器的内容 之后 我尝试写一个span
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐

  • 飞凌RZ/G2L的开发板实上的时视频编码推流设计与实现

    飞凌RZ G2L的开发板测评 实时视频编码推流设计与实现 大信 QQ 8125036 在完成RZ G2L板上视频采集的试用测试基础上 逐渐熟悉了RZ G2L开发板的SDK 在研究过它的音视频硬件与软件包后 想进一步利用该开发板做音视频的深度
  • YOLOv5算法原理与网络结构

    YOLOv5算法原理与网络结构 1 1 YOLOv5算法 YOLOv5算法共有4种网络结构 分别是YOLOv5s YOLOv5m YOLOv5l和YOLOv5x 这四种网络结构在宽度和深度上不同 原理上基本一样 接下来以 YOLOv5s 为
  • 【MySQL】 Linux平台MySQL安装

    Linux平台MySQL安装 太淦了 Linux平台MySQL安装 方式1 使用包管理器进行自动安装 方式2 编译源代码安装 1 下载源代码 1 1在 官网 https dev mysql com downloads mysql 下载源代码
  • 黑盒测试靶机(cmcc)以及对应系统加固方案

    目录 一 信息收集 二 进入web界面 三 redis 6379连接 四 连接蚁剑成功 这是个沙箱 五 redis入手 使用密钥连接 六 尝试docker越狱 七 针对docker进行入侵排查 从系统层面 1 检查进程 2 木马样本可以保留
  • 高通MDM平台-ChargeIC

    Charge IC 是负责管理外部供电以及电池充放电 在MDM平台上采用的是比较便宜的ChargeIC MP2617 其作用也仅限于控制对电池充放电 下面就简单的介绍下内核中关于chargeIC的驱动 以及dts配置 内核DTS 关于cha
  • python中close函数的用法_python中调用open函数打开文件,使用close函数关闭文件,调用什么函数可以实现对文件内容的读取。...

    参考答案如下 中调范仲淹任杭州太守时 遭遇饥荒 他采取的方式是 函e函函数茶多酚 TP 主要包括 数打使用数关什实现茶多酚的主要作用是 开文茶在植物学上的分类位置属于 件内茶多酚对人体的功效 茶太烫时不要用嘴去吹 闭文为了快速冷却你可以用另
  • 成员内部类、静态内部类、局部内部类、匿名内部类的精髓与应用

    目录 1 成员内部类 坐拥外部类 1 1 定义和使用 1 2 优势 2 静态内部类 悠然独立 2 1 定义和使用 2 2 优势 3 局部内部类 精巧隐藏 3 1 定义和使用 3 2 优势 4 匿名内部类 神秘而优雅 4 1 定义和使用 4
  • Java-使用线程池创建多线程

    Java 使用线程池创建多线程 1 概念 提前创建好多个线程 放入线程池总 使用时直接获取 使用完后放入池中 可以避免频繁创建销毁 实现重复利用 corePoolSize 核心池的大小 maximumPoolSize 最大线程数 keepA
  • Angular-组件

    Angular 组件 一 组件是Angular应用的主要构造块 组件包括 1 一个HTML模板 用于声明页面要渲染的内容 2 一个用于定义行为的TypeScript的类 3 一个CSS选择器 定义组件在模板中的使用方式 4 要应用在模板上的
  • 配置Log4j(很详细)

    来自 http www blogjava net zJun archive 2006 06 28 55511 html Log4J的配置文件 Configuration File 就是用来设置记录器的级别 存放器和布局的 它可接key va
  • 机器学习sklearn之贝叶斯网络实战(一)

    贝叶斯网络 贝叶斯网络 信念网络 贝叶斯模型或概率定向无环图形模型是一种概率图形模型 一种统计模型 通过有向无环图 DAG 表示一组随机变量及其条件依赖关系 当我们想要表示随机变量之间的因果关系时 主要使用贝叶斯网络 贝叶斯网络使用条件概率
  • linux查看某天的日志,LINUX查看某段时间的日志

    其一 sed 截选时间段日志 sed n 开始时间 结束时间 p 日志文件 使用sed命令如下 sed n 2020 05 04 09 25 55 2015 05 04 09 28 55 p logfile 这样可以精确地截取出来某个时间段
  • python学习笔记---常用内建模块【廖雪峰】

    常用内建模块 datetime Python处理日期和时间的标准库 datetime表示的时间需要时区信息才能确定一个特定的时间 否则只能视为本地时间 如果要存储datetime 最佳方法是将其转换为timestamp再存储 因为times
  • GD32F303调试小记(九)之FreeRTOS移植

    前言 距离上一次更新GD32系列的文章已经过了一年有余 按照之前的想法 仅仅介绍到GD32中常用的模块就结束了 在后续的开发中 有幸再次能使用这颗IC作为主控 所以既为了自己做个随笔 也为方便各位同行或是同学借鉴 这段时间我会编写几篇文章主
  • freeRTOS出现任务卡死的情况。

    最近在做一个产品二代升级的项目 代码是上一任工程师留下的 很多BUG 而且融合了HAL库和LL库 以及github上下载的GSM源码 很不好用 我这边是将2G模块换成了4G 且添加了单独的BLE模块 因此只在源码的基础上 去除2G和BLE代
  • 论坛直击

    关注ITValue 看企业级最新鲜 最价值报道 2020年对中国而言 是极其特殊的一年 新年伊始 一场突如其来的疫情席卷全国 各行各业均受到不同程度的冲击 房地产开发由于不能实地展业 影响尤甚 为此 在中国房地产业协会的支持下 中国房协数字
  • nginx配置多个前端项目,使用同一个后端

    这几天一直在搞nginx配置的东西 踩了很多坑 特此记录 前后端分离的项目有两种部署方案 第一种是把前端打包好的dist文件夹放在后端的static下面 然后打包后端 在服务器运行后端的这个jar包 没什么好说的 第二种是使用nginx配置
  • key-value store

    1 key value store key value分布式存储系统查询速度快 存放数据量大 支持高并发 非常适合通过主键进行查询 但不能进行复杂的条件查询 数据存储形式为
  • Linux I/O多路复用——poll模型实现服务端Socket通信

    目录 poll函数 参数说明 events相关 与select的不同 程序流程 程序实例 poll函数 poll模型在实现服务端时思路是和select类似的 可以说poll是select的加强版 poll函数原型如下 int poll st
  • c++ 用vs2019编译mxnet1.9.0

    一 编译环境之windows10 编译出动态库libmxnet dll libmxnet lib mxnet 70 lib及include头文件 一 环境及依赖 1 Windows10 2 Cuda11 1 3 Cudnn8 1 0 77