首页 文章

如何构建tensorflow c代码使用bazel的自定义工具链?

提问于
浏览
0

我想使用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 code:

#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;
}

BUILD file as below:

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:你好'失败; Build 中止

我该怎么办?非常感谢!

1 回答

  • 0

    您共享的构建文件不正确, srcs 之后有 ) 有效关闭 cc_binary ,所以 deps 不是 cc_binary 上的属性,而是构建文件中的变量声明(我认为) . 将 deps 移动到cc_binary .

    但是,错误消息与上述无关 . 您可以共享用于构建hello-world的命令行吗?你使用--crosstool_top来使用自定义的crosstool吗?您可以编辑您的问题以添加WORKSPACE文件的内容吗?

相关问题