Skip to content

Commit c567595

Browse files
committed
feat(runtime): add Windows Blackwell CUDA asset
Signed-off-by: LauraGPT <18321252+LauraGPT@users.noreply.github.com>
1 parent 8b55e45 commit c567595

3 files changed

Lines changed: 64 additions & 11 deletions

File tree

.github/workflows/build-llamacpp-binaries.yml

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,30 @@ jobs:
145145
-DGGML_FMA=OFF
146146
-DGGML_F16C=OFF
147147
-DGGML_BMI2=OFF
148+
- os: windows-latest
149+
name: windows-x64-cuda-blackwell
150+
cuda: true
151+
cuda_version: '13.2.0'
152+
cuda_architectures: '120'
153+
build_target: llama-funasr-sensevoice
154+
timeout_minutes: 90
155+
cmake_flags: >-
156+
-DGGML_NATIVE=OFF
157+
-DGGML_CUDA=ON
158+
-DGGML_CUDA_FORCE_CUBLAS=ON
159+
-DGGML_CUDA_FA=OFF
160+
-DGGML_CUDA_NCCL=OFF
161+
-DGGML_CUDA_GRAPHS=OFF
162+
-DGGML_AVX=OFF
163+
-DGGML_AVX2=OFF
164+
-DGGML_AVX_VNNI=OFF
165+
-DGGML_AVX512=OFF
166+
-DGGML_AVX512_VBMI=OFF
167+
-DGGML_AVX512_VNNI=OFF
168+
-DGGML_AVX512_BF16=OFF
169+
-DGGML_FMA=OFF
170+
-DGGML_F16C=OFF
171+
-DGGML_BMI2=OFF
148172
runs-on: ${{ matrix.os }}
149173
timeout-minutes: ${{ matrix.timeout_minutes || 30 }}
150174
defaults:
@@ -257,4 +281,4 @@ jobs:
257281
gh release create "$tag" dist/* \
258282
--repo "${{ github.repository }}" \
259283
--title "FunASR llama.cpp runtime $version" \
260-
--notes "Prebuilt self-contained binaries for the FunASR llama.cpp / GGUF runtime: SenseVoice, Paraformer and Fun-ASR-Nano with built-in FSMN-VAD. Download the default quantized model with \`bash download-funasr-model.sh <sensevoice|paraformer|nano>\` (the helper requires the Hugging Face CLI: \`pip install -U huggingface_hub\`), then run \`llama-funasr-cli\` / \`llama-funasr-sensevoice\` / \`llama-funasr-paraformer\`. Use the default x64 asset for maximum CPU compatibility; use the x64-avx2 asset on CPUs with AVX2/FMA/F16C/BMI2 for higher throughput. The Vulkan assets are \`linux-x64-vulkan\` and \`windows-x64-vulkan\`; they require a working Vulkan driver/ICD and enable SenseVoiceSmall graph execution with \`llama-funasr-sensevoice ... --backend vulkan\`. Build from source with \`-DGGML_VULKAN=ON\` to validate platform-specific GPU stacks. The Windows CUDA asset is \`windows-x64-cuda\`; it requires an NVIDIA driver compatible with the CUDA Toolkit version configured by the release workflow, targets CUDA architecture 86, and enables SenseVoiceSmall graph execution with \`llama-funasr-sensevoice ... --backend cuda\`. Build from source for other GPU architectures. No Python ASR runtime or local build is required. Docs: $docs"
284+
--notes "Prebuilt self-contained binaries for the FunASR llama.cpp / GGUF runtime: SenseVoice, Paraformer and Fun-ASR-Nano with built-in FSMN-VAD. Download the default quantized model with \`bash download-funasr-model.sh <sensevoice|paraformer|nano>\` (the helper requires the Hugging Face CLI: \`pip install -U huggingface_hub\`), then run \`llama-funasr-cli\` / \`llama-funasr-sensevoice\` / \`llama-funasr-paraformer\`. Use the default x64 asset for maximum CPU compatibility; use the x64-avx2 asset on CPUs with AVX2/FMA/F16C/BMI2 for higher throughput. The Vulkan assets are \`linux-x64-vulkan\` and \`windows-x64-vulkan\`; they require a working Vulkan driver/ICD and enable SenseVoiceSmall graph execution with \`llama-funasr-sensevoice ... --backend vulkan\`. Build from source with \`-DGGML_VULKAN=ON\` to validate platform-specific GPU stacks. The Windows CUDA assets are \`windows-x64-cuda\` for CUDA architecture 86 and \`windows-x64-cuda-blackwell\` for CUDA architecture 120 (RTX 50 / Blackwell); both require a compatible NVIDIA driver and enable SenseVoiceSmall graph execution with \`llama-funasr-sensevoice ... --backend cuda\`. Build from source for other GPU architectures. A successful CI build verifies code generation and archive integrity, not execution on physical Blackwell hardware. No Python ASR runtime or local build is required. Docs: $docs"

runtime/llama.cpp/README.md

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -93,19 +93,21 @@ FSMN-VAD without Python.
9393

9494
### Optional Windows CUDA backend for SenseVoiceSmall
9595

96-
The CPU release ZIPs are portable packages. Tagged releases also publish
97-
`funasr-llamacpp-windows-x64-cuda.zip` for SenseVoiceSmall graph execution on
98-
NVIDIA GPUs that match CUDA architecture 86. Download the CUDA ZIP from
99-
[runtime-llamacpp-v0.1.9](https://github.com/modelscope/FunASR/releases/tag/runtime-llamacpp-v0.1.9),
100-
then select the backend at runtime:
96+
The CPU release ZIPs are portable packages. Tagged releases publish separate
97+
SenseVoiceSmall CUDA packages: `funasr-llamacpp-windows-x64-cuda.zip` targets
98+
CUDA architecture 86, while `funasr-llamacpp-windows-x64-cuda-blackwell.zip`
99+
targets CUDA architecture 120 (`sm_120`) for RTX 50 / Blackwell GPUs. Select the
100+
matching archive, then enable the backend at runtime:
101101

102102
```bash
103103
# From the extracted windows-x64-cuda package:
104104
./llama-funasr-sensevoice \
105105
-m sensevoice-small-q8.gguf --vad fsmn-vad.gguf -a sample.wav --backend cuda
106106
```
107107

108-
Build from source to target other GPU architectures:
108+
The Blackwell package uses the same command from its extracted directory. Build
109+
from source to target other GPU architectures or to reproduce the architecture
110+
120 build locally:
109111

110112
```bash
111113
cmake -B build-cuda -DCMAKE_BUILD_TYPE=Release -DGGML_CUDA=ON \
@@ -115,10 +117,11 @@ cmake --build build-cuda -j --target llama-funasr-sensevoice
115117
-m sensevoice-small-f16.gguf -a sample.wav --backend cuda
116118
```
117119

118-
Use the matching `CMAKE_CUDA_ARCHITECTURES` value for your GPU. RTX 50 /
119-
Blackwell cards report compute capability 12.0 (`sm_120`), so the current
120-
`windows-x64-cuda` prebuilt package for architecture 86 will not cover those
121-
cards.
120+
Use the matching `CMAKE_CUDA_ARCHITECTURES` value for your GPU. A successful
121+
release workflow build verifies architecture 120 code generation and ZIP
122+
integrity; it does not prove execution on physical Blackwell hardware. Keep
123+
hardware-specific reports open until the matching archive is retested on the
124+
reported GPU.
122125

123126
`--backend cpu` remains the default and is what the portable cross-platform
124127
prebuilt binaries use. The CUDA package requires an NVIDIA driver compatible

runtime/llama.cpp/tests/test_release_workflow.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,19 @@ def test_windows_cuda_release_asset_is_in_matrix():
1616
assert "timeout_minutes: 90" in workflow
1717

1818

19+
def test_windows_blackwell_cuda_release_asset_is_in_matrix():
20+
workflow = WORKFLOW.read_text(encoding="utf-8")
21+
entry = workflow.split("name: windows-x64-cuda-blackwell", maxsplit=1)[1].split(
22+
" - os:", maxsplit=1
23+
)[0]
24+
25+
assert "cuda: true" in entry
26+
assert "cuda_version: '13.2.0'" in entry
27+
assert "cuda_architectures: '120'" in entry
28+
assert "build_target: llama-funasr-sensevoice" in entry
29+
assert "timeout_minutes: 90" in entry
30+
31+
1932
def test_linux_vulkan_release_asset_is_in_matrix():
2033
workflow = WORKFLOW.read_text(encoding="utf-8")
2134

@@ -88,10 +101,13 @@ def test_release_notes_explain_cpu_and_cuda_windows_assets():
88101
assert "--backend cuda" in readme
89102
assert "Windows CUDA" in readme
90103
assert "CUDA architecture 86" in readme
104+
assert "windows-x64-cuda-blackwell" in readme
105+
assert "CUDA architecture 120" in readme
91106
assert "Build from source" in readme
92107
assert "other GPU architectures" in readme
93108
assert "CMAKE_CUDA_ARCHITECTURES=120" in readme
94109
assert "sm_120" in readme
110+
assert "does not prove execution on physical Blackwell hardware" in readme
95111

96112

97113
def test_release_notes_explain_vulkan_linux_asset():
@@ -134,6 +150,16 @@ def test_github_release_notes_mention_vulkan_asset():
134150
assert "--backend vulkan" in release_notes
135151
assert "GGML_VULKAN=ON" in release_notes
136152

153+
154+
def test_github_release_notes_distinguish_cuda_architecture_assets():
155+
workflow = WORKFLOW.read_text(encoding="utf-8")
156+
release_notes = workflow.split('--notes "', maxsplit=1)[1]
157+
158+
assert "windows-x64-cuda-blackwell" in release_notes
159+
assert "CUDA architecture 86" in release_notes
160+
assert "CUDA architecture 120" in release_notes
161+
162+
137163
def test_readme_documents_lightweight_http_server():
138164
readme = (ROOT / "runtime" / "llama.cpp" / "README.md").read_text(encoding="utf-8")
139165

0 commit comments

Comments
 (0)