- Message système
Architecture | CPU | système opérateur |
---|---|---|
arm64 | Kunpeng 920 | UOS1021 |
- Processus approximatif
Enfin, il sera compilé sous l'architecture arm
libtensorflow.so.1.15.0
etlibtensorflow_framework.so.1.15.0
le lien de téléchargement (uniquement la version compilée du CPU, pas la version du compilateur GPU)
1. Confirmation de version
1.1 Déterminez d'abord la version de tensorflow compilée cette fois: tensorflow-1.15.0
- En regardant les exigences du projet, déterminez la
tensorflow
version utilisée :1.15.0
- Eh bien, téléchargez
tensorflow-1.15.0
le code source
1.2 Deuxièmement, déterminez la version bazel requise: bazel-0.25.0
-
Dans le code source de tensorflow, il y a des
configure.py
fichiers:
-
Ouvrez le
configure.py
fichier et recherchezbazel
:
-
Vous pouvez voir
tensorflow-1.15.0
la version debazel
la version entre0.24.1
les0.26.1
deux, nous avons choisi labazel-0.25.0
version.
2. Téléchargement de l’outil de base
2.1 jdk
2.1.1 Confirmer la version
-
Consultez la documentation officielle de bazel , sélectionnez
bazel-0.25.0
:
-
Cliquez sur
installation overview
:
-
Cliquez sur
compile from source
:
-
Vous pouvez voir les exigences de version de jdk et le numéro de version de jdk qu'il a utilisé:
jdk1.8.0_112
2.1.2 Téléchargez et installez: jdk1.8.0_112
- Téléchargement: lien de la version historique de jdk
- Décompressez dans votre répertoire préféré
2.1.3 Variables d'environnement jdk
- Éditer:
$ sudo vim /etc/profile # 编辑文件
# 在最后添加以下三行
export JAVA_HOME=/home/baixin/Desktop/java/jdk1.8.0_112
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 使其生效
$ source /etc/profile
- Il est préférable de redémarrer l'ordinateur
2.2 gcc et g ++
- Les deux versions doivent être cohérentes, sinon une erreur peut être signalée:
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
2.2.1 Déterminer le numéro de version des deux
$ gcc -v # 查看gcc版本
$ g++ -v # 查看g++版本
2.2.2 Mise à niveau et rétrogradation
2,3 Nginx
2.3.1 Introduction à Nginx (spécifiquement par Baidu)
- Nginx (moteur x) est un serveur Web HTTP et proxy inverse haute performance .
- L'effet est similaire à ce que vous saisissez dans le navigateur: https://linux265.com/static/images/upload/featured-nginx.jpg
2.3.2 Pourquoi utiliser Nginx?
- Lors de la compilation ultérieure de tensorflow, vous devrez télécharger de nombreux packages de dépendances, mais le client Ruijie est tombé en panne sous l'architecture arm, et les machines Kunpeng n'ont pas de carte réseau sans fil, et le téléchargement des packages de dépendances signalera très probablement des erreurs.
- Deuxièmement, bazel effacera le cache du dernier téléchargement à chaque fois qu'il sera compilé, il n'est donc pas possible de placer les fichiers téléchargés directement dans le répertoire du cache.
- Par conséquent, vous ne pouvez utiliser Nginx que pour créer un serveur de fichiers localement et laisser bazel télécharger des fichiers localement.
2.3.3 Installer Nginx
- Entrée de ligne de commande:
$ sudo apt-get update
$ sudo apt-get install nginx
- S'il indique que la source du logiciel n'a pas Nginx, changez d'abord la source:
# 添加公匙
$ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5 3B4FE6ACC0B21F32
# 清除软件仓库缓存
$ sudo apt-get clean
# 修改软件源:/etc/apt/source.list文件
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial main
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial universe
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-security universe
# 重新安装
$ sudo apt-get update
$ sudo apt-get install nginx
- Le lien de référence ci-dessus: source du logiciel de modification d'architecture arm64 Linux
2.3.4 Configuration
- Trouvez
nginx.conf
le chemin du fichier de configuration Nginx :
$ sudo find / -name "nginx.conf"
- Modifiez le
nginx.conf
fichier de configuration (le contenu du fichier est similaire, recherchez d'abord le module serveur, puis modifiez les trois éléments suivants):- Port (changez-le pour qu'il soit plus grand pour éviter les conflits avec le port par défaut 80): 7140
- Jeu de caractères: charset UTF-8;
- L'emplacement où le fichier local doit être stocké: root "/ home / baixin / Desktop / file"
# 修改后的部分文件内容:
......
server {
listen 7140; # 设置端口
server_name localhost;
charset UTF-8; # 设置字符集
#access_log logs/host.access.log main;
location / {
root "/home/baixin/Desktop/file"; # 本地文件存放位置,根据自己的情况而定
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
......
2.3.5 Vérification
- Entrez-le simplement directement dans le navigateur
http://127.0.0.1:7140/img.jpg
. (Bien sûr,/home/baixin/Desktop/file
le fichier image doit être dans votre chemin)
3. Compilez bazel
3.1 Environnement (nous n'avons pas besoin d'installer ce que nous avons installé auparavant)
- Tutoriel du site officiel:
sudo apt-get install build-essential openjdk-8-jdk python zip unzip
3.2 Télécharger le paquet source
-
adresse du projet github
-
Sélectionnez la
bazel-0.25.0
version et entrez l' adresse du package de version . -
Remarque: pour compiler bazel à partir du code source
bazel-0.25.0-dist.zip
, téléchargez le package, pas leSource code
package bazel .
3.3 Compiler bazel
- Entrez dans le
bazel
répertoire de décompression et entrez la commande:
env EXTRA_BAZEL_ARGS="--host_javabase=@local_jdk//:jdk" bash ./compile.sh # 其实这段代码来自官网
-
Si vous entrez directement
./compile.sh
, cela peut signaler une erreur: jdk introuvable -
Installer bazel
$ cd ./output
$ ./bazel
3.4 Configurer les variables d'environnement bazel
- En supposant que le compilé se trouve
bazel
dans le/home/baixin/DeskTop/bazel/output
répertoire,~/.bashrc
ajoutez à la fin du fichier:
export PATH=/home/baixin/DeskTop/bazel/output:$PATH
- Faire prendre effet à la nouvelle variable d'environnement
$ source ~/.bashrc
4. Compilez tensorflow avec bazel
4.1 Pensée normale
- Entrez la commande dans le répertoire du code source tensorflow et suivez les invites pour configurer les éléments pertinents:
$ ./configure
- Commande de compilation Bazel:
$ bazel build //tensorflow:libtensorflow.so # 我用的这个可以编译成功,可以多搜些命令,试下。
4.2 Mais. . .
- Le processus de compilation téléchargera de nombreux packages dépendants et vous échouerez probablement à télécharger
- Une erreur vous demandera quels fichiers n'ont pas pu être téléchargés, et l'URL du fichier, selon le bien des dépendances d'URL, sur le titre
1.3.2
du/home/baixin/Desktop/file
répertoire
4.3 Comment trouver et modifier l'URL dans le code source de tensorflow?
4.3.1 La modification est similaire à la figure suivante:
- Parmi eux, la boîte rouge est le contenu nouvellement ajouté (note: l'ordre d'ajout peut également être signalé de manière incorrecte):
- Blog de référence
4.3.2 Méthode de recherche spécifique
-
Tout d'abord, les fichiers que nous recherchons sont tous des
.bzl
suffixes. De plus, lesWORKSPACE
fichiers dans le répertoire racine des sources sont également possibles. -
Deuxièmement, lisez attentivement le message d'erreur. Il vous indiquera un fichier dans le code source de tensorflow. Recherchez dans ce fichier pour voir si vous pouvez trouver l'adresse URL du package dépendant.
-
Enfin, en fonction du nom du package de dépendances, vérifiez le code source
./tensorflow/core
et./third_party
ci - dessous pour voir s'il existe un dossier avec le même nom que la dépendance manquante, entrez et recherchez.bzl
le fichier avec le suffixe yes . -
Référence ci-dessus: C'est un blog très utile, qui m'a beaucoup aidé. Vous pouvez lire cet article lorsque vous rencontrez un échec de téléchargement de package
5. Lien de téléchargement
-
Code d'extraction: 2hb1