mirror of
https://github.com/Niko1221/Strata.git
synced 2026-11-07 14:21:06 -10:00
On an RX 7900 XTX the first long prompt at 8192-token chunks charged ~70 GB of commit and the engine died (0xC0000409); 7500 and below were flat. A bare auto now stops at 6144 on Windows HIP builds. A chunk the user names stays, with a warning from 8192 up. Windows: the serve start prints the commit left and warns when the planned host allocations plus a 4 GiB floor do not fit; the conversation cache's admission reads min(available RAM, available commit).
35 lines
1.7 KiB
C++
35 lines
1.7 KiB
C++
// Windows HIP auto-chunk cap (#1630) and the commit-limit verdict (#1607): no GPU, no Windows needed.
|
|
#include <cstdio>
|
|
|
|
#include "strata/platform/host_limits.hpp"
|
|
|
|
using namespace strata::platform::host_limits;
|
|
|
|
static int failed = 0;
|
|
#define CHECK(x) do { if (!(x)) { std::fprintf(stderr, "FAIL %s:%d: %s\n", __FILE__, __LINE__, #x); ++failed; } } while (0)
|
|
|
|
int main() {
|
|
// a bare auto on Windows HIP is capped below the 8192 that crashed; every other build keeps it
|
|
CHECK(auto_chunk_cap(true, true) == 6144);
|
|
CHECK(auto_chunk_cap(true, true) < 8192);
|
|
CHECK(auto_chunk_cap(false, true) == 0);
|
|
CHECK(auto_chunk_cap(true, false) == 0); // auto:N / STRATA_PREFILL_AUTO_MAX: the operator's pick
|
|
CHECK(auto_chunk_cap(false, false) == 0);
|
|
// a chunk the user names stays, with a warning from 8192 up (7500 was stable)
|
|
CHECK(warn_user_chunk(true, false, 8192));
|
|
CHECK(warn_user_chunk(true, false, 16384));
|
|
CHECK(!warn_user_chunk(true, false, 7500));
|
|
CHECK(!warn_user_chunk(true, true, 8192)); // the bare auto is capped instead
|
|
CHECK(!warn_user_chunk(false, false, 8192));
|
|
// commit: 188 GiB limit with 90 GiB left and a 10 GiB plan: quiet; 95 GiB limit with 6 GiB left: warns
|
|
const uint64_t G = 1ull << 30;
|
|
CHECK(!commit_verdict(90 * G, 188 * G, 10 * G, 4 * G).warn);
|
|
CHECK(!commit_verdict(14 * G, 96 * G, 10 * G, 4 * G).warn); // exactly enough
|
|
const CommitVerdict v = commit_verdict(6 * G, 96 * G, 10 * G, 4 * G);
|
|
CHECK(v.warn);
|
|
CHECK(v.text.find("1607") != std::string::npos);
|
|
CHECK(!commit_verdict(0, 0, 10 * G, 4 * G).warn); // unknown limit (not Windows)
|
|
if (failed == 0) std::printf("host_limits_test: ok\n");
|
|
return failed ? 1 : 0;
|
|
}
|