Signed-off-by: mgoin <mgoin64@gmail.com> Co-authored-by: Claude <noreply@anthropic.com>
43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include <climits>
|
|
#include <cstdint>
|
|
#include <cstdlib>
|
|
|
|
inline constexpr uint32_t next_pow_2(uint32_t const num) {
|
|
if (num <= 1) return num;
|
|
return 1 << (CHAR_BIT * sizeof(num) - __builtin_clz(num - 1));
|
|
}
|
|
|
|
template <typename A, typename B>
|
|
static inline constexpr auto div_ceil(A a, B b) {
|
|
return (a + b - 1) / b;
|
|
}
|
|
|
|
// Round a down to the next multiple of b. The caller is responsible for making
|
|
// sure that b is non-zero
|
|
template <typename T>
|
|
inline constexpr T round_to_previous_multiple_of(T a, T b) {
|
|
return a % b == 0 ? a : (a / b) * b;
|
|
}
|
|
|
|
// Round a up to the next multiple of b. The caller is responsible for making
|
|
// sure that b is non-zero
|
|
template <typename T>
|
|
inline constexpr T round_to_next_multiple_of(T a, T b) {
|
|
return a % b == 0 ? a : ((a / b) + 1) * b;
|
|
}
|
|
|
|
namespace vllm {
|
|
|
|
// Returns true if env VLLM_BATCH_INVARIANT=1
|
|
inline bool vllm_is_batch_invariant() {
|
|
static bool cached = []() {
|
|
const char* val = std::getenv("VLLM_BATCH_INVARIANT");
|
|
return val && std::atoi(val) != 0;
|
|
}();
|
|
return cached;
|
|
}
|
|
|
|
} // namespace vllm
|