[Openmp-commits] [openmp] [OpenMP][NFC] Put ExponentialBackoff in a Utils header (PR #73816)

Joseph Huber via Openmp-commits openmp-commits at lists.llvm.org
Wed Nov 29 08:41:13 PST 2023


================
@@ -0,0 +1,52 @@
+//===-- Utils/ExponentialBackoff.h - Heuristic helper class ------*- C++ -*===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Implement exponential backoff counting.
+// Linearly increments until given maximum, exponentially decrements based on
+// given backoff factor.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef OMPTARGET_UTILS_EXPONENTIAL_BACKOFF_H
+#define OMPTARGET_UTILS_EXPONENTIAL_BACKOFF_H
+
+#include <cassert>
+#include <cmath>
+#include <cstdint>
+
+namespace utils {
+
+class ExponentialBackoff {
+  int64_t Count = 0;
+  const int64_t MaxCount = 0;
+  const int64_t CountThreshold = 0;
+  const float BackoffFactor = 0.0f;
+
+public:
+  ExponentialBackoff(int64_t MaxCount, int64_t CountThreshold,
+                     float BackoffFactor)
+      : MaxCount(MaxCount), CountThreshold(CountThreshold),
+        BackoffFactor(BackoffFactor) {
+    assert(MaxCount >= 0 &&
+           "ExponentialBackoff: maximum count value should be non-negative");
+    assert(CountThreshold >= 0 &&
+           "ExponentialBackoff: count threshold value should be non-negative");
+    assert(BackoffFactor >= 0 && BackoffFactor < 1 &&
+           "ExponentialBackoff: backoff factor should be in [0, 1) interval");
----------------
jhuber6 wrote:

This confuses me, why not just make these `uint64_t` if they're always expected to be greater than zero. These are asserts only done in the constructor so it's not like we're really error checking for underflow.

https://github.com/llvm/llvm-project/pull/73816


More information about the Openmp-commits mailing list