Как построить код tenorflow C++, используя пользовательский набор инструментов bazel?

Я хочу использовать bazel для кросс-компиляции кода C ++ TensorFlow и получить исполняемую версию arm, запустить ее на машине с архитектурой Arm.

Следуйте вики https://github.com/bazelbuild/bazel/wiki/Building-with-a-custom-toolchain, я изменяю некоторый код и помещаю код в https://github.com/kingcong/bazel_toolchain.

Затем я помещаю каталог bazel_toolchain в файл tenorflow/bazel_toolchain внутри клона репозитория TensorFlow github.

Теперь это дерево / root / tenorflow_master/ tenorflow / 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 / tenorflow_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'.

ОШИБКА: Анализ цели '// tenorflow/bazel_toolchain: hello' не выполнен; сборка прервана

Что я должен делать? Большое спасибо!

1 ответ

Неправильный файл сборки, которым вы поделились, ) после srcs который эффективно закрывает cc_binary, так deps не являются атрибутом cc_binary но объявление переменной в файле BUILD (я думаю). Переехать deps в cc_binary.

Сообщение об ошибке, однако, не имеет отношения к выше. Можете ли вы поделиться командной строкой, которую вы используете для создания hello-world? Используете ли вы --crosstool_top, чтобы использовать свой собственный crosstool? Можете ли вы отредактировать свой вопрос, чтобы добавить содержимое файла WORKSPACE?

Другие вопросы по тегам