| 1 | #!/usr/bin/env bash |
| 2 | set -euo pipefail |
| 3 | |
| 4 | # Usage: install_gdrcopy.sh <GDRCOPY_OS_VERSION> <GDRCOPY_CUDA_VERSION> <uuarch> |
| 5 | # uuarch must be "x64" or "aarch64" |
| 6 | # Optional: set GDRCOPY_VERSION to override the libgdrapi package version (default: 2.5.1-1) |
| 7 | # Requires: curl, apt-get, root privileges |
| 8 | if [[ $(id -u) -ne 0 ]]; then |
| 9 | echo "Must be run as root" >&2 |
| 10 | exit 1 |
| 11 | fi |
| 12 | if [[ $# -ne 3 ]]; then |
| 13 | echo "Usage: $0 <GDRCOPY_OS_VERSION> <GDRCOPY_CUDA_VERSION> <uuarch(x64|aarch64)>" >&2 |
| 14 | exit 1 |
| 15 | fi |
| 16 | OS_VER="$1" |
| 17 | CUDA_VER="$2" |
| 18 | UUARCH_RAW="$3" |
| 19 | # Normalize/validate arch |
| 20 | case "${UUARCH_RAW,,}" in |
| 21 | aarch64|arm64) |
| 22 | URL_ARCH="aarch64" |
| 23 | DEB_ARCH="arm64" |
| 24 | ;; |
| 25 | x64|x86_64|amd64) |
| 26 | URL_ARCH="x64" |
| 27 | DEB_ARCH="amd64" |
| 28 | ;; |
| 29 | *) |
| 30 | echo "Unsupported uuarch: ${UUARCH_RAW}. Use 'x64' or 'aarch64'." >&2 |
| 31 | exit 1 |
| 32 | ;; |
| 33 | esac |
| 34 | |
| 35 | OS_VER_LOWER="$(tr '[:upper:]' '[:lower:]' <<<"$OS_VER")" |
| 36 | GDRCOPY_PKG_VER="${GDRCOPY_VERSION:-2.5.1-1}" |
| 37 | |
| 38 | DEB_NAME="libgdrapi_${GDRCOPY_PKG_VER}_${DEB_ARCH}.${OS_VER}.deb" |
| 39 | BASE_URL="https://developer.download.nvidia.com/compute/redist/gdrcopy" |
| 40 | URL="${BASE_URL}/CUDA%20${CUDA_VER}/${OS_VER_LOWER}/${URL_ARCH}/${DEB_NAME}" |
| 41 | |
| 42 | echo "Downloading: ${URL}" |
| 43 | TMPDIR="$(mktemp -d)" |
| 44 | trap 'rm -rf "${TMPDIR}"' EXIT |
| 45 | |
| 46 | curl -fSL "${URL}" -o "${TMPDIR}/${DEB_NAME}" |
| 47 | |
| 48 | export DEBIAN_FRONTEND=noninteractive |
| 49 | apt-get update |
| 50 | apt-get install -y "${TMPDIR}/${DEB_NAME}" |
| 51 | apt-get clean |
| 52 | rm -rf /var/lib/apt/lists/* |
| 53 | |
| 54 | echo "Installed ${DEB_NAME}" |