Adds a null implementation for Counter metric for mobile platforms.

- Using counters in mobiles will do nothing now.
Change: 130066962
This commit is contained in:
Vinu Rajashekhar 2016-08-11 20:37:09 -08:00 committed by TensorFlower Gardener
parent 579438b835
commit 9f17b70887
3 changed files with 80 additions and 4 deletions

View File

@ -159,6 +159,7 @@ cc_library(
"lib/monitoring/collected_metrics.h",
"lib/monitoring/collection_registry.h",
"lib/monitoring/counter.h",
"lib/monitoring/mobile_counter.h",
"lib/monitoring/metric_def.h",
"lib/random/distribution_sampler.h",
"lib/random/philox_random.h",

View File

@ -13,8 +13,15 @@ See the License for the specific language governing permissions and
limitations under the License.
==============================================================================*/
#ifndef THIRD_PARTY_TENSORFLOW_CORE_LIB_MONITORING_ACCUMULATOR_H_
#define THIRD_PARTY_TENSORFLOW_CORE_LIB_MONITORING_ACCUMULATOR_H_
#ifndef THIRD_PARTY_TENSORFLOW_CORE_LIB_MONITORING_COUNTER_H_
#define THIRD_PARTY_TENSORFLOW_CORE_LIB_MONITORING_COUNTER_H_
// We replace this implementation with a null implementation for mobile
// platforms.
#include "tensorflow/core/platform/platform.h"
#ifdef IS_MOBILE_PLATFORM
#include "tensorflow/core/lib/monitoring/mobile/counter.h"
#else
#include <array>
#include <atomic>
@ -59,7 +66,7 @@ class CounterCell {
TF_DISALLOW_COPY_AND_ASSIGN(CounterCell);
};
// A stateful class for updating a cumulative metric.
// A stateful class for updating a cumulative integer metric.
//
// This class encapsulates a set of values (or a single value for a label-less
// metric). Each value is identified by a tuple of labels. The class allows the
@ -159,4 +166,5 @@ CounterCell* Counter<NumLabels>::GetCell(const Labels&... labels)
} // namespace monitoring
} // namespace tensorflow
#endif // THIRD_PARTY_TENSORFLOW_CORE_LIB_MONITORING_ACCUMULATOR_H_
#endif // IS_MOBILE_PLATFORM
#endif // THIRD_PARTY_TENSORFLOW_CORE_LIB_MONITORING_COUNTER_H_

View File

@ -0,0 +1,67 @@
/* Copyright 2016 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.
==============================================================================*/
// Null implementation of the Counter metric for mobile platforms.
#ifndef THIRD_PARTY_TENSORFLOW_CORE_LIB_MONITORING_MOBILE_COUNTER_H_
#define THIRD_PARTY_TENSORFLOW_CORE_LIB_MONITORING_MOBILE_COUNTER_H_
#include "tensorflow/core/lib/monitoring/metric_def.h"
#include "tensorflow/core/platform/macros.h"
namespace tensorflow {
namespace monitoring {
// CounterCell which has a null implementation.
class CounterCell {
public:
CounterCell() {}
~CounterCell() {}
void IncrementBy(int64 step) {}
int64 value() const { return 0; }
private:
TF_DISALLOW_COPY_AND_ASSIGN(CounterCell);
};
// Counter which has a null implementation.
template <int NumLabels>
class Counter {
public:
~Counter() {}
static Counter* New(
const MetricDef<MetricKind::kCumulative, int64, NumLabels>& metric_def) {
return new Counter<NumLabels>();
}
template <typename... Labels>
CounterCell* GetCell(const Labels&... labels) {
return &default_counter_cell_;
}
private:
Counter() {}
CounterCell default_counter_cell_;
TF_DISALLOW_COPY_AND_ASSIGN(Counter);
};
} // namespace monitoring
} // namespace tensorflow
#endif // THIRD_PARTY_TENSORFLOW_CORE_LIB_MONITORING_MOBILE_COUNTER_H_