diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2223f5712..a6a7dd355 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -206,16 +206,20 @@ test: - name: redis:7-alpine alias: redis script: - # Remove CUDA stubs from LD_LIBRARY_PATH — nvidia RuntimeClass provides real libcuda.so - - export LD_LIBRARY_PATH=$(echo "$LD_LIBRARY_PATH" | tr ':' '\n' | grep -v stubs | tr '\n' ':' | sed 's/:$//') - - nvidia-smi || echo "nvidia-smi not available (no GPU RuntimeClass) — compile-only mode" - # Detect GPU compute capability and partition sccache per architecture - # Falls back to 89 (L4) when nvidia-smi unavailable (compile jobs don't need GPU) - - export CUDA_COMPUTE_CAP=$(nvidia-smi --query-gpu=compute_cap --format=csv,noheader 2>/dev/null | head -1 | tr -d '.' || echo "89") - - export CUDA_COMPUTE_CAP=${CUDA_COMPUTE_CAP:-89} - - echo "CUDA_COMPUTE_CAP=$CUDA_COMPUTE_CAP" - - export SCCACHE_DIR="/mnt/sccache/sm_${CUDA_COMPUTE_CAP}" - - mkdir -p "$SCCACHE_DIR" + # Detect GPU: if nvidia-smi works, strip stubs (real libcuda.so from RuntimeClass) + # If no GPU, keep stubs so CUDA-linked test binaries can at least load + - | + if nvidia-smi 2>/dev/null; then + echo "GPU detected — stripping CUDA stubs from LD_LIBRARY_PATH" + export LD_LIBRARY_PATH=$(echo "$LD_LIBRARY_PATH" | tr ':' '\n' | grep -v stubs | tr '\n' ':' | sed 's/:$//') + export CUDA_COMPUTE_CAP=$(nvidia-smi --query-gpu=compute_cap --format=csv,noheader | head -1 | tr -d '.') + else + echo "No GPU detected — keeping CUDA stubs for test binary loading" + export CUDA_COMPUTE_CAP=89 + fi + echo "CUDA_COMPUTE_CAP=$CUDA_COMPUTE_CAP" + export SCCACHE_DIR="/mnt/sccache/sm_${CUDA_COMPUTE_CAP}" + mkdir -p "$SCCACHE_DIR" # Wait for Redis sidecar (K8s executor doesn't wait for service readiness) - | for i in $(seq 1 30); do @@ -251,12 +255,16 @@ compile-services: - if: $CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "api" script: # Detect GPU compute capability and partition sccache per architecture - # Falls back to 89 (L4) when nvidia-smi unavailable (compile doesn't need GPU) - - export CUDA_COMPUTE_CAP=$(nvidia-smi --query-gpu=compute_cap --format=csv,noheader 2>/dev/null | head -1 | tr -d '.' || echo "89") - - export CUDA_COMPUTE_CAP=${CUDA_COMPUTE_CAP:-89} - - echo "CUDA_COMPUTE_CAP=$CUDA_COMPUTE_CAP" - - export SCCACHE_DIR="/mnt/sccache/sm_${CUDA_COMPUTE_CAP}" - - mkdir -p "$SCCACHE_DIR" + - | + if nvidia-smi 2>/dev/null; then + export CUDA_COMPUTE_CAP=$(nvidia-smi --query-gpu=compute_cap --format=csv,noheader | head -1 | tr -d '.') + else + echo "No GPU — keeping CUDA stubs, defaulting compute cap to 89 (L4)" + export CUDA_COMPUTE_CAP=89 + fi + echo "CUDA_COMPUTE_CAP=$CUDA_COMPUTE_CAP" + export SCCACHE_DIR="/mnt/sccache/sm_${CUDA_COMPUTE_CAP}" + mkdir -p "$SCCACHE_DIR" - sccache --zero-stats || true # Select build profile: dev-release (fast, thin LTO) or release (full, fat LTO) - PROFILE=${DEV_RELEASE:+dev-release}; PROFILE=${PROFILE:-release}