diff options
author | 2018-08-29 08:58:27 -0700 | |
---|---|---|
committer | 2018-08-29 09:07:49 -0700 | |
commit | 97fb9a9c7c72c405a790eea698a91654d5184fed (patch) | |
tree | de458ca70534a20174fc0fc93465da416e0f9d20 /tensorflow | |
parent | 0f443619fb13fcd5c34cb7d8c867b64339afdcfc (diff) |
Disable rtti for (most) TFLite targets on Android
PiperOrigin-RevId: 210729533
Diffstat (limited to 'tensorflow')
-rw-r--r-- | tensorflow/contrib/lite/allocation.cc | 4 | ||||
-rw-r--r-- | tensorflow/contrib/lite/allocation.h | 12 | ||||
-rw-r--r-- | tensorflow/contrib/lite/build_def.bzl | 3 | ||||
-rw-r--r-- | tensorflow/contrib/lite/mmap_allocation.cc | 2 | ||||
-rw-r--r-- | tensorflow/contrib/lite/mmap_allocation_disabled.cc | 2 | ||||
-rw-r--r-- | tensorflow/contrib/lite/model_test.cc | 1 | ||||
-rw-r--r-- | tensorflow/contrib/lite/nnapi_delegate.cc | 6 | ||||
-rw-r--r-- | tensorflow/contrib/lite/nnapi_delegate.h | 1 |
8 files changed, 28 insertions, 3 deletions
diff --git a/tensorflow/contrib/lite/allocation.cc b/tensorflow/contrib/lite/allocation.cc index 8946261814..a1c1d079b0 100644 --- a/tensorflow/contrib/lite/allocation.cc +++ b/tensorflow/contrib/lite/allocation.cc @@ -72,6 +72,8 @@ const void* FileCopyAllocation::base() const { return copied_buffer_.get(); } size_t FileCopyAllocation::bytes() const { return buffer_size_bytes_; } bool FileCopyAllocation::valid() const { return copied_buffer_ != nullptr; } + +Allocation::Type FileCopyAllocation::type() const { return Type::kFileCopy; } #endif MemoryAllocation::MemoryAllocation(const void* ptr, size_t num_bytes, @@ -89,4 +91,6 @@ size_t MemoryAllocation::bytes() const { return buffer_size_bytes_; } bool MemoryAllocation::valid() const { return buffer_ != nullptr; } +Allocation::Type MemoryAllocation::type() const { return Type::kMemory; } + } // namespace tflite diff --git a/tensorflow/contrib/lite/allocation.h b/tensorflow/contrib/lite/allocation.h index 121f3d2646..ca935f6fd4 100644 --- a/tensorflow/contrib/lite/allocation.h +++ b/tensorflow/contrib/lite/allocation.h @@ -30,6 +30,13 @@ namespace tflite { // A memory allocation handle. This could be a mmap or shared memory. class Allocation { public: + enum class Type { + kMMAP, // Backed by mmap. + kFileCopy, // Backed by memory copied from a file. + kMemory, // Backed by an existing memory buffer. + kNNAPI, // Backed by mmap and an associated NNAPI buffer. + }; + Allocation(ErrorReporter* error_reporter) : error_reporter_(error_reporter) {} virtual ~Allocation() {} @@ -39,6 +46,8 @@ class Allocation { virtual size_t bytes() const = 0; // Whether the allocation is valid virtual bool valid() const = 0; + // The type of the allocation + virtual Type type() const = 0; protected: ErrorReporter* error_reporter_; @@ -51,6 +60,7 @@ class MMAPAllocation : public Allocation { const void* base() const override; size_t bytes() const override; bool valid() const override; + Type type() const override; static bool IsSupported(); @@ -68,6 +78,7 @@ class FileCopyAllocation : public Allocation { const void* base() const override; size_t bytes() const override; bool valid() const override; + Type type() const override; private: // Data required for mmap. @@ -86,6 +97,7 @@ class MemoryAllocation : public Allocation { const void* base() const override; size_t bytes() const override; bool valid() const override; + Type type() const override; private: const void* buffer_; diff --git a/tensorflow/contrib/lite/build_def.bzl b/tensorflow/contrib/lite/build_def.bzl index fc199f0a0e..7add86fd5a 100644 --- a/tensorflow/contrib/lite/build_def.bzl +++ b/tensorflow/contrib/lite/build_def.bzl @@ -4,6 +4,7 @@ load( "//tensorflow:tensorflow.bzl", "tf_cc_shared_object", "tf_cc_test", + "tf_opts_nortti_if_android", ) def tflite_copts(): @@ -34,7 +35,7 @@ def tflite_copts(): }) + select({ str(Label("//tensorflow:with_default_optimizations")): [], "//conditions:default": ["-DGEMMLOWP_ALLOW_SLOW_SCALAR_FALLBACK"], - }) + }) + tf_opts_nortti_if_android() return copts diff --git a/tensorflow/contrib/lite/mmap_allocation.cc b/tensorflow/contrib/lite/mmap_allocation.cc index fa9a3cd1d8..fbe1bba864 100644 --- a/tensorflow/contrib/lite/mmap_allocation.cc +++ b/tensorflow/contrib/lite/mmap_allocation.cc @@ -56,6 +56,8 @@ size_t MMAPAllocation::bytes() const { return buffer_size_bytes_; } bool MMAPAllocation::valid() const { return mmapped_buffer_ != MAP_FAILED; } +Allocation::Type MMAPAllocation::type() const { return Type::kMMAP; } + bool MMAPAllocation::IsSupported() { return true; } } // namespace tflite diff --git a/tensorflow/contrib/lite/mmap_allocation_disabled.cc b/tensorflow/contrib/lite/mmap_allocation_disabled.cc index f3d4cf1a25..b8756d78f7 100644 --- a/tensorflow/contrib/lite/mmap_allocation_disabled.cc +++ b/tensorflow/contrib/lite/mmap_allocation_disabled.cc @@ -34,6 +34,8 @@ size_t MMAPAllocation::bytes() const { return 0; } bool MMAPAllocation::valid() const { return false; } +Allocation::Type MMAPAllocation::type() const { return Type::kMMAP; } + bool MMAPAllocation::IsSupported() { return false; } } // namespace tflite diff --git a/tensorflow/contrib/lite/model_test.cc b/tensorflow/contrib/lite/model_test.cc index df4f60d4ad..66ba278a3e 100644 --- a/tensorflow/contrib/lite/model_test.cc +++ b/tensorflow/contrib/lite/model_test.cc @@ -275,6 +275,7 @@ TEST(BasicFlatBufferModel, TestBuildFromModel) { TestErrorReporter reporter; FileCopyAllocation model_allocation( "tensorflow/contrib/lite/testdata/test_model.bin", &reporter); + ASSERT_EQ(model_allocation.type(), Allocation::Type::kFileCopy); ASSERT_TRUE(model_allocation.valid()); ::flatbuffers::Verifier verifier( reinterpret_cast<const uint8_t*>(model_allocation.base()), diff --git a/tensorflow/contrib/lite/nnapi_delegate.cc b/tensorflow/contrib/lite/nnapi_delegate.cc index 38f3e9881b..8090c413d8 100644 --- a/tensorflow/contrib/lite/nnapi_delegate.cc +++ b/tensorflow/contrib/lite/nnapi_delegate.cc @@ -191,8 +191,10 @@ TfLiteStatus addTensorOperands(tflite::Interpreter* interpreter, // TODO(aselle): Based on Michael's suggestion, limiting this to read // only memory if (tensor->allocation_type == kTfLiteMmapRo) { - if (const NNAPIAllocation* alloc = dynamic_cast<const NNAPIAllocation*>( - static_cast<const Allocation*>(tensor->allocation))) { + if (static_cast<const Allocation*>(tensor->allocation)->type() == + Allocation::Type::kNNAPI) { + const NNAPIAllocation* alloc = + static_cast<const NNAPIAllocation*>(tensor->allocation); RETURN_ERROR_IF_NN_FAILED( ANeuralNetworksModel_setOperandValueFromMemory( nn_model, next_id, alloc->memory(), diff --git a/tensorflow/contrib/lite/nnapi_delegate.h b/tensorflow/contrib/lite/nnapi_delegate.h index 2bdb2cc5c8..cdc2493b3b 100644 --- a/tensorflow/contrib/lite/nnapi_delegate.h +++ b/tensorflow/contrib/lite/nnapi_delegate.h @@ -40,6 +40,7 @@ class NNAPIAllocation : public MMAPAllocation { ANeuralNetworksMemory* memory() const { return handle_; } bool valid() const override { return handle_ != nullptr; } + Type type() const override { return Type::kNNAPI; } private: mutable ANeuralNetworksMemory* handle_ = nullptr; |