split HIP CMake: STRATA_SPLIT_HIP_ARCHS names the split's code objects (gfx11-generic is not in the main backend's arch list); amd_split_report issue template

This commit is contained in:
Niko1221 committed 2026-11-02 13:02:58 +01:00
1 parent a0247cdee8
commit e3ca02ec09
3 files changed
+81 -5

No files matched your search

@@ -0,0 +1,68 @@
name: AMD split engine report
description: Tell us whether the all-cards split engine works on your AMD cards (it prints a line asking for this on cards Strata has not run it on)
title: "[Engine] AMD split engine: <your card> x <count>"
labels: ["engine", "amd-split-report"]
body:
- type: markdown
value: |
Strata runs the all-cards split engine by itself on Radeon AI PRO R9700 / RX 9070 (gfx1201). On other AMD cards (RX 9060, RX 7000, the 780M and similar) it only starts when you ask for it with `strata launch --split-engine on`, and it prints one line asking you to report whether it works. We cannot test those cards, so your report is how we learn.
Write only what you saw. A report that says "it did not start" is as useful as one that says "it works".
- type: input
id: card
attributes:
label: Card model and count
description: For example "2 x RX 7900 XTX 24 GB" or "3 x RX 9060 XT 16 GB"
validations:
required: true
- type: input
id: arch
attributes:
label: Architecture (the gfx name)
description: From the engine's line, or `rocminfo | grep gfx`. For example gfx1100.
validations:
required: true
- type: input
id: rocm
attributes:
label: ROCm / driver version
description: Strata's engine package brings its own ROCm libraries; the kernel driver is yours (`uname -r`, `amd-smi version`).
validations:
required: true
- type: input
id: model
attributes:
label: Model and quantization
description: The model Strata loaded, for example Qwen3.8-Flash-Next UD-Q4_K_XL or the IQ3_S set.
validations:
required: true
- type: textarea
id: selftest
attributes:
label: The self-test line
description: Paste the line from the engine's log that starts "The split engine's self-test" (passed or failed). The log is in the run folder shown at launch; `strata launch` also prints it.
render: text
validations:
required: true
- type: dropdown
id: result
attributes:
label: What happened
options:
- It started and the answers look right
- It started and the answers look wrong
- The self-test failed, so the normal layer split started
- It failed to start (not the self-test)
- It started and crashed or hung later
validations:
required: true
- type: input
id: speed
attributes:
label: Speed, tok/s (the split engine, then the layer split with `--split-engine off` if you tried both)
description: For example "decode 61 tok/s, layer split 48 tok/s, one user".
- type: textarea
id: more
attributes:
label: Anything else
description: Wrong answers (the prompt and what you got), crashes (the last lines of the engine log), or what you changed.
+1 -1
View File
@@ -28,7 +28,7 @@ SYSDEPS=""; [ -d "$HP/lib/rocm_sysdeps" ] && SYSDEPS=";$HP/lib/rocm_sysdeps"
BC=$HP/lib/llvm/amdgcn/bitcode; [ -d "$BC" ] || BC=$HP/amdgcn/bitcode
rm -f "$B/CMakeCache.txt"
cmake -G Ninja -S "$SRC" -B "$B" -DCMAKE_BUILD_TYPE=Release -DSTRATA_ENABLE_HIP=ON -DSTRATA_ENABLE_CUDA=OFF -DSTRATA_BUILD_TESTS=OFF -DSTRATA_BUILD_SPLIT=ON \
"-DSTRATA_SPLIT_CARDS=${CARDS// /;}" "-DCMAKE_HIP_ARCHITECTURES=$ARCHS" -DSTRATA_PREFILL_MMQ=ON -DSTRATA_NATIVE_EXPERTS=ON -DSTRATA_GGML_DIR="$GG" \
"-DSTRATA_SPLIT_CARDS=${CARDS// /;}" "-DCMAKE_HIP_ARCHITECTURES=gfx1201" "-DSTRATA_SPLIT_HIP_ARCHS=$ARCHS" -DSTRATA_PREFILL_MMQ=ON -DSTRATA_NATIVE_EXPERTS=ON -DSTRATA_GGML_DIR="$GG" \
-DCMAKE_HIP_COMPILER="$HP/llvm/bin/clang++" -DCMAKE_HIP_COMPILER_ROCM_ROOT="$HP" "-DCMAKE_PREFIX_PATH=$HP;$LIBW$SYSDEPS" \
"-DCMAKE_HIP_FLAGS=--rocm-path=$HP --rocm-device-lib-path=$BC" -DSTRATA_PORTABLE=ON \
"-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath,'\$ORIGIN' -Wl,--enable-new-dtags"
+12 -4
View File
@@ -34,15 +34,23 @@ if(_fnx_hip)
# gfx11-generic = gfx1100 gfx1101 gfx1102 gfx1103 in one code object (RX 7000 and the 780M iGPU; the gfx11 WMMA path, hip/mma.h FNX_WMMA_GFX11; the self-test passes on a 780M,
# no multi-card PC has run it). Only gfx1201 is automatic
# (strata_control/split_engine.py AUTO_SPLIT_AMD_ARCHS); on another card the engine runs src/selftest.cu before it loads the model
# STRATA_SPLIT_HIP_ARCHS names the split engine's code objects when they are not the tree's CMAKE_HIP_ARCHITECTURES (whose list the HIP backend checks for the main
# engine and does not know gfx11-generic); empty: the tree's list
set(STRATA_SPLIT_HIP_ARCHS "" CACHE STRING "code objects of strata-split-N (gfx1201;gfx1200;gfx11-generic), empty: CMAKE_HIP_ARCHITECTURES")
if(STRATA_SPLIT_HIP_ARCHS)
set(_fnx_hip_archs ${STRATA_SPLIT_HIP_ARCHS})
else()
set(_fnx_hip_archs ${STRATA_HIP_ARCH_LIST})
endif()
set(_fnx_hip_ok gfx1100 gfx1101 gfx1102 gfx1103 gfx11-generic gfx1200 gfx1201)
set(_fnx_hip_bad "")
foreach(_a ${STRATA_HIP_ARCH_LIST})
foreach(_a ${_fnx_hip_archs})
if(NOT _a IN_LIST _fnx_hip_ok)
list(APPEND _fnx_hip_bad ${_a})
endif()
endforeach()
if(NOT STRATA_HIP_ARCH_LIST OR _fnx_hip_bad)
message(WARNING "STRATA_BUILD_SPLIT (HIP): the split engine builds for ${_fnx_hip_ok} only (CMAKE_HIP_ARCHITECTURES=${STRATA_HIP_ARCH_LIST}), skipped")
if(NOT _fnx_hip_archs OR _fnx_hip_bad)
message(WARNING "STRATA_BUILD_SPLIT (HIP): the split engine builds for ${_fnx_hip_ok} only (got ${_fnx_hip_archs}), skipped")
return()
endif()
set(STRATA_SPLIT_ARCH 1201) # (FNX_ARCH is only compared with 80 and 70: any HIP value takes the WMMA paths)
@@ -95,7 +103,7 @@ foreach(_n ${STRATA_SPLIT_CARDS})
FNX_DIR="${_sp}")
target_compile_options(${_t} PRIVATE "$<$<COMPILE_LANGUAGE:HIP>:SHELL:-include ${_sp}/src/hip/fnx_hip.h>")
target_link_libraries(${_t} PRIVATE strata_hip_runtime ${STRATA_HIP_BLAS_TARGETS})
set_target_properties(${_t} PROPERTIES CXX_STANDARD 17 HIP_STANDARD 17 HIP_STANDARD_REQUIRED ON)
set_target_properties(${_t} PROPERTIES CXX_STANDARD 17 HIP_STANDARD 17 HIP_STANDARD_REQUIRED ON HIP_ARCHITECTURES "${_fnx_hip_archs}")
find_package(Threads REQUIRED)
target_link_libraries(${_t} PRIVATE Threads::Threads)
continue()