银河麒麟(Kylin) - V4 移植Tensorflow-1.10.1版本 + Bazel编译工具编译

1 篇文章 0 订阅
1 篇文章 0 订阅

银河麒麟(Kylin) - V4 移植Tensorflow-1.10.1版本 + Bazel编译工具编译



在这里插入图片描述

原因

项目需求:需要用到Tensorflow工具处理数据,在网络上搜索发现ARM平台没有可以直接安装的安装包,想要用这个工具只能编译源码。在此期间测试了Tensorflow其他版本都是因为编译中报各种错误,导致编译失败。项目需求指定操作系统只能用银河麒麟系统V4版本,Tensorflow版本也是指定只能是1.X版本,不能用最新的2.X版本。还好不指定Tensorflow-1.X后面的小版本号。经过长达一个星期的测试编译各种Tensorflow1.X版本,终于在测试编译Tensorflow-1.10.1版本编译成功了!!!
在此记录、方便以后查看。


测试环境

电脑配置

  • 主板 :联想KaiTian M740J
  • CPU:飞腾 D2000/8(64位,8核)
  • 内存:16G
  • 硬盘:256GB
  • 系统:银河麒麟桌面操作系统V4
  • 平台架构:ARM


准备工作

1、编译Tensorflow有对应的编译工具如图:

在这里插入图片描述

注意:

我编译的版本为CPU版本

如果需要GPU版本:点击查看构建工具与Tensorflow对应的版本

2、TensorFlow 软件适配

安装编译需要的依赖包

  • Java 8 (e.g. openjdk-8-jre) installed
  • Python
  • Pip
  • NumPy
  • python-virtualenv
  • Bazel 0.15.0
$ apt-get install python-dev
$ sudo apt update
$ sudo apt install python-pip
$ pip install --upgrade pip
$ pip install setuptools six numpy wheel mock
$ pip install keras_preprocessing
$ apt-get install python-enum34

我的系统自带JDK8版本

没有的话自己下载一个安装:
Install OpenJDK 8

$ wget http://openjdk.linaro.org/releases/jdk8u-server-release-1708.tar.xz
$ tar xvf jdk8u-server-release-1708.tar.xz
$ cd jdk8u-server-release-1708
$ export JAVA_HOME=$PWD
$ cd jre/lib/security/
$ rm cacerts
 
(for CentOS 7) $ ln --symbolic /etc/pki/java/cacerts .
(for Debian Jessie) $ ln --symbolic /etc/ssl/certs/java/cacerts . 
 
 
$ cd jdk8u-server-release-1708/bin
$ export PATH=$PWD:$PATH


编译

1、编译安装Bazel

先创建一个bazel-0.15.0文件夹,在解压bazel-0.15.0-dist.zip文件指向这个创建的bazel-0.15.0文件夹。(不指向文件夹的话解压的所有文件都在当前目录下)
进入bazel-0.15.0文件夹

$ mkdir bazel-0.15.0
$ unzip bazel-0.15.0-dist.zip -d bazel-0.15.0
$ cd bazel-0.15.0

执行编译

$ ./compile.sh
#Copy bazel to $PATH
$ sudo cp output/bazel /usr/bin/

如图:出现这行代表编译完成
在这里插入图片描述

编译完成bazel在bazel-0.15.0文件夹的output文件夹里

最后打开output文件夹执行:./bazel会有个初始化的过程,如果正常打印,没有异常抛出那么恭喜你成功了。

在这里插入图片描述

把bazel文件拷贝到/usr/bin/下

$ bazel

在这里插入图片描述

安装完成

注意:

bazel和tensorflow有版本依赖关系,如果使用bazel编译tensorflow源代码切记版本不要搞错了。

RAM>=4GB,ROM>=16GB,编译整个过程RAM占用一度大于2GB,可能会内存溢出

CPU整个过程都几乎满载,编译过程中注意散热问题,不要编译到一半机器死掉

2、编译安装Tensorflow

  • 编译选项和以及平台相关修改
  • 针对飞腾平台,需要对部分源码进行少量修改,具体如下:
  1. tensorflow/BUILD 文件:
    添加:
config_setting(
       name = "linux_aarch64", 
       values = {"cpu": "aarch64"}, 
       visibility = ["//visibility:public"], 
       )
  1. tensorflow/contrib/lite/kernels/internal/BUILD 文件:
    注释掉所有 mfpu 相关的编译选项。

  2. 编译选项

$ ./configure

Python 版本路径选择填写:/usr/bin/python

jemalloc的相关选项 Y。

其余选项均选择 N 或 n。

  • 编译及安装
    进行编译:
$ 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

如图:Build pip package
在这里插入图片描述

得到:tensorflow-1.10.1-cp27-cp27mu-linux_aarch64.whl

  1. 编译完成后,tensorflow 包位于:/tmp/tensorflow_pkg/下。
  2. 安装 TensorFlow:
$ pip install /tmp/tensorflow_pkg/tensorflow-1.10.1-cp27-cp27mu-linux_aarch64.whl
  1. 查看TensorFlow
 $  pip show tensorflow  

在这里插入图片描述

  1. TensorFlow 软件功能验证
    4.1 验证 TensorFlow 安装
    在 python 交互式环境下验证 TensorFlow 是否正确安装。

在这里插入图片描述

看到以上输出,说明 TensorFlow 已经安装完成。

  1. 测试demo
#!/usr/bin/env python
import os
import tensorflow as tf
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
 
mnist = tf.keras.datasets.mnist
 
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
 
model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])
 
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
 
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

执行结果如下

在这里插入图片描述


安装完成

编译成功:Kylin-4.0.2-desktop-sp4-arm64 编译完成 bazel-0.15.0

编译成功:Kylin-4.0.2-desktop-sp4-arm64 编译完成tensorflow-1.10.1-cp27-Linux

  • 26
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MongoDB是一种高性能、可伸缩的非关系型数据库,在各个行业中都有广泛的应用,而麒麟Kylin v10则是一种高效稳定的操作系统。为了能在这个操作系统上运行MongoDB,需要进行移植。本文将介绍MongoDB-4.0.1在麒麟Kylin v10上的移植指南。 1.环境准备 在进行移植之前,需要确认环境是否准备好。确保Kylin v10的操作系统版本为最新版本,拥有足够的空间以及安装了gcc,g++, make, automake和libtool等编译工具和库文件。同时,还需要安装scons作为MongoDB的编译工具。 2.源代码下载 从MongoDB的官方网站上下载最新版本的源代码并解压缩到指定目录下。 3.修改并编译 在解压缩后的MongoDB源码目录下,执行以下命令: ``` $ git checkout r4.0.1 $ scons --disable-warnings-as-errors -j<core number> ``` 这将会自动对源代码进行编译,并在bin目录下生成mongod、mongo等可执行程序。 4.修改配置文件 在Kylin v10的操作系统环境下,可能需要对MongoDB的配置文件进行一定的修改,以保证MongoDB服务器的正常运行。例如,需要修改MongoDB所使用的数据存储位置和可用端口号等。 5.启动MongoDB服务器 执行以下命令来启动MongoDB服务器: ``` $ mongod --fork --dbpath=<path to data files> --port=<port number> ``` 其中,--fork参数表示在后台启动MongoDB服务器,--dbpath参数用于指定MongoDB的数据存储路径,--port参数指定MongoDB服务器监听的端口号。 6.连接管理 使用mongo命令连接MongoDB服务器,并进行相关管理操作。在连接后,可以进行数据添加、查询、删除等操作。 以上就是MongoDB-4.0.1在麒麟Kylin v10上的移植指南。在上述步骤完成后,就可以在Kylin v10操作系统上运行MongoDB,并进行相应的数据管理操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

alin、m

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值