IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Paddle Influence编译心得 -> 正文阅读

[人工智能]Paddle Influence编译心得

?官方网站编译参考链接:

Paddle-Inference-Demo/source_compile.rst at master · PaddlePaddle/Paddle-Inference-Demo · GitHubhttps://github.com/PaddlePaddle/Paddle-Inference-Demo/blob/master/docs/user_guides/source_compile.rst# 一、环境准备

1、参照环境要求,准备gcc8.2,否则会碰到未知错误,比如

error: identifier "__builtin_ia32_sqrtsd_round" is undefined

安装参考链接:安装gcc8.2_u013948852的博客-CSDN博客_gcc82联网、root执行wget ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-8.2.0/gcc-8.2.0.tar.xztar -Jxvf gcc-8.2.0.tar.xz cd gcc-8.2.0/./contrib/download_prerequisitescd .. mkdir temp...https://blog.csdn.net/u013948852/article/details/100036039

2、切换gcc版本

Ubuntu16.04多个版本GCC编译器的安装和切换 - 小淼博客 - 博客园这几天在配置交叉编译ARM开发板的linux内核的过程中碰到了很多问题,其中包括了GCC版本太高等问题,由此我打算安装其他老的版本给我的Ubuntu16.04.实验过程如下: 官网的教程是最牛逼的,先https://www.cnblogs.com/uestc-mm/p/7511063.html3、由于我使用的proto版本是3.4.0,与官网上给定的3.1.0不一致,编译时产生如下问题:

third_party/protobuf/src/google/protobuf/stubs/port.h:263:5: error: this use of "defined" may not be portable [-Werror=expansion-to-defined]
?#if GOOGLE_PROTOBUF_USE_UNALIGNED
? ? ?^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
third_party/protobuf/src/google/protobuf/stubs/port.h:263:5: error: this use of "defined" may not be portable [-Werror=expansion-to-defined]
third_party/protobuf/src/google/protobuf/stubs/port.h:263:5: error: this use of "defined" may not be portable [-Werror=expansion-to-defined]
third_party/protobuf/src/google/protobuf/stubs/port.h:263:5: error: this use of "defined" may not be portable [-Werror=expansion-to-defined]

?通过对比发现,此原因在于proto3.4.0版本对.proto生成的third_party/protobuf/src/google/protobuf/stubs/port.h文件中有如下:

#ifdef GOOGLE_PROTOBUF_DONT_USE_UNALIGNED
# define GOOGLE_PROTOBUF_USE_UNALIGNED 0
#else
// x86 and x86-64 can perform unaligned loads/stores directly.
# define GOOGLE_PROTOBUF_USE_UNALIGNED defined(_M_X64) || \
? ? ?defined(__x86_64__) || defined(_M_IX86) || defined(__i386__)
#endif

#if GOOGLE_PROTOBUF_USE_UNALIGNED

?改成:

/*#ifdef GOOGLE_PROTOBUF_DONT_USE_UNALIGNED
# define GOOGLE_PROTOBUF_USE_UNALIGNED 0
#else
// x86 and x86-64 can perform unaligned loads/stores directly.
# define GOOGLE_PROTOBUF_USE_UNALIGNED defined(_M_X64) || \
? ? ?defined(__x86_64__) || defined(_M_IX86) || defined(__i386__)
#endif

#if GOOGLE_PROTOBUF_USE_UNALIGNED*/
#if defined(_M_X64) || defined(__x86_64__) || \
? ? defined(_M_IX86) || defined(__i386__)

因为proto3.1生成的port.h文件中只有如上语句,修改后即可编译通过。

二、修改CMakeList.txt

1、将CMakeList.txt中的github.com改成gitee.com;

2、将cmake文件夹下各个文件中的GIT_URL参数后面的名字改成xxx(个人创建的gitee仓库名);

3、将influence中需要用到的第三方库(连接到github的)都添加到xxx账户的gitee中;

4、由于pybind11会引用第三方子模块,会提示链接不上,因此本地修改仓库:

首先将pybind11仓库添加进gitee仓库中,然后开始做如下修改

//本地进行修改
git clone --recursive https://gitee.com/xxx/pybind11
cd pybind11
git submodule add https://gitee.com/xxx/clang-cindex-python3 tools/clang
//查看当前的状态(即修改了些什么) 
git status   
//将当前status中文件添加到暂缓区 
git add .
//提交修改信息到本地仓库并添加备注
git commit -m "添加clang"
//将本地仓库推送到远程仓库
git push origin master
创建本地仓库tag
git tag v2.4.8
推送到远程仓库
git push origin v2.4.8
查看远程仓库的tag
git ls-remote --tags origin

参考链接:

Git中tag标签的使用_Dream It Possible-CSDN博客_git tag一、什么是tagtag是git版本库的一个标记,指向某个commit的指针。tag主要用于发布版本的管理,一个版本发布之后,我们可以为git打上 v.1.0.1 v.1.0.2 ...这样的标签。tag感觉跟branch有点相似,但是本质上和分工上是不同的:tag 对应某次commit, 是一个点,是不可移动的。branch 对应一系列commit,是很多点连成的一根线,有一个H...https://blog.csdn.net/jdsjlzx/article/details/986549512020.6.17 gitee的修改与提交_学习uu学习的博客-CSDN博客_gitee 修改commit1、打开gitee bush,cd进入准备好的文件夹。2、git clone -b c7x https://-------.git (这里的地址必须是整个仓库的地址)3、cd进入本地仓库4、git config --global user.name "xxx" //自报家门5、git config --global user.email "---@qq.com"6、git status //查看当前的状态(即修改了些什么)6、git add...https://blog.csdn.net/qq_42200028/article/details/106807013git中submodule子模块的添加、使用和删除_guotianqing的博客-CSDN博客_git 子模块背景项目中经常使用别人维护的模块,在git中使用子模块的功能能够大大提高开发效率。使用子模块后,不必负责子模块的维护,只需要在必要的时候同步更新子模块即可。本文主要讲解子模块相关的基础命令,详细使用请参考man page。子模块的添加添加子模块非常简单,命令如下:git submodule add <url> <path>其中,url为子模块...https://blog.csdn.net/guotianqing/article/details/82391665?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1.no_search_link&utm_relevant_index=1Git 修改后提交的命令总结 - YangJunwei版本库包含暂存区和分支http://yangjunwei.com/1506.html

将Paddle/cmake/external/pybind11.cmake修改为

SET(PYBIND_TAG            v2.4.8)

即可编译通过。?

三、修改系统配置

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-11 23:59:55  更:2022-01-12 00:00:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 5:59:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码