Tensorflow服务自定义gpu op编译时找不到依赖项 [英] Tensorflow serving custom gpu op cannot find dependency when compiling

查看:85
本文介绍了Tensorflow服务自定义gpu op编译时找不到依赖项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不喜欢为tensorflow制作自定义gpu op的指南,并且可以共享lib.对于张量流服务,我调整了必需的路径,但是在构建时出现错误:

I fallowed the guides on making custom gpu op for tensorflow and could make shared lib. For tensorflow-serving I adapted required paths but I get error when building:

   ERROR: /home/g360/Documents/eduardss/serving/tensorflow_serving/custom_ops/CUSTOM_OP/BUILD:32:1: undeclared inclusion(s) in rule '//tensorflow_serving/custom_ops/CUSTOM_OP:CUSTOM_OP_ops_gpu':
this rule is missing dependency declarations for the following files included by 'tensorflow_serving/custom_ops/CUSTOM_OP/cc/magic_op.cu.cc':
  'external/org_tensorflow/tensorflow/core/platform/stream_executor.h'
  'external/org_tensorflow/tensorflow/stream_executor/cuda/cuda_platform_id.h'
  'external/org_tensorflow/tensorflow/stream_executor/platform.h'
  'external/org_tensorflow/tensorflow/stream_executor/device_description.h'
  'external/org_tensorflow/tensorflow/stream_executor/launch_dim.h'
  'external/org_tensorflow/tensorflow/stream_executor/platform/port.h'
  'external/org_tensorflow/tensorflow/stream_executor/device_options.h'
  'external/org_tensorflow/tensorflow/stream_executor/platform/logging.h'
  'external/org_tensorflow/tensorflow/stream_executor/lib/status.h'
  'external/org_tensorflow/tensorflow/stream_executor/lib/error.h'
  'external/org_tensorflow/tensorflow/stream_executor/lib/status_macros.h'
  'external/org_tensorflow/tensorflow/stream_executor/lib/statusor.h'
  'external/org_tensorflow/tensorflow/stream_executor/lib/statusor_internals.h'
  'external/org_tensorflow/tensorflow/stream_executor/plugin.h'
  'external/org_tensorflow/tensorflow/stream_executor/trace_listener.h'
  'external/org_tensorflow/tensorflow/stream_executor/device_memory.h'
  'external/org_tensorflow/tensorflow/stream_executor/kernel.h'
  'external/org_tensorflow/tensorflow/stream_executor/kernel_cache_config.h'
  'external/org_tensorflow/tensorflow/stream_executor/lib/array_slice.h'
  'external/org_tensorflow/tensorflow/stream_executor/dnn.h'
  'external/org_tensorflow/tensorflow/stream_executor/event.h'
  'external/org_tensorflow/tensorflow/stream_executor/host/host_platform_id.h'
  'external/org_tensorflow/tensorflow/stream_executor/multi_platform_manager.h'
  'external/org_tensorflow/tensorflow/stream_executor/lib/initialize.h'
  'external/org_tensorflow/tensorflow/stream_executor/platform/initialize.h'
  'external/org_tensorflow/tensorflow/stream_executor/platform/platform.h'
  'external/org_tensorflow/tensorflow/stream_executor/platform/default/initialize.h'
  'external/org_tensorflow/tensorflow/stream_executor/platform/dso_loader.h'
  'external/org_tensorflow/tensorflow/stream_executor/platform/default/dso_loader.h'
  'external/org_tensorflow/tensorflow/stream_executor/rocm/rocm_platform_id.h'
  'external/org_tensorflow/tensorflow/stream_executor/scratch_allocator.h'
  'external/org_tensorflow/tensorflow/stream_executor/temporary_device_memory.h'
  'external/org_tensorflow/tensorflow/stream_executor/stream.h'
  'external/org_tensorflow/tensorflow/stream_executor/blas.h'
  'external/org_tensorflow/tensorflow/stream_executor/host_or_device_scalar.h'
  'external/org_tensorflow/tensorflow/stream_executor/fft.h'
  'external/org_tensorflow/tensorflow/stream_executor/platform/thread_annotations.h'
  'external/org_tensorflow/tensorflow/stream_executor/temporary_memory_manager.h'
  'external/org_tensorflow/tensorflow/stream_executor/stream_executor.h'
  'external/org_tensorflow/tensorflow/stream_executor/kernel_spec.h'
  'external/org_tensorflow/tensorflow/stream_executor/stream_executor_pimpl.h'
  'external/org_tensorflow/tensorflow/stream_executor/device_memory_allocator.h'
  'external/org_tensorflow/tensorflow/stream_executor/lib/threadpool.h'
  'external/org_tensorflow/tensorflow/stream_executor/lib/env.h'
  'external/org_tensorflow/tensorflow/stream_executor/lib/thread_options.h'
  'external/org_tensorflow/tensorflow/stream_executor/rng.h'
  'external/org_tensorflow/tensorflow/stream_executor/shared_memory_config.h'
  'external/org_tensorflow/tensorflow/stream_executor/stream_executor_internal.h'
  'external/org_tensorflow/tensorflow/stream_executor/allocator_stats.h'
  'external/org_tensorflow/tensorflow/stream_executor/module_spec.h'
  'external/org_tensorflow/tensorflow/stream_executor/plugin_registry.h'
  'external/org_tensorflow/tensorflow/stream_executor/timer.h'

有问题的函数导入:

#if GOOGLE_CUDA

#define EIGEN_USE_GPU

#include "third_party/eigen3/unsupported/Eigen/CXX11/Tensor"
#include "tensorflow/core/util/gpu_kernel_helper.h"

#include "math.h"

#include <iostream>

在这些依赖项中,我认为 gpu_kernel_helper.h 是导致错误的原因,因为我的 BUILD 文件依赖项是:

Of these dependencies I think gpu_kernel_helper.h is the one causing error as my BUILD file dependencies are:

    deps = [
    "@org_tensorflow//tensorflow/core:framework",
    "@org_tensorflow//tensorflow/core:lib",
    "@org_tensorflow//third_party/eigen3",
] + if_cuda_is_configured([":cuda",  "@local_config_cuda//cuda:cuda_headers"]),

如果我尝试直接导入它们,则bazels抱怨路径上没有 BUILD 文件.我对bazel的构建过程不是很熟悉,因此不完全了解如何链接导入.

If I try to import them directly it bazels complains that there is no BUILD file on path. I'm not really familiar with bazel build process so don't understand exactly how it needs to link imports.

编辑1 我使用了tensorflow-serving 2.1.0和tensorflow/serving:2.1.0-devel-gpu docker镜像.在@ org_tensorflow/tensorflow/core/BUILD中查看实际上有一些对'gpu_kernel_helper.h'的引用:

EDIT 1 I used tensorflow-serving 2.1.0 and tensorflow/serving:2.1.0-devel-gpu docker image. Looking in @org_tensorflow/tensorflow/core/BUILD there is actually some reference to 'gpu_kernel_helper.h':

tf_cuda_library(
name = "framework",
hdrs = [
       ...
       "util/gpu_kernel_helper.h",
       ]

但是显然缺少一些进一步的下游链接吗?

But apparently some futher downstream links are missing?

推荐答案

解决方案:缺少的依赖项可以与以下项链接:

Solution: The missing dependency can be linked in with:

"@org_tensorflow//tensorflow/core:stream_executor_headers_lib"

这篇关于Tensorflow服务自定义gpu op编译时找不到依赖项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆