mirror of
https://github.com/Niko1221/Strata.git
synced 2026-11-07 06:15:58 -10:00
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:
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.
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in new issue
Block a user