ARM 64-bit上安装Tensorflow框架

本文详细介绍了如何在ARM64架构下安装Bazel 0.4.4版本,包括安装必要的Java环境和其他依赖库,以及针对ARM64架构进行的配置调整。此外还涉及到了解决编译过程中遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Bazel安装

  • Cracle jdk 8 安装:
$ sudo apt-get install openjdk-8-jdk
  • 为了安装Bazel,我们还需要安装其他工具或者库
$ sudo apt-get install pkg-config zip g++ zlib1g-dev unzip
  • 下载Bazel 发布版本 0.4.4。很多人指出0.4.3有很多Bug,它将有可能安装Tensorflow失败。
$ wget https://github.com/bazelbuild/bazel/releases/download/0.4.4/bazel-0.4.4-dist.zip
$ mkdir bazel-0.4.4
$ unzip bazel-0.4.4-dist.zip -d bazel-0.4.4
$ cd bazel-0.4.4
  • 因为使用的架构是 aarch64,所以修改bazel源文件

    1. 打开 bootstrap/buildenv.sh ,并且将” - ” 号行内容用” + ” 号行内容替换掉,下同。
vim ./scripts/bootstrap/buildenv.sh
 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
  1. 打开 BuildConfiguration.java,并且添加下面内容。
vim ./src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
                 return "arm";
               case S390X:
                 return "s390x";
+             case AARCH64:
+               return "aarch64";
               default:
                 return "unknown";
             }
  1. 打开 CPU.java,并添加下面内容。
vim ./src/main/java/com/google/devtools/build/lib/util/CPU.java
   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.<String>of());
  1. 打开 BUILD,并且添加下面内容。
vim ./third_party/BUILD
+config_setting(
+    name = "aarch64",
+    values = {"host_cpu": "aarch64"},
+)

config_setting(
     name = "freebsd",
     values = {"host_cpu": "freebsd"},
 )
  1. 打开 cc_configure.bzl,并且替换掉下面内容。
vim ./tools/cpp/cc_configure.bzl
result = repository_ctx.execute(["uname", "-m"])
   if result.stdout.strip() in ["power", "ppc64le", "ppc"]:
     return "ppc"
-  if result.stdout.strip() in ["arm", "armv7l", "aarch64"]:
+  if result.stdout.strip() in ["arm", "armv7l"]:
     return "arm"
+  if result.stdout.strip() in ["aarch64"]:
+    return "aarch64"
   return "k8" if result.stdout.strip() in ["amd64", "x86_64", "x64"] else "piii"
  • 编译
./compile

可能出现错误,java内存泄露问题,进入compile.sh中:

vim scripts/bootstrap/compile.sh

并且替换下面内容

- ${JAVAC}" -classpath "${classpath}" -sourcepath "${sourcepath}"
+ ${JAVAC}" -J-Xms256m -J-Xmx384m -classpath "${classpath}" -sourcepath "${sourcepath}"

最后运行compile

./compile

成功安装bazel 0.4.4。


警告


当然,如果再以这种版本的bazel安装tensorflow1.0时候会出现一些错误,应为bazel在0.6版本左右的时候改变了下载验证的方式,所以之前的所做的工作都没什么卵用,但最终我安装了tensorflow1.5版本在nanopc T3 上,通过ARM64架构安装Tensorflow 这篇文章成功安装。

参考


Running Google Machine Learning Library Tensorflow On ARM 64-bit Platform

bazel compilejava.lang.OutOfMemoryErro

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值