99#
1010# Optional:
1111# LLAMA_SERVER=/path/to/llama-server
12+ # VULKAN_DEVICE=Vulkan0
1213# CHAT_TEMPLATE_FILE=/path/to/google-gemma-4-31B-it-interleaved.fixed.jinja
1314# HOST=127.0.0.1 PORT=18085 CTX_SIZE=65537 BATCH_SIZE=512 UBATCH_SIZE=512
1415# GPU_LAYERS=999 GPU_LAYERS_DRAFT=999 N_CPU_MOE=38 N_CPU_MOE_DRAFT=38
@@ -51,6 +52,7 @@ PROMPT="${PROMPT:-Reply with exactly: turbo4v-ok}"
5152EXPECT=" ${EXPECT:- turbo4v-ok} "
5253LOG_FILE=" ${LOG_FILE:- ${TMPDIR:-/ tmp} / llama-turbo4-vulkan-gemma4-smoke.log} "
5354REQUIRE_LOG_MARKERS=" ${REQUIRE_LOG_MARKERS:- 1} "
55+ VULKAN_DEVICE=" ${VULKAN_DEVICE:- Vulkan0} "
5456
5557if [[ -z " $LLAMA_SERVER " || ! -x " $LLAMA_SERVER " ]]; then
5658 echo " SKIP: set LLAMA_SERVER or build llama-server before running this smoke test."
@@ -72,6 +74,13 @@ if ! command -v python3 >/dev/null 2>&1; then
7274 exit 0
7375fi
7476
77+ DEVICE_LIST=" $( " $LLAMA_SERVER " --list-devices 2>&1 || true) "
78+ if ! grep -Fq " $VULKAN_DEVICE :" <<< " $DEVICE_LIST" ; then
79+ echo " SKIP: requested Vulkan device '$VULKAN_DEVICE ' is unavailable."
80+ echo " $DEVICE_LIST "
81+ exit 0
82+ fi
83+
7584SERVER_PID=" "
7685REQUEST_FILE=" $( mktemp " ${TMPDIR:-/ tmp} /turbo4-vulkan-gemma4-request.XXXXXX.json" ) "
7786RESPONSE_FILE=" $( mktemp " ${TMPDIR:-/ tmp} /turbo4-vulkan-gemma4-response.XXXXXX.json" ) "
@@ -87,6 +96,7 @@ trap cleanup EXIT
8796
8897server_args=(
8998 -m " $MODEL "
99+ -dev " $VULKAN_DEVICE "
90100 -ngl " $GPU_LAYERS "
91101 -ngld " $GPU_LAYERS_DRAFT "
92102 -ncmoe " $N_CPU_MOE "
@@ -123,6 +133,7 @@ mkdir -p "$(dirname "$LOG_FILE")"
123133echo " Starting Gemma4 Vulkan TurboQuant smoke:"
124134echo " server: $LLAMA_SERVER "
125135echo " model: $MODEL "
136+ echo " device: $VULKAN_DEVICE "
126137echo " cache: -ctk turbo4 -ctv turbo4"
127138echo " log: $LOG_FILE "
128139
@@ -144,6 +155,13 @@ until curl -fsS "http://$HOST:$PORT/health" >/dev/null 2>&1; do
144155 sleep 2
145156done
146157
158+ if ! kill -0 " $SERVER_PID " > /dev/null 2>&1 ; then
159+ echo " FAIL: llama-server exited before the healthy endpoint was accepted."
160+ echo " Check for a stale process already bound to $HOST :$PORT ."
161+ tail -n 200 " $LOG_FILE " || true
162+ exit 1
163+ fi
164+
147165PROMPT=" $PROMPT " python3 - " $REQUEST_FILE " << 'PY '
148166import json
149167import os
@@ -176,11 +194,16 @@ if ! grep -Fq "$EXPECT" "$RESPONSE_FILE"; then
176194fi
177195
178196if [[ " $REQUIRE_LOG_MARKERS " == " 1" ]]; then
179- if ! grep -Fq " Vulkan0 " " $LOG_FILE " ; then
197+ if ! grep -Eq " using device Vulkan[0-9]+| - Vulkan[0-9]+ : " " $LOG_FILE " ; then
180198 echo " FAIL: server log does not show Vulkan backend startup."
181199 tail -n 200 " $LOG_FILE " || true
182200 exit 1
183201 fi
202+ if ! grep -Fq " using device $VULKAN_DEVICE " " $LOG_FILE " ; then
203+ echo " FAIL: server log does not show model placement on $VULKAN_DEVICE ."
204+ tail -n 200 " $LOG_FILE " || true
205+ exit 1
206+ fi
184207 if ! grep -Fq " K (turbo4)" " $LOG_FILE " ; then
185208 echo " FAIL: server log does not show K cache using turbo4."
186209 tail -n 200 " $LOG_FILE " || true
0 commit comments