| |
| |
| |
| |
|
|
| |
|
|
| |
|
|
| |
| |
| |
|
|
| |
| CUDA_PACKAGES_IN=( |
| "command-line-tools" |
| "libraries-dev" |
| ) |
|
|
| |
| |
| |
| |
| function version_ge() { |
| [ "$#" != "2" ] && echo "${FUNCNAME[0]} requires exactly 2 arguments." && exit 1 |
| [ "$(printf '%s\n' "$@" | sort -V | head -n 1)" == "$2" ] |
| } |
| |
| function version_gt() { |
| [ "$#" != "2" ] && echo "${FUNCNAME[0]} requires exactly 2 arguments." && exit 1 |
| [ "$1" = "$2" ] && return 1 || version_ge $1 $2 |
| } |
| |
| function version_le() { |
| [ "$#" != "2" ] && echo "${FUNCNAME[0]} requires exactly 2 arguments." && exit 1 |
| [ "$(printf '%s\n' "$@" | sort -V | head -n 1)" == "$1" ] |
| } |
| |
| function version_lt() { |
| [ "$#" != "2" ] && echo "${FUNCNAME[0]} requires exactly 2 arguments." && exit 1 |
| [ "$1" = "$2" ] && return 1 || version_le $1 $2 |
| } |
|
|
| |
| |
| |
|
|
| |
| CUDA_VERSION_MAJOR_MINOR=${cuda} |
|
|
| |
| |
| CUDA_MAJOR=$(echo "${CUDA_VERSION_MAJOR_MINOR}" | cut -d. -f1) |
| CUDA_MINOR=$(echo "${CUDA_VERSION_MAJOR_MINOR}" | cut -d. -f2) |
| CUDA_PATCH=$(echo "${CUDA_VERSION_MAJOR_MINOR}" | cut -d. -f3) |
| |
| UBUNTU_VERSION=$(lsb_release -sr) |
| UBUNTU_VERSION="${UBUNTU_VERSION//.}" |
|
|
| echo "CUDA_MAJOR: ${CUDA_MAJOR}" |
| echo "CUDA_MINOR: ${CUDA_MINOR}" |
| echo "CUDA_PATCH: ${CUDA_PATCH}" |
| |
| echo "UBUNTU_VERSION: ${UBUNTU_VERSION}" |
|
|
| |
| if [ -z "${CUDA_MAJOR}" ] ; then |
| echo "Error: Unknown CUDA Major version. Aborting." |
| exit 1 |
| fi |
| if [ -z "${CUDA_MINOR}" ] ; then |
| echo "Error: Unknown CUDA Minor version. Aborting." |
| exit 1 |
| fi |
| |
| if [ -z ${UBUNTU_VERSION} ]; then |
| echo "Error: Unknown Ubuntu version. Aborting." |
| exit 1 |
| fi |
|
|
|
|
| |
| |
| |
|
|
| |
|
|
| |
| |
| |
| CUDA_PACKAGES="" |
| for package in "${CUDA_PACKAGES_IN[@]}" |
| do : |
| |
| |
| if [[ "${package}" == "nvcc" ]] && version_ge "$CUDA_VERSION_MAJOR_MINOR" "9.1" ; then |
| package="compiler" |
| elif [[ "${package}" == "compiler" ]] && version_lt "$CUDA_VERSION_MAJOR_MINOR" "9.1" ; then |
| package="nvcc" |
| fi |
| |
| CUDA_PACKAGES+=" cuda-${package}-${CUDA_MAJOR}-${CUDA_MINOR}" |
| done |
| echo "CUDA_PACKAGES ${CUDA_PACKAGES}" |
|
|
| |
| |
| |
|
|
| PIN_FILENAME="cuda-ubuntu${UBUNTU_VERSION}.pin" |
| PIN_URL="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION}/x86_64/${PIN_FILENAME}" |
| APT_KEY_URL="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION}/x86_64/3bf863cc.pub" |
| REPO_URL="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION}/x86_64/" |
|
|
| echo "PIN_FILENAME ${PIN_FILENAME}" |
| echo "PIN_URL ${PIN_URL}" |
| echo "APT_KEY_URL ${APT_KEY_URL}" |
|
|
| |
| |
| |
|
|
| |
| is_root=false |
| if (( $EUID == 0)); then |
| is_root=true |
| fi |
| |
| has_sudo=false |
| if command -v sudo &> /dev/null ; then |
| has_sudo=true |
| fi |
| |
| if [ "$is_root" = false ] && [ "$has_sudo" = false ]; then |
| echo "Root or sudo is required. Aborting." |
| exit 1 |
| elif [ "$is_root" = false ] ; then |
| USE_SUDO=sudo |
| else |
| USE_SUDO= |
| fi |
|
|
| |
| |
| |
| echo "Adding CUDA Repository" |
| wget ${PIN_URL} |
| $USE_SUDO mv ${PIN_FILENAME} /etc/apt/preferences.d/cuda-repository-pin-600 |
| $USE_SUDO apt-key adv --fetch-keys ${APT_KEY_URL} |
| $USE_SUDO add-apt-repository "deb ${REPO_URL} /" |
| $USE_SUDO apt-get update |
|
|
| echo "Installing CUDA packages ${CUDA_PACKAGES}" |
| $USE_SUDO apt-get -y install ${CUDA_PACKAGES} |
|
|
| if [[ $? -ne 0 ]]; then |
| echo "CUDA Installation Error." |
| exit 1 |
| fi |
| |
| |
| |
|
|
| CUDA_PATH=/usr/local/cuda-${CUDA_MAJOR}.${CUDA_MINOR} |
| echo "CUDA_PATH=${CUDA_PATH}" |
| export CUDA_PATH=${CUDA_PATH} |
|
|
|
|
| |
| export PATH="$CUDA_PATH/bin:$PATH" |
| export LD_LIBRARY_PATH="$CUDA_PATH/lib:$LD_LIBRARY_PATH" |
| nvcc -V |
|
|
| |
| if [[ $GITHUB_ACTIONS ]]; then |
| |
| echo "Adding CUDA to CUDA_PATH, PATH and LD_LIBRARY_PATH" |
| echo "CUDA_PATH=${CUDA_PATH}" >> $GITHUB_ENV |
| echo "${CUDA_PATH}/bin" >> $GITHUB_PATH |
| echo "LD_LIBRARY_PATH=${CUDA_PATH}/lib:${LD_LIBRARY_PATH}" >> $GITHUB_ENV |
| fi |
|
|