/
pccc
/
pccc-mlir
Обзор
Документация
Войти
/
pccc
/
pccc-mlir
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
offload/include/Utils/ExponentialBackoff.h
52 строки
2 KB
obitotsky
fork mlir
19 июл 2026, 07:05
Верифицирован
19 июл 2026, 07:05
6422b87
Код
Авторство
О чём код?
//===-- 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 double BackoffFactor = 0; public: ExponentialBackoff(int64_t MaxCount, int64_t CountThreshold, double 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"); } void increment() { Count = std::min(Count + 1, MaxCount); } void decrement() { Count *= BackoffFactor; } bool isAboveThreshold() const { return Count > CountThreshold; } }; } // namespace utils #endif // OMPTARGET_UTILS_EXPONENTIAL_BACKOFF_H