由于飞腾CPU是aarch64指令集,当前并不存在可以通过pip直接安装的tensorflow包。因此我们只能通过编译安装。但是,要编译安装Tensorflow,必须要首先安装Bazel,而要安装Bazel必须要解决相关的各种包依赖问题。

飞腾CPU+银河麒麟基础依赖安装

首先要安装pip:

sudo apt update

sudo apt install python-pip

pip install --upgrade pip

sudo apt-get install pkg-config zip g++ zlib1g-dev unzip

安装上述包一般都没有问题,但是下面这些包就不一定了:

sudo apt-get install python-dev

sudo apt-get install python-numpy python-wheel python-virtualenv

银河麒麟的服务器源我没找到,手头只有桌面版本的源,可以发现这些包不够新。对于python-dev这个包,可以通过ubuntu的相应包进行安装。在一台Ubuntu上执行:

apt-get download python-dev

会得到一个以python-dev-…….deb命名的一个包,然后在银河麒麟机器上你可以这样安装这个包:

sudo dpkg -i python-dev-…….deb

对于python-numpy python-wheel python-virtualenv这几个包,可以通过pip来安装:

sudo pip install numpy wheel virtualenv

基于飞腾CPU+银河麒麟操作系统的Bazel编译与安装

首先我们要获得一份Bazel-0.5.4版本源码:

wget https://github.com/bazelbuild/bazel/releases/download/0.5.4/bazel-0.5.4-dist.zip

mkdir bazel-0.5.4

unzip bazel-0.5.4-dist.zip -d bazel-0.5.4

diff --git a/scripts/bootstrap/buildenv.sh b/scripts/bootstrap/buildenv.sh

index 502f2c1..a2ab4dc 100755

--- a/scripts/bootstrap/buildenv.sh

+++ b/scripts/bootstrap/buildenv.sh

@@ -40,7 +40,7 @@ PLATFORM="$(uname -s | tr 'A-Z' 'a-z')"

MACHINE_TYPE="$(uname -m)"

MACHINE_IS_64BIT='no'

-if [ "${MACHINE_TYPE}" = 'amd64' -o "${MACHINE_TYPE}" = 'x86_64' -o "${MACHINE_TYPE}" = 's390x' ]; then

+if [ "${MACHINE_TYPE}" = 'amd64' -o "${MACHINE_TYPE}" = 'x86_64' -o "${MACHINE_TYPE}" = 's390x' -o "${MACHINE_TYPE}" = 'aarch64' ]; then

MACHINE_IS_64BIT='yes'

fi

diff --git a/src/main/java/com/google/devtools/build/lib/util/CPU.java b/src/main/java/com/google/devtools/build/lib/util/CPU.java

index 7a85c29..e5f3eae 100755

--- a/src/main/java/com/google/devtools/build/lib/util/CPU.java

+++ b/src/main/java/com/google/devtools/build/lib/util/CPU.java

@@ -26,6 +26,7 @@ public enum CPU {

X86_64("x86_64", ImmutableSet.of("amd64", "x86_64", "x64")),

PPC("ppc", ImmutableSet.of("ppc", "ppc64", "ppc64le")),

ARM("arm", ImmutableSet.of("arm", "armv7l")),

+ AARCH64("aarch64", ImmutableSet.of("aarch64")),

S390X("s390x", ImmutableSet.of("s390x", "s390")),

UNKNOWN("unknown", ImmutableSet.of());

diff --git a/third_party/BUILD b/third_party/BUILD

index 9cd2fac..f1cd14c 100755

--- a/third_party/BUILD

+++ b/third_party/BUILD

@@ -583,6 +583,11 @@ config_setting(

)

config_setting(

+ name = "aarch64",

+ values = {"host_cpu": "aarch64"},

+)

+

+config_setting(

name = "freebsd",

values = {"host_cpu": "freebsd"},

)

上面是常规操作,但是并不能保证Bazel在银河麒麟系统上正确编译:银河麒麟系统自己源里面的jdk似乎做了一些设置,导致找不到rt.jar里面的一些类和一些包。这是因为javac在运行的时候会默认在符号表ct.sym (同样在jre/lib/下)中查找该类是否存在。解决的方法是在javac中加上编译选项-XDignore.symbol.file,这就需要修改两处代码。 一处是bazel-0.5.4/script/bootstrap/compile.sh的122行,本来是

run "${JAVAC}" -classpath "${classpath}" -sourcepath "${sourcepath}" \

现在改成

run "${JAVAC}" -XDignore.symbol.file -classpath "${classpath}" -sourcepath "${sourcepath}" \

另外一处是bazel-0.5.4/compile.sh的123行:

bazel_build "src:bazel${EXE_EXT}" \

现在改成

bazel_build --javacopt="-XDignore.symbol.file" "src:bazel${EXE_EXT}" \

然后运行bazel-0.5.4/compile.sh即可获得bazel-0.5.4/output/bazel,将这个文件复制到/usr/bin/bazel即可成功安装bazel。

使用Bazel编译Tensorflow

首先要从github下载tensorflow的1.5.0版本,一定要是这个版本,因为只有这个版本我能告诉你在编译的时候可以选什么选项。获得了这个版本的代码解压到tf文件夹以后,运行如下命令

./configure

这个过程中会让你选择众多编译选项,记住俩事儿:只打开jemalloc的相关选项,别的都不要打开。然后运行:

bazel build -c opt --copt="-funsafe-math-optimizations" --copt="-ftree-vectorize" --copt="-fomit-frame-pointer" --verbose_failures tensorflow/tools/pip_package:build_pip_package

bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

接下来编译会进行相当长的时间。编译完成后就可以通过pip安装了:

sudo pip install /tmp/tensorflow_pkg/tensorflow-1.5.0rc0-cp27-cp27mu-linux_aarch64.whl

linux飞腾cpu,基于飞腾CPU+银河麒麟操作系统编译安装tensorflow相关推荐

  1. 基于飞腾CPU+银河麒麟操作系统编译安装tensorflow

    为什么80%的码农都做不了架构师?>>>    由于飞腾CPU是aarch64指令集,当前并不存在可以通过pip直接安装的tensorflow包.因此我们只能通过编译安装.但是,要编 ...

  2. 银河麒麟aarch64 编译安装Qt5.9.9

    银河麒麟aarch64 编译安装Qt5.9.9 目前在银河麒麟V10 aarch64系统下编译安装后可用的最高版本是Qt5.12.0 验证了很多版本,都存在xcb的问题 Qt5.12.0版本编译安装方 ...

  3. 飞腾arm服务器下的银河麒麟V10 yum 安装docker

    银河麒麟V10 yum 安装docker 1. 查看版本 1. 1 增加软件源 1. 2 yum安装docker的命令 2. 安装仓库 2.1 安装缺少的依赖container-selinux 2.2 ...

  4. 银河麒麟操作系统上安装docker

    查看操作系统版本 #查看麒麟系统对应的linux os cat /proc/version 可以看到输出的内容中有 "Ubuntu1~16.04.10" 字样*,即银河麒麟与Ubu ...

  5. 国产化操作系统银河麒麟操作系统V10安装部署Go详讲解

    一.Go概述 Go 是一种开源编程语言,可以轻松构建简单.可靠和高效的软件.它是静态类型的并生成编译的机器代码二进制文件.Go语言是一种编译语言,这在开发人员中很受欢迎,因为这意味着不需要编译源代码来 ...

  6. 银河麒麟操作系统v10sp1安装eclipse

    前言 本文介绍银河麒麟桌面操作系统V10sp1的2203版本上安装部署eclipse集成开发环境. 1 系统信息查看 右键点击我的电脑,选择属性,进行查看系统信息 或者也可以在终端输入命令来查看系统信 ...

  7. 银河麒麟操作系统离线安装nginx

    操作系统: uname -a XXXX4.19.90-17.ky10.aarch64 #1 SMP Sun Jun 28 14:27:40 CST 2020 aarch64 aarch64 aarch ...

  8. 银河麒麟操作系统V10 安装KVM

    一.安装kvm 1.查看机器是否支持虚拟化 输入命令: #egrep -c '(vmx|svm)' /proc/cpuinfo     //输出结果大于0即代表支持 2.安装kvm组件 输入命令: 桌 ...

  9. 银河麒麟操作系统常见运维问题

    目录 银河麒麟  常见运维问题 1 安装问题 1) 高级安装ARM版本系统,新建分区sda1必须是/boot分区,sda2是根分区? 2) 用光盘安装或者U盘安装时,无法进入安装界面问题 3) 麒麟系 ...

最新文章

  1. UITableView模版
  2. java 引用传递_详解java的值传递、地址传递、引用传递
  3. 论坛报名 | 视觉大模型是实现视觉智能的必由之路吗?
  4. 这四个问题场景你会排查原因吗?看看高手是如何使用 Arthas 快速定位原因的!...
  5. Parallel Query Bitmap
  6. 用博弈论的思想玩游戏(洛谷P3150题题解,Java语言描述)
  7. java 中linux命令参数说明,java中linux命令参数说明
  8. Windows 取消 Lock Screen 显示
  9. Linux Telnet用法详解
  10. linux多媒体功能,Ubuntu 8.04中文强化版 多媒体功能更强大
  11. 计算机如何建立小型服务器,如何将个人PC搭建成小型服务器
  12. LIF-Seg 激光雷达与相机图像融合的三维激光雷达语义分割
  13. 研究生学习生活日记——第五次组会
  14. 一级b仅html格式保存,一级B考试模拟试题-第一套,DOS版本:6.0
  15. cs,ds,ss,es?即cs,ds,ss,es的区别
  16. Matlab多元非线性函数拟合
  17. 在Linux手机上编译和运行2048游戏学习C++
  18. 如何伪原创视频创作 视频文件里的md5
  19. 易云维®智慧工业云平台让ChatGPT重新认识一下中国制造业信息化水平
  20. 一次性全部给你,这4款名不见经传的精品软件,用了就放不下

热门文章

  1. HTML交叉报表制作,交叉报表- 交叉式报表-复杂报表设计教程| 快逸报表工具用户手册...
  2. RabbitMQ(三)发布确认 Publisher Confirms
  3. python输入素数为什么要先判断是否是素数再用欧拉筛法
  4. 编写程序,根据输入的n,输出如下例所示的图形。
  5. 呼吸系统疾病病人的护理题库【1】
  6. ardupilot GPS代码分析
  7. 数据分析-数据分析报告
  8. codeforces 618 C. Constellation(三角形,三点共线)
  9. Kubernetes API Aggregation在 Master 的 API Server 中启用 API 聚合功能注册自定义 APIService 资源实现和部署自定义的 API Serv
  10. dellg3计算机rom,戴尔G3 U盘装系统win7教程