Тензор потока XLA: ошибка сегмента в __xla_cpu_runtime_EigenMatMulF32

У меня есть нейронная сеть, из которой я создал 3 библиотеки, с tf_library следуя этому примеру: https://www.tensorflow.org/performance/xla/tfcompile
Тогда я получаю lib*.pic.a файлы, которые я помещаю в один двоичный файл, используя:

native.cc_binary(
  name = "librnnlm.so",
  srcs = [":libprocess_state.pic.a",
          ":libforward.pic.a",
          ":libget_logits.pic.a"],
  linkshared=1,
  linkstatic=1,
  linkopts=["-fPIC"],
  deps = [
          "//tensorflow/compiler/tf2xla/kernels:gather_op_kernel_float_int32",
          "//tensorflow/compiler/tf2xla/kernels:gather_op_kernel_float_int64",
          "//tensorflow/compiler/tf2xla/kernels:index_ops_kernel_argmax_float_1d",
          "//tensorflow/compiler/tf2xla/kernels:index_ops_kernel_argmax_float_2d",
          "//tensorflow/compiler/aot:runtime",
          "//tensorflow/compiler/tf2xla:xla_local_runtime_context",
          "//tensorflow/compiler/xla/service/cpu:runtime_conv2d",
          "//tensorflow/compiler/xla/service/cpu:runtime_matmul",
          "//tensorflow/compiler/xla/service/cpu:runtime_single_threaded_conv2d",
          "//tensorflow/compiler/xla/service/cpu:runtime_single_threaded_matmul",
          "//tensorflow/compiler/xla:executable_run_options",
          "//third_party/eigen3",
          "//tensorflow/core:framework_lite",
          ],
  copts=tf_copts()
)

Затем я скомпилировал свое приложение вручную, связав librnnlm.so.
Я могу позвонить код в libget_logits без проблем, но если я попытаюсь запустить вычисление из libprocess_state или же libforward Я получил:

Program received signal SIGSEGV, Segmentation fault.
0x00007fffeef31dc2 in void Eigen::TensorEvaluator<Eigen::TensorContractionOp<Eigen::array<Eigen::IndexPair<long>, 1ul> const, Eigen::TensorMap<Eigen::Tensor<float const, 2, 0, long>, 16, Eigen::MakePointer> const, Eigen::TensorMap<Eigen::Tensor<float const, 2, 0, long>, 16, Eigen::MakePointer> const> const, Eigen::ThreadPoolDevice>::evalProduct<true, true, false, 0>(float*) const ()
   from /home/p/git/tensorflow/build/bazel-bin/test_aot/librnnlm.so
(gdb) bt
#0  0x00007fffeef31dc2 in void Eigen::TensorEvaluator<Eigen::TensorContractionOp<Eigen::array<Eigen::IndexPair<long>, 1ul> const, Eigen::TensorMap<Eigen::Tensor<float const, 2, 0, long>, 16, Eigen::MakePointer> const, Eigen::TensorMap<Eigen::Tensor<float const, 2, 0, long>, 16, Eigen::MakePointer> const> const, Eigen::ThreadPoolDevice>::evalProduct<true, true, false, 0>(float*) const
    () from /home/p/git/tensorflow/build/bazel-bin/test_aot/librnnlm.so
#1  0x00007fffeef4212c in __xla_cpu_runtime_EigenMatMulF32 () from /home/p/git/tensorflow/build/bazel-bin/test_aot/librnnlm.so
#2  0x00007fffeeed1cbd in __test_aot__forward () from /home/p/git/tensorflow/build/bazel-bin/test_aot/librnnlm.so
#3  0x0000000000000000 in ?? ()

*_benchmark двоичные файлы, сгенерированные bazel, работают нормально, поэтому в том, как я все это связываю, должно быть что-то не так.

0 ответов

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