aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Guangda Lai <laigd@google.com>2018-07-10 14:17:21 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-07-10 14:20:36 -0700
commit9b75e00697ab437d7a8db10584fc2d5c13ccf966 (patch)
treeb24bce4cd3c1c3e5aff5596df4f9b0ade0febd67
parente7fb6f5f0e1745f6140e0add84e931e4786e8269 (diff)
Remove files that were supposed to be removed by #19871 but it failed to do so
somehow. PiperOrigin-RevId: 204010972
-rw-r--r--tensorflow/contrib/tensorrt/kernels/trt_calib_op.cc136
-rw-r--r--tensorflow/contrib/tensorrt/kernels/trt_calib_op.h52
-rw-r--r--tensorflow/contrib/tensorrt/ops/trt_calib_op.cc37
3 files changed, 0 insertions, 225 deletions
diff --git a/tensorflow/contrib/tensorrt/kernels/trt_calib_op.cc b/tensorflow/contrib/tensorrt/kernels/trt_calib_op.cc
deleted file mode 100644
index aea44fd8a2..0000000000
--- a/tensorflow/contrib/tensorrt/kernels/trt_calib_op.cc
+++ /dev/null
@@ -1,136 +0,0 @@
-/* Copyright 2018 The TensorFlow Authors. All Rights Reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-==============================================================================*/
-
-#include "tensorflow/contrib/tensorrt/kernels/trt_calib_op.h"
-#include "tensorflow/contrib/tensorrt/resources/trt_int8_calibrator.h"
-#include "tensorflow/contrib/tensorrt/resources/trt_resource_manager.h"
-#include "tensorflow/contrib/tensorrt/resources/trt_resources.h"
-#include "tensorflow/core/framework/tensor.h"
-#include "tensorflow/core/framework/tensor_shape.h"
-#include "tensorflow/core/framework/tensor_types.h"
-#include "tensorflow/core/framework/types.h"
-#include "tensorflow/core/platform/stream_executor.h"
-
-#if GOOGLE_CUDA
-#if GOOGLE_TENSORRT
-#include "cuda/include/cuda_runtime_api.h"
-#include "tensorrt/include/NvInfer.h"
-
-namespace tensorflow {
-namespace tensorrt {
-
-TRTCalibOp::TRTCalibOp(OpKernelConstruction* context) : OpKernel(context) {
- OP_REQUIRES_OK(context, context->GetAttr("segment_nodes", &segment_nodes_));
- OP_REQUIRES_OK(context, context->GetAttr("input_names", &input_names_));
- OP_REQUIRES_OK(context, context->GetAttr("resource_name", &resource_name_));
-};
-
-#define TYPECASE(dt, X, Y) \
- case dt: { \
- return (void*)X->flat<tensorflow::EnumToDataType<dt>::Type>().data(); \
- }
-
-void* GetTensorAddress(const Tensor* tensor_ptr) {
- auto tensor_type = tensor_ptr->dtype();
- switch (tensor_type) {
- TYPECASE(tensorflow::DT_FLOAT, tensor_ptr, dest_ptr);
- TYPECASE(tensorflow::DT_HALF, tensor_ptr, dest_ptr);
- TYPECASE(tensorflow::DT_INT8, tensor_ptr, dest_ptr);
- default: {
- LOG(FATAL) << "Unsupported Data type "
- << tensorflow::DataTypeString(tensor_type);
- return nullptr;
- }
- }
-}
-
-void TRTCalibOp::Compute(tensorflow::OpKernelContext* ctx) {
- // TODO(aaroey): make sure ctx->resource_mgr() is used in future PR.
- auto trt_rm = tensorflow::tensorrt::TRTResourceManager::instance();
- auto res_mgr = trt_rm->getManager("TRTCalibOps");
- tensorflow::tensorrt::TRTCalibrationResource* calib_res = nullptr;
- auto status = res_mgr->Lookup(resource_name_, resource_name_, &calib_res);
-
- if (!status.ok()) {
- ctx->SetStatus(status);
- return;
- }
- int num_inputs = ctx->num_inputs();
- // first run instantiate calibrator
- if (calib_res->calibrator_ == nullptr) {
- dev_tensors_.resize(num_inputs);
- int batch_size = ctx->input(0).dim_size(0);
- VLOG(1) << " Constructing calibrator";
- for (int i = 0; i < num_inputs; i++) {
- // allocate workspace on device for inputs
- const tensorflow::Tensor& t = ctx->input(i);
- OP_REQUIRES_OK(ctx,
- ctx->allocate_persistent(t.dtype(), t.shape(),
- &dev_tensors_.at(i), nullptr));
- const auto device_tensor = dev_tensors_.at(i).AccessTensor(ctx);
- CHECK_EQ(t.TotalBytes(), device_tensor->TotalBytes());
- void* device_address = GetTensorAddress(device_tensor);
- device_buffers_.emplace(input_names_.at(i),
- std::pair<void*, size_t>(
- device_address, device_tensor->TotalBytes()));
- }
-
- calib_res->calibrator_ =
- new TRTInt8Calibrator(device_buffers_, batch_size, resource_name_);
- string label(resource_name_);
- calib_res->thr_ = new std::thread([calib_res, label]() {
- VLOG(1) << "Starting calibration thread, Calibration Resource @ "
- << calib_res;
- calib_res->builder_->setInt8Calibrator(calib_res->calibrator_);
- calib_res->builder_->setInt8Mode(true);
- calib_res->engine_ = calib_res->builder_->buildCudaEngine(
- *calib_res->network_); // will loop until we terminate calibrator
- VLOG(1) << "Calibration loop terminated " << label;
- });
- VLOG(1) << "initialized calibrator resource";
- } // calibrator initialized
-
- // Pass input data to calibrator
- std::unordered_map<string, void*> input_data;
- for (int i = 0; i < num_inputs; i++) {
- const Tensor& t = ctx->input(i);
- void* data_address = GetTensorAddress(&t);
- const auto device_tensor = dev_tensors_.at(i).AccessTensor(ctx);
- CHECK_EQ(t.TotalBytes(),
- device_tensor->TotalBytes()); // use the tensor so FW keeps it
- input_data.emplace(input_names_.at(i), data_address);
- ctx->set_output(i, t);
- }
- VLOG(2) << "Filled map for sending";
- // copied from cuda_kernel_helper since it seems only valid in *.cu.cc files
- const cudaStream_t* stream = CHECK_NOTNULL(
- reinterpret_cast<const cudaStream_t*>(ctx->op_device_context()
- ->stream()
- ->implementation()
- ->CudaStreamMemberHack()));
- calib_res->calibrator_->setBatch(input_data, *stream);
- VLOG(2) << "Passed calibration data";
- // TODO(aaroey): make sure we wait for the completion of calibration on the
- // last batch in future PR.
-};
-
-#undef TYPECASE
-
-REGISTER_KERNEL_BUILDER(Name("TRTCalibOp").Device(DEVICE_GPU), TRTCalibOp);
-
-} // namespace tensorrt
-} // namespace tensorflow
-#endif
-#endif
diff --git a/tensorflow/contrib/tensorrt/kernels/trt_calib_op.h b/tensorflow/contrib/tensorrt/kernels/trt_calib_op.h
deleted file mode 100644
index 23df9db32f..0000000000
--- a/tensorflow/contrib/tensorrt/kernels/trt_calib_op.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright 2018 The TensorFlow Authors. All Rights Reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-==============================================================================*/
-
-#ifndef TENSORFLOW_CONTRIB_TENSORRT_KERNELS_TRT_CALIB_OP_H
-#define TENSORFLOW_CONTRIB_TENSORRT_KERNELS_TRT_CALIB_OP_H
-
-#include <memory>
-#include <string>
-#include <unordered_map>
-#include <utility>
-#include <vector>
-#include "tensorflow/core/framework/op.h"
-#include "tensorflow/core/framework/op_kernel.h"
-#include "tensorflow/core/framework/tensor_shape.h"
-#include "tensorflow/core/platform/types.h"
-
-#if GOOGLE_CUDA
-#if GOOGLE_TENSORRT
-namespace tensorflow {
-namespace tensorrt {
-// TODO(sami): Convert this to async kernel!
-class TRTCalibOp : public OpKernel {
- public:
- explicit TRTCalibOp(OpKernelConstruction* context);
-
- void Compute(OpKernelContext* context) override;
-
- private:
- string resource_name_;
- std::vector<string> segment_nodes_;
- std::vector<string> input_names_;
- std::vector<tensorflow::TensorShape> shapes_;
- std::unordered_map<string, std::pair<void*, size_t>> device_buffers_;
- std::vector<tensorflow::PersistentTensor> dev_tensors_;
-};
-} // namespace tensorrt
-} // namespace tensorflow
-#endif
-#endif
-#endif // TENSORFLOW_CONTRIB_TENSORRT_KERNELS_TRT_CALIB_OP_H
diff --git a/tensorflow/contrib/tensorrt/ops/trt_calib_op.cc b/tensorflow/contrib/tensorrt/ops/trt_calib_op.cc
deleted file mode 100644
index 4835e50650..0000000000
--- a/tensorflow/contrib/tensorrt/ops/trt_calib_op.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright 2018 The TensorFlow Authors. All Rights Reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-==============================================================================*/
-
-#include "tensorflow/core/framework/op.h"
-#include "tensorflow/core/framework/shape_inference.h"
-namespace tensorflow {
-
-REGISTER_OP("TRTCalibOp")
- .Attr("segment_nodes: list(string)") // names of the ops in segment
- .Attr("segment_output_names: list(string)") // names of the output ops in
- // segment
- .Attr("input_names: list(string)") // names of the inputs for
- // passing into tensorrt
- .Attr("resource_name: string")
- .Attr("InT: list({int8, float16, float32})")
- .Input("in_tensor: InT")
- .Output("out_tensor: InT")
- .SetShapeFn([](tensorflow::shape_inference::InferenceContext* c) {
- for (int i = 0; i < c->num_inputs(); i++) {
- c->set_output(i, c->input(i));
- }
- return Status::OK();
- });
-
-} // namespace tensorflow