基于openeuler aarch_64 下,从源码的角度搭建Tensorflow
为什么从源码编译Tensorflow?
安装过的人们都知道如果
pip install tensorflow
的话会报错Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
考虑到操作系统的的兼容性,现有的编译好的二进制安装包不适用openeuler,所以考虑这些因素,我们要自己搭建。
我们需要bazel交叉编译软件,有点类似cmake(上游下载的开源.sh文件已上传到仓库)bazel下载地址
chmod +x bazel-0.28.0-installer-linux-x86_64.sh./bazel-0.28.0-installer-linux-x86_64.sh --userbazel version查看版本,configure.py查看tf所支持的版本(2.3版本所支持的bazel)
_TF_MIN_BAZEL_VERSION = '0.27.1'
_TF_MAX_BAZEL_VERSION = '0.29.1'
下载TF
git clone https://github.com/tensorflow/tensorflowgit barach -a查看所有发行版本git checkout <version>将分支同步到本地
开始编译
bazel build --config=opt --config=cuda //tensorflow:libtensorflow_cc.so(C文件库)bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package(wheel文件)bazel build --config=opt --config=cuda //tensorflow:libtensorflow.so(生成C库)bazel build --config=opt //tensorflow/lite:libtensorflowlite.so(Lite库)
bazel编译有的时候会出issue现bug,详见issue
openeuler搭建Bulid Not Successfully 的Bug情况汇总
源码编译链接
官网上说安装需要pip19以上
关于openeulerpip源默认指向python2该如何修改:
#!/usr/bin/python2=====>!/usr/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
2、修改默认指向由于版本不同所发生的bug
from pip import main
ImportError: cannot import name 'main' from 'pip' (/usr/lib/python3.7/site-packages/pip/__init__.py)
source code change to this
from pip import __main__ //这行也要修改
if __name__ == '__main__':
sys.exit(__main__._main())//增加__main__._
PRODUCT
[root@openeuler lzb]# pip -V
pip 20.1.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
安装 TensorFlow pip 软件包依赖项(如果使用虚拟环境,请省略 --user 参数):
pip install -U --user pip six numpy wheel setuptools mock 'future>=0.17.1'
pip install -U --user keras_applications --no-deps
pip install -U --user keras_preprocessing --no-deps
setup.py we can know the vesion and dependence on REQUIRED_PACKAGES
> REQUIRED_PACKAGES = [
> 'absl-py >= 0.7.0',
> 'astunparse == 1.6.3',
> 'flatbuffers >= 1.12',
> 'gast == 0.3.3',
> 'google_pasta >= 0.1.8',
> 'h5py >= 2.10.0, < 2.11.0',
> 'keras_preprocessing >= 1.1.1, < 1.2',
> # TODO(mihaimaruseac): numpy 1.19.0 has ABI breakage
> # https://github.com/numpy/numpy/pull/15355
> 'numpy >= 1.16.0, < 1.19.0',
> 'opt_einsum >= 2.3.2',
> 'protobuf >= 3.9.2',
> 'tensorboard >= 2.3.0, < 3',
> 'tensorflow_estimator >= 2.3.0, < 2.4.0',
> 'termcolor >= 1.1.0',
> 'wrapt >= 1.11.1',
> 'w**h*eel >= 0.26',
> 'six >= 1.12.0',
> ]
基于openeuler aarch_64 下,从源码的角度搭建Tensorflow的更多相关文章
- 基于Eclipse IDE的Ardupilot飞控源码阅读环境搭建
基于Eclipse IDE的Ardupilot飞控源码阅读环境搭建 作者:Awesome 日期:2017-10-21 需准备的软件工具 Ardupilot飞控源码 PX4 toolchain JAVA ...
- 适合新手:从零开发一个IM服务端(基于Netty,有完整源码)
本文由“yuanrw”分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读,但最好有一定的网络 ...
- Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析
Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析 本文简要介绍了基于 Spring 的 web project 的启动流程,详细分析了 Spring 框架将开发人员基于 XML ...
- 基于vitamio的网络电视直播源码
这个项目是基于vitamio的网络电视直播源码,也是一个使用了vitamio的基于安卓的网络直播项目源码,可能现在网上已经有很多类似这样的视频播放应用了,不过这个还是相对来说比较完整的,希望这个案例能 ...
- [C#] .NET Core项目修改project.json来引用其他目录下的源码等文件的办法 & 解决多框架时 project.json 与 app.config冲突的问题
作者: zyl910 一.缘由 项目规模大了后,经常会出现源码文件分布在不同目录的情况,但.NET Core项目默认只有项目目录下的源码文件,且不支持"Add As Link"方式 ...
- 从源码的角度看 React JS 中批量更新 State 的策略(下)
这篇文章我们继续从源码的角度学习 React JS 中的批量更新 State 的策略,供我们继续深入学习研究 React 之用. 前置文章列表 深入理解 React JS 中的 setState 从源 ...
- Linux 系统下用源码包安装软件
Linux系统下用源码包安装软件 by:授客 QQ:1033553122 下载源码安装包,解压或者直接双击打开(如果有安装zip或rar等压缩/解压缩软件的话),查找相关的安装说明文件,一般是READ ...
- 基于jQuery经典扫雷游戏源码
分享一款基于jQuery经典扫雷游戏源码.这是一款网页版扫雷小游戏特效代码下载.效果图如下: 在线预览 源码下载 实现的代码. html代码: <center> <h1>j ...
- 【转】Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9153761 记得在前面的文章中,我带大家一起从源码的角度分析了Android中Vi ...
随机推荐
- Luogu P5307 [COCI2019] Mobitel
题意 有一个 \(r\times c\) 的矩阵 \(a\),矩阵的每个位置都有一个正整数,求从左上角走到右下角并且满足路径上数字乘积之和大于 \(n\) 的方案数. \(\texttt{Data R ...
- pytorch 图像分类数据集(Fashion-MNIST)
import torch import torchvision import torchvision.transforms as transforms import matplotlib.pyplot ...
- 微信小程序-游记分享(无后台)
游记分享 博客班级 https://edu.cnblogs.com/campus/zjcsxy/SE2020 作业要求 https://edu.cnblogs.com/campus/zjcsxy/SE ...
- 执行 yarn init报错,如何解决?
安装yarn以后执行yarn init 命令来初始化项目 报错如下所示: 解决方法: 1.先用npm init初始化项目 在初始化的最后一步 is this ok(yes)? 输入yes回车后,可能会 ...
- CORS跨域请求:前后端分离
1. 请求过滤器: /** * OncePerRequestFilter保证在任何Servlet容器中都是一个请求只执行一次的过滤器. */ public class CorsFilter exten ...
- tcp syn-synack-ack 服务端接收ack
TCP 服务端 接收到ack tcp_v4_rcv() -> tcp_v4_do_rcv() -> tcp_v4_hnd_req() + tcp_child_process()tcp_v4 ...
- Vue2.x 响应式部分源码阅读记录
之前也用了一段时间Vue,对其用法也较为熟练了,但是对各种用法和各种api使用都是只知其然而不知其所以然.最近利用空闲时间尝试的去看看Vue的源码,以便更了解其具体原理实现,跟着学习学习. Proxy ...
- 在线动态修改ulimit
前言 系统中有些地方会进行资源的限制,其中的一个就是open file的限制,操作系统默认限制的是1024,这个值可以通过各种方式修改,本篇主要讲的是如何在线修改,生产上是不可能随便重启进程的 实践 ...
- 解决IE下readonly的Input光标选中的问题
首先用unselectable="on"解决,但是这种方法bug太多, 屏蔽了input的onblur事件(也就是focus事件在Angualr下),所以只能用click事件来代替 ...
- Apache POI读写Excel
Apache POI是Apache软件基金会的开放源码函式库,POIAPI给Java程序对Microsoft Office格式档案读和写的功能. 官方文档 [https://poi.apache.or ...