@@ -233,6 +233,34 @@ MetricAPIHelper(TRITONSERVER_Metric* metric, TRITONSERVER_MetricKind kind)
233233 TRITONSERVER_ErrorDelete (err);
234234}
235235
236+ // Calculate the cumulative_counts vector based on data and buckets.
237+ std::vector<std::uint64_t >
238+ GetCumulativeCounts (
239+ const std::vector<double >& data, const std::vector<double >& buckets)
240+ {
241+ std::vector<std::uint64_t > cumulative_counts (buckets.size () + 1 , 0 );
242+ for (double datum : data) {
243+ int i = 0 ;
244+ for (; i < buckets.size (); ++i) {
245+ if (datum <= buckets[i]) {
246+ cumulative_counts[i]++;
247+ break ;
248+ }
249+ }
250+ if (i == buckets.size ()) {
251+ cumulative_counts[i]++;
252+ }
253+ }
254+
255+ double cumulative_sum = 0.0 ;
256+ for (int i = 0 ; i < cumulative_counts.size (); ++i) {
257+ std::cout << cumulative_counts[i] << std::endl;
258+ cumulative_sum += cumulative_counts[i];
259+ cumulative_counts[i] = cumulative_sum;
260+ }
261+ return cumulative_counts;
262+ }
263+
236264void
237265HistogramAPIHelper (
238266 TRITONSERVER_Server* server, TRITONSERVER_Metric* metric,
@@ -247,8 +275,8 @@ HistogramAPIHelper(
247275 TRITONSERVER_MetricObserve (metric, datum), " observe metric value" );
248276 sum += datum;
249277 }
250- std::vector<std::uint64_t > cumulative_counts = { 1 , 1 , 2 , 2 , 3 , 3 };
251- ASSERT_EQ (buckets. size () + 1 , cumulative_counts. size () );
278+ std::vector<std::uint64_t > cumulative_counts =
279+ GetCumulativeCounts (data, buckets );
252280
253281 // Collect formatted output
254282 std::string metrics_str;
0 commit comments