#!/bin/sh set -eu pick_vulkan_icd() { for candidate in \ /etc/vulkan/icd.d/nvidia_icd.json \ /etc/vulkan/icd.d/nvidia_icd.x86_64.json \ /usr/share/vulkan/icd.d/nvidia_icd.json \ /usr/share/vulkan/icd.d/nvidia_icd.x86_64.json do if [ -f "$candidate" ]; then printf '%s\n' "$candidate" return 0 fi done return 1 } run_diagnostic() { label="$1" shift echo "[entrypoint] $label" if "$@"; then return 0 else status=$? fi echo "[entrypoint] $label failed with exit code $status" return 0 } if [ -z "${OMP_NUM_THREADS:-}" ]; then export OMP_NUM_THREADS=1 fi if [ -z "${VK_ICD_FILENAMES:-}" ]; then if detected_icd="$(pick_vulkan_icd)"; then export VK_ICD_FILENAMES="$detected_icd" echo "[entrypoint] Using Vulkan ICD: $VK_ICD_FILENAMES" else echo "[entrypoint] Vulkan ICD file not found under /etc or /usr/share" fi else echo "[entrypoint] Respecting preset VK_ICD_FILENAMES: $VK_ICD_FILENAMES" fi echo "[entrypoint] OMP_NUM_THREADS=$OMP_NUM_THREADS" run_diagnostic "nvidia-smi" nvidia-smi run_diagnostic "vulkaninfo --summary" vulkaninfo --summary exec "$@"