---
title: 源码编译安装
description: "本章节提供基础版本、开启ACL特性版本、适配TensorFlow v1.x特性版本和开启NUMA特性版本四种编译安装TensorFlow 2.13.0的场景和方法，请根据实际情况选择对应的编译命令。"
url: https://www.hikunpeng.com/document/detail/zh/SRA/ecosystemEnable/TensorFlow/kunpengtensorflow_02_0009.html
sourcePath: /source/zh/SRA/ecosystemEnable/TensorFlow/kunpengtensorflow_02_0009.html
indexId: b9fc33e1c1e04c18eea7d9a7f07fd192f991db30273e96c89ff22a51783a146472
---
# 源码编译安装

本章节提供基础版本、开启ACL特性版本、适配TensorFlow v1.x特性版本和开启NUMA特性版本四种编译安装TensorFlow 2.13.0的场景和方法，请根据实际情况选择对应的编译命令。

1. 获取TensorFlow 2.13.0版本源码。

  a. 在本地浏览器下载TensorFlow源码    v2.13.0.zip(https://github.com/tensorflow/tensorflow/archive/refs/tags/v2.13.0.zip)
，下载得到的源码压缩包是tensorflow-2.13.0.zip。
  b. 将源码上传至服务器。
若服务器可以访问网络，则可以直接在服务器上使用wget命令下载源码。

```
wget -O tensorflow-2.13.0.zip https://github.com/tensorflow/tensorflow/archive/refs/tags/v2.13.0.zip --no-check-certificate
```


2. 安装依赖组件。
  1 2 3 4 5 6 7 yum install patchelf perl python3-devel pip3 install numpy==1.24.3 pip3 install packaging pip3 install requests pip3 install wheel export C_INCLUDE_PATH=/usr/include/python3.9:$C_INCLUDE_PATH export CPLUS_INCLUDE_PATH=/usr/include/python3.9:$CPLUS_INCLUDE_PATH

  上述配置环境变量命令中的路径“/usr/include/python3.9”为Python.h所在目录，以实际编译环境中的路径为准。

3. 解压TensorFlow安装包。
  1 unzip tensorflow-2.13.0.zip

  解压后的目录为“tensorflow-2.13.0”。

4. 进入“tensorflow-2.13.0”目录。
  1 cd tensorflow-2.13.0

5. 执行configure，设置配置选项。
```
./configure
```

configure配置过程步骤解析：

  a. 确认可执行程序Python的位置。
    1 Please specify the location of python. [Default is /usr/bin/python3]:

    如果python3路径和上述默认相同，直接按“Enter”确认；否则，请输入正确的python3路径。

  b. 确认Python lib库的位置。
    1 Please input the desired Python library path to use. Default is [/home/xxx/test]

    如Python lib路径和上述默认相同，直接按“Enter”确认；否则，请输入正确的Python lib库的路径。

  c. 确认是否配置ROCm特性。
    ROCm是指AMD的开源GPU加速计算平台，它可以在AMD的GPU上实现高性能计算。如果TensorFlow运行在AMD的GPU上，可以选择“y”；否则选择“N”。

    1 Do you wish to build TensorFlow with ROCm support? [y/N]:

    本文选择“N”。

    1 No ROCm support will be enabled for TensorFlow.

  d. 确认是否配置CUDA特性。
    CUDA是英伟达公司推出的一种并行计算平台和编程模型，它可以利用GPU的并行计算能力加速各种科学计算、图形处理、深度学习等应用程序。是否希望使用CUDA支持构建，如果需要则选择“y”；否则选择“N”。

    1 Do you wish to build TensorFlow with CUDA support? [y/N]:

    本文选择“N”。

    1 No CUDA support will be enabled for TensorFlow.

  e. 确认是否配置最新的clang编译器。
    如果编译环境上已有clang编译器，可以选择“N”；否则选择“y”。

    1 Do you wish to download a fresh release of clang? (Experimental) [y/N]:

    本文选择“N”。

    1 Clang will not be downloaded.

  f. 配置编译选项。
    1 Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -Wno-sign-compare]:

    直接按“Enter”确认。

  g. 在构建Android应用程序时，确认是否设置工作空间。
    构建非Android应用程序时，选择“N”；否则选择“y”。

    1 "Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]:"

    本文选择“N”。

    1 Not configuring the WORKSPACE for Android builds.

6. 编译TensorFlow。

**表1 部分扩展特性参数说明（详细配置请参见源码目录下的.bazelrc文件）**

| config参数 | 描述 |
| --- | --- |
| \-\-config=mkl\_aarch64 | 集成oneDNN和Arm架构计算库（ACL）特性。 |
| \-\-config=numa | 集成NUMA特性。 |
| \-\-config=v1 | 使用TensorFlow 1.x版本的API替换TensorFlow 2.x版本的API。 |


- 从源码构建TensorFlow会在路径/root/.cache/bazel下产生编译临时文件，确保根路径剩余空间不少于8GB。

- 从源码构建TensorFlow会消耗大量内存资源，如果您的系统受内存限制，编译命令则需要添加参数--local_ram_resources，例如--local_ram_resources=2048表示将内存开销限制为2048MB。

- 从源码构建TensorFlow会消耗大量CPU资源，编译命令添加参数--local_cpu_resources可以对CPU资源进行限制，例如--local_cpu_resources=4表示占用4颗CPU资源（在终端执行lscpu命令，查看CPU数量，根据实际需要设置local_cpu_resources的值）。


以下介绍四种编译方法，请根据实际情况进行选择。

  - 编译基础版本。
    1 bazel build //tensorflow/tools/pip_package:build_pip_package

    回显显示如上图信息，则表示编译成功。

  - 编译开启mkl_aarch64特性的版本。
    1 bazel build //tensorflow/tools/pip_package:build_pip_package --config=mkl_aarch64

    回显显示如上图信息，则表示编译成功。

  - 编译适配TensorFlow v1.x特性的版本。
    1 bazel build //tensorflow/tools/pip_package:build_pip_package --config=v1

    回显显示如上图信息，则表示编译成功。

  - 编译开启NUMA特性的版本。
    1 bazel build //tensorflow/tools/pip_package:build_pip_package --config=numa

    回显显示如上图信息，则表示编译成功。

- 编译过程中可能会提示证书校验失败的问题，解决办法请参见  编译TensorFlow 2.13.0源码时证书校验失败的解决办法
。

- TensorFlow源码编译需要使用网络下载很多依赖组件的源码包，如果网络异常或者波动可能导致失败。请确认网络正常且能连通互联网，如果网络正常请再次尝试。或请参见  编译TensorFlow 2.13.0时go_sdk下载失败的解决办法
处理。

- 编译TensorFlow 2.13.0开启NUMA特性版本时依赖组件hwloc编译失败，提示关键信息为“external/hwloc/hwloc/topology.c:49:10: fatal error: sys/sysctl.h: No such file or directory”，解决办法请参见  编译TensorFlow 2.13.0时依赖组件hwloc编译失败的解决办法
。


7. 构建TensorFlow pip软件包。
  1 ./bazel-bin/tensorflow/tools/pip_package/build_pip_package ./output

  构建生成的pip软件包在“./output”目录下。

  构建过程可能会产生告警信息，解决办法请参见构建TensorFlow pip软件包时有告警信息提示的解决办法。

8. 安装TensorFlow pip软件包。
  1 pip3 install ./output/tensorflow-2.13.0-cp39-cp39-linux_aarch64.whl
