#pragma once #include #include #include 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 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 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 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