mirror of
https://github.com/Heretek-AI/Strata.git
synced 2026-11-07 10:05:58 -10:00
gfx1151 on Windows: the prompt experts run on the F16 matrix-core kernels by default (STRATA_PF_F16)
Owner rule: a consistent Strix Halo speed gain goes on by default. Windows gfx1151, engine 0.1.54 builds, interleaved, idle box (ab_f16def, 2 rounds, no environment on either side): IQ3_S prompts 4K 1,180 -> 1,279, 8K 1,289 -> 1,398, 32K 1,299 -> 1,404 tok/s (x1.08); UD-IQ4_XS 8K 1,092 -> 1,223, 32K 1,135 -> 1,248 (x1.10-1.12). Decode over 200 tokens unchanged (58.6 -> 58.2, 48.8 -> 48.5), first greedy ids identical, 38 of 38 runs exit 0. The rounding differs from the int8 kernels; KL is information only. STRATA_PF_F16=0 turns it off. arch_defaults_test expects six switches on Windows gfx1151.
This commit is contained in:
1 parent
d936db6547
commit
7f6bc33081
2 files changed
+11
-5
No files matched your search
@@ -152,6 +152,11 @@ std::vector<std::pair<std::string, std::string>> igpu_default_env(const char* gc
|
||||
{"STRATA_PA_FAST", "1"},
|
||||
{"STRATA_HC_UPMIX", "1"},
|
||||
{"STRATA_PF_FUSED", "1"},
|
||||
// 0.2.9 (owner, 10-30: a consistent Strix Halo speed gain goes on by default): the prompt experts of every covered
|
||||
// format on the F16 matrix-core kernels (the Q8_0 down layers of the Unsloth files included). Windows gfx1151,
|
||||
// interleaved x3, same 16 greedy ids: IQ3_S 4K 1,187 -> 1,296 and 8K 1,285 -> 1,399 tok/s (x1.09), UD-IQ4_XS 4K 1,119 ->
|
||||
// 1,221 and 8K 1,180 -> 1,270; decode unchanged. The rounding differs from the int8 kernels (KL is information only).
|
||||
{"STRATA_PF_F16", "1"},
|
||||
};
|
||||
}
|
||||
return t;
|
||||
|
||||
@@ -185,7 +185,7 @@ int main() {
|
||||
// 0.2.8: Strix Halo (gfx1151, integrated) gets the matrix-core prompt set on Windows; the 780M and the 890M are
|
||||
// not measured there and stay off
|
||||
const bool win_on = m.expect_on && m.integrated && std::string(m.gcn).rfind("gfx1151", 0) == 0;
|
||||
CHECK(igpu_default_env(m.gcn, m.integrated).size() == (win_on ? 5u : 0u));
|
||||
CHECK(igpu_default_env(m.gcn, m.integrated).size() == (win_on ? 6u : 0u));
|
||||
#else
|
||||
CHECK(igpu_default_env(m.gcn, m.integrated).size() == (want ? 5u : 0u));
|
||||
#endif
|
||||
@@ -215,13 +215,14 @@ int main() {
|
||||
const auto t = igpu_default_env(m.gcn, m.integrated);
|
||||
CHECK(t.empty() == !m.expect_on);
|
||||
if (m.expect_on) {
|
||||
CHECK(t.size() == 5);
|
||||
bool halo_win = false;
|
||||
#if defined(_WIN32)
|
||||
halo_win = std::string(m.gcn).rfind("gfx1151", 0) == 0;
|
||||
#endif
|
||||
CHECK(t.size() == (halo_win ? 6u : 5u));
|
||||
std::vector<const char*> want = {"STRATA_HIP_WMMA", "STRATA_PF_GEMM", "STRATA_PA_FAST", "STRATA_HC_UPMIX"};
|
||||
want.push_back(halo_win ? "STRATA_PF_FUSED" : "STRATA_SELECT_WMMA");
|
||||
if (halo_win) want.push_back("STRATA_PF_F16");
|
||||
for (const char* w : want) {
|
||||
bool found = false;
|
||||
for (const auto& kv : t) found = found || (kv.first == w && kv.second == "1");
|
||||
@@ -284,20 +285,20 @@ int main() {
|
||||
CHECK(!igpu_prompt_set_enabled("gfx1103", true));
|
||||
{
|
||||
const auto t = igpu_default_env("gfx1151", true);
|
||||
CHECK(t.size() == 5);
|
||||
CHECK(t.size() == 6);
|
||||
auto has = [&t](const char* k) {
|
||||
for (const auto& kv : t) if (kv.first == k) return kv.second == "1";
|
||||
return false;
|
||||
};
|
||||
CHECK(has("STRATA_HIP_WMMA") && has("STRATA_PF_GEMM") && has("STRATA_PA_FAST") && has("STRATA_HC_UPMIX") &&
|
||||
has("STRATA_PF_FUSED"));
|
||||
has("STRATA_PF_FUSED") && has("STRATA_PF_F16"));
|
||||
CHECK(!has("STRATA_SELECT_WMMA"));
|
||||
CHECK(igpu_default_env("gfx1151", false).empty()); // a gfx1151 reported as a discrete card
|
||||
CHECK(igpu_default_env("gfx1150", true).empty()); // 890M: unchanged
|
||||
CHECK(igpu_default_env("gfx1103", true).empty()); // 780M on Windows: unchanged
|
||||
}
|
||||
{
|
||||
const char* halo[] = {"STRATA_HIP_WMMA", "STRATA_PF_GEMM", "STRATA_PA_FAST", "STRATA_HC_UPMIX", "STRATA_PF_FUSED"};
|
||||
const char* halo[] = {"STRATA_HIP_WMMA", "STRATA_PF_GEMM", "STRATA_PA_FAST", "STRATA_HC_UPMIX", "STRATA_PF_FUSED", "STRATA_PF_F16"};
|
||||
for (const char* k : halo) unset(k);
|
||||
unset("STRATA_SELECT_WMMA");
|
||||
const auto set = apply_arch_defaults("gfx1151", true);
|
||||
|
||||
Reference in new issue
Block a user