RoboMME / docker-entrypoint.sh
HongzeFu's picture
docker v1
18afa85
#!/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 "$@"