2017-09-22 1 views
0

J'ai cloné tensorflow (version 1.2) à partir de repo github. J'ai un problème avec grpc dans tensorflow distribué. Fondamentalement, je veux compiler tensorflow (1.2) avec la dernière bibliothèque grpc.Comment compiler tensorflow pour lier bibliothèque grpc déjà compilé en utilisant bazel?

J'ai téléchargé et compilé la bibliothèque grpc pour avoir les fichiers de bibliothèque et les en-têtes. Comment puis-je ordonner à bazel de prendre ces fichiers et en-têtes de bibliothèque déjà compilés, tout en construisant tensorflow.

Répondre

2

Il n'y a pas de moyen facile. Si je devais le faire, je clonerais tensorflow, et mettre à jour tensorflow/workspace.bzl pour tirer une nouvelle version de grpc, ou remplacer patched_http_archive par new_local_repository ou new_http_archive. Je suppose que vous devez appliquer le correctif de third_party/grpc. Ensuite, vous devriez être capable de construire tensorflow en utilisant la procédure par défaut: ./configure, et bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package.

Analyser rapidement les fichiers BUILD tensorflow il semble que tensorflow utilise les dépendances third_party de grpc (par exemple, nanopb), de sorte qu'une bibliothèque compilée et des en-têtes ne seraient pas suffisants de toute façon. Si vous avez insisté pour utiliser votre grpc prédéfini, vous devez fournir ces dépendances et mettre à jour les fichiers BUILD et le fichier WORKSPACE. Bazel n'a pas encore cette fonction 'replace repository avec ses sorties' intégrées.

+1

Juste une optimisation: vous pouvez utiliser --override_repository pour éviter de modifier l'espace de travail tensorflow. –

+0

Je ne savais pas que c'était une chose! Cool! – mhlopko