gpt4 book ai didi

带有 TensorRT 的 C++ Tensorflow API

转载 作者:行者123 更新时间:2023-12-01 14:40:43 25 4
gpt4 key购买 nike

我的目标是在 C++ 应用程序中运行经过tensorrt优化的 tensorflow 图。我正在使用tensorflow 1.8和tensorrt 4。使用python api,我能够优化图形并看到性能的良好提升。

尝试在 C++ 中运行该图失败,并出现以下错误:

未找到:操作类型未在 e15ff5301262 上运行的二进制文件中注册“TRTEngineOp”。确保 Op 和 Kernel 已在此进程中运行的二进制文件中注册。

其他非张量图也可以。我在使用 python api 时遇到了类似的错误,但通过导入tensorflow.contrib.tensorrt 解决了它。从错误中我相当确定内核和操作没有注册,但我不知道在构建 tensorflow 后如何在应用程序中注册。附带说明一下,我不能使用 bazel,但需要使用 cmake。到目前为止,我链接了 libtensorflow_cc.solibtensorflow_framework.so

有人可以帮我吗?谢谢!

更新:使用c或c++ api加载_trt_engine_op.so加载时不会抛出错误,但无法运行

Invalid argument: No OpKernel was registered to support Op 'TRTEngineOp' with these attrs.  Registered devices: [CPU,GPU], Registered kernels:
<no registered kernels>

[[Node: my_trt_op3 = TRTEngineOp[InT=[DT_FLOAT, DT_FLOAT], OutT=[DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT], input_nodes=["tower_0/down_0/conv_0/Conv2D-0-TransposeNHWCToNCHW-LayoutOptimizer", "tower_0/down_0/conv_skip/Conv2D-0-TransposeNHWCToNCHW-LayoutOptimizer"], output_nodes=["tower_0/down_0/conv_skip/Relu", "tower_0/down_1/conv_skip/Relu", "tower_0/down_2/conv_skip/Relu", "tower_0/down_3/conv_skip/Relu"], serialized_engine="\220{I\000...00\000\000"](tower_0/down_0/conv_0/Conv2D-0-TransposeNHWCToNCHW-LayoutOptimizer, tower_0/down_0/conv_skip/Conv2D-0-TransposeNHWCToNCHW-LayoutOptimizer)]]

最佳答案

另一种解决 Tensorflow 1.8 上出现“未找到:Op 类型未注册‘TRTEngineOp’”错误问题的方法:

1) 在文件 tensorflow/contrib/tensorrt/BUILD 中,添加包含以下内容的新部分:

cc_library(
name = "trt_engine_op_kernel_cc",
srcs = [
"kernels/trt_calib_op.cc",
"kernels/trt_engine_op.cc",
"ops/trt_calib_op.cc",
"ops/trt_engine_op.cc",
"shape_fn/trt_shfn.cc",
],
hdrs = [
"kernels/trt_calib_op.h",
"kernels/trt_engine_op.h",
"shape_fn/trt_shfn.h",
],
copts = tf_copts(),
visibility = ["//visibility:public"],
deps = [
":trt_logging",
":trt_plugins",
":trt_resources",
"//tensorflow/core:gpu_headers_lib",
"//tensorflow/core:lib_proto_parsing",
"//tensorflow/core:stream_executor_headers_lib",
] + if_tensorrt([
"@local_config_tensorrt//:nv_infer",
]) + tf_custom_op_library_additional_deps(),
alwayslink = 1, # buildozer: disable=alwayslink-with-hdrs
)

2) 添加 //tensorflow/contrib/tensorrt:trt_engine_op_kernel_cc 作为您要构建的相应 BAZEL 项目的依赖项

PS:无需使用 TF_LoadLibrary 加载库_trt_engine_op.so

关于带有 TensorRT 的 C++ Tensorflow API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50125889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com