簡體   English   中英

如何使用Bazel的自定義工具鏈構建Tensorflow C ++代碼?

[英]How to build tensorflow c++ code use a custom toolchain of bazel?

我想使用bazel交叉編譯TensorFlow的C ++代碼並獲取arm可執行版本,然后在Arm體系結構機器上運行它。

遵循Wiki https://github.com/bazelbuild/bazel/wiki/Building-with-a-custom-toolchain ,我修改一些代碼,然后將代碼推送到mygithub:bazel_toolchain

然后我將bazel_toolchain目錄放置在TensorFlow github存儲庫的克隆內的文件tensorflow / bazel_toolchain中

現在樹是/ root / tensorflow_master / tensorflow / bazel_toochain

我添加hello.cc代碼,如下所示:

hello.cc代碼:

 #include "tensorflow/cc/client/client_session.h"
 #include "tensorflow/cc/ops/standard_ops.h"
 #include "tensorflow/core/framework/tensor.h"

 int main() {
   using namespace tensorflow;
   using namespace tensorflow::ops;
   Scope root = Scope::NewRootScope();
   // Matrix A = [3 2; -1 0]
   auto A = Const(root, { {3.f, 2.f}, {-1.f, 0.f} });
   // Vector b = [3 5]
   auto b = Const(root, { {3.f, 5.f} });
   // v = Ab^T
   auto v = MatMul(root.WithOpName("v"), A, b, MatMul::TransposeB(true));
   std::vector<Tensor> outputs;
   ClientSession session(root);
   // Run and fetch v
   TF_CHECK_OK(session.Run({v}, &outputs));
   // Expect outputs[0] == [19; -3]
   LOG(INFO) << outputs[0].matrix<float>();
   return 0;
}

構建文件如下:

filegroup(
 name = "srcs",
 srcs = glob(["**"]),
 visibility = ["//tensorflow/bazel_toolchain:__pkg__"],
)

cc_binary(
 name = "hello",
 srcs = ["hello.cc"],
 deps = [
    "//tensorflow/cc:cc_ops",
    "//tensorflow/cc:client_session",
    "//tensorflow/core:tensorflow",
 ],
 )

當我在/ root / tensorflow_master /目錄下執行以下命令時,

 bazel build --crosstool_top=//tensorflow/bazel_toolchain/tools/arm_compiler:toolchain --cpu=armeabi-v7a 
 //tensorflow/bazel_toolchain:hello

它注意到

tensorflow-master/tensorflow/bazel_toolchain/tools/arm_compiler/BUILD:46:1: no such package '@org_linaro_components_toolchain_gcc_5_3_1//': The repository could not be resolved and referenced by '//tensorflow/bazel_toolchain/tools/arm_compiler:linaro_linux_linker_files'.

錯誤:對目標'// tensorflow / bazel_toolchain:hello'的分析失敗; 建立中止

我該怎么辦? 非常感謝!

您共享的構建文件是不正確的,在srcs之后有)可以有效地關閉cc_binary ,因此deps不是cc_binary的屬性,而是BUILD文件中變量的聲明(我認為)。 deps移至cc_binary。

但是,錯誤消息與以上無關。 您可以共享用於構建hello-world的命令行嗎? 您是否使用--crosstool_top使用自定義的crosstool? 您可以編輯問題以添加WORKSPACE文件的內容嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM