我的目标是在 C++ 应用程序中运行 tensorrt 优化的 tensorflow 图。我正在使用 tensorflow 1.8 和 tensorrt 4。使用 python api,我能够优化图形并看到很好的性能提升。
尝试在 c++ 中运行图形失败并出现以下错误:
Not found: Op type not registered 'TRTEngineOp' in binary running on e15ff5301262. Make sure the Op and Kernel are registered in the binary running in this process.
其他,非张量图工作。我在使用 python api 时遇到了类似的错误,但通过导入 tensorflow.contrib.tensorrt 解决了它。从错误中,我相当确定内核和操作没有注册,但我不知道如何在构建 tensorflow 后在应用程序中这样做。附带说明一下,我不能使用 bazel,但需要使用 cmake。到目前为止,我链接到libtensorflow_cc.so
and libtensorflow_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)]]