Fix MSVC builds for TFLite

Use of std::min/max requires the <algorithm> include w/ MSVC. Move
min/max usage in the Subgraph header to the source file, where
<algorithm> is already included.

PiperOrigin-RevId: 314841660
Change-Id: I7a05569677eb057cd7f52d45e194abf016429560
This commit is contained in:
Jared Duke 2020-06-04 18:09:14 -07:00 committed by TensorFlower Gardener
parent bcdd8de103
commit c40d59d7c7
2 changed files with 15 additions and 13 deletions

View File

@ -1323,6 +1323,20 @@ TfLiteStatus Subgraph::RemoveAllDelegates() {
bool Subgraph::HasDelegates() { return !delegates_applied_.empty(); }
void Subgraph::EnsureTensorsVectorCapacity() {
const size_t required_capacity = tensors_.size() + kTensorsCapacityHeadroom;
if (required_capacity > tensors_.capacity()) {
// Whenever it's required to increase the vector capacity, make it at
// least twice bigger. The behavior is consistent with the default
// behavior of GCC STL's `std::vector::resize()`. This avoids frequently
// allocating and copying the underlying buffer.
size_t reserved_capacity =
std::max(required_capacity, tensors_.capacity() * 2);
tensors_.reserve(reserved_capacity);
context_.tensors = tensors_.data();
}
}
TfLiteStatus Subgraph::EnsureMemoryAllocations() {
if (memory_planner_) {
state_ = kStateUninvokable;

View File

@ -567,19 +567,7 @@ class Subgraph {
// capacity. Calling this function may invalidate existing pointers to
// tensors. After calling this function, adding `kTensorsCapacityHeadroom`
// more tensors won't invalidate the pointer to existing tensors.
void EnsureTensorsVectorCapacity() {
const size_t required_capacity = tensors_.size() + kTensorsCapacityHeadroom;
if (required_capacity > tensors_.capacity()) {
// Whenever it's required to increase the vector capacity, make it at
// least twice bigger. The behavior is consistent with the default
// behavior of GCC STL's `std::vector::resize()`. This avoids frequently
// allocating and copying the underlying buffer.
size_t reserved_capacity =
std::max(required_capacity, tensors_.capacity() * 2);
tensors_.reserve(reserved_capacity);
context_.tensors = tensors_.data();
}
}
void EnsureTensorsVectorCapacity();
// Ensures the memory required is planned and allocated.
TfLiteStatus EnsureMemoryAllocations();