HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux WebLive 5.15.0-79-generic #86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023 x86_64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //proc/thread-self/root/usr/local/qcloud/nv/nv_driver_install_helper.sh
#!/bin/bash

DRIVER_INSTALLER=/usr/local/qcloud/nv/nv_driver_install.sh
CUDA_INSTALLER=/usr/local/qcloud/nv/nv_cuda_install.sh
CUDNN_INSTALLER=/usr/local/qcloud/nv/nv_cudnn_install.sh
FABRICMGR_INSTALLER=/usr/local/qcloud/nv/nv_fabricmgr_install.sh
FABRICMGR_INSTALLER_FILENAME=nv_fabricmgr_install.sh
TACO_SETUP=/usr/local/qcloud/nv/taco_setup.sh
PROGRESS_BAR=/usr/local/qcloud/nv/progress_bar.sh
PROFILE=/etc/profile

INSTALL_CFG=/tmp/nv_driver_install.ini
GPUINFO_CFG=/tmp/gpu_info.ini
GPUINFO_FILENAME=gpu_info.ini

wait_time=0

while [ ! -f ${INSTALL_CFG} ]; do
    if [ $wait_time -gt 300 ]; then
        echo "Can not find " ${INSTALL_CFG}
        echo "We will do not install nvidia drivers"
        echo "### end ###"
        exit
    fi
    sleep 1
    wait_time=$(($wait_time+1))
done

cat ${INSTALL_CFG} | xargs echo

wget_file() {
    wait_info_time=0
    get_gpu_info=0
    while [ $wait_info_time -lt 10 ]; do
        wget "http://mirrors.tencentyun.com/install/GPU/$1" -O $2
        if [ $? == 0 ]; then
            get_gpu_info=1
            break;
        fi
        wait_info_time=$(($wait_info_time+1))
        sleep 1
    done
    if [ x$get_gpu_info != x1 ]; then
        echo "download file $1 failed, please check the input,url and network"
        return 1
    fi
    return 0
}

get_gpuinfo() {
    # get driver name from driver version
    gpu_version=$1
    cuda_version=$2
    cudnn_version1=$3
    if [ ! -z "$4" ]; then
        cudnn_version2=$4
        cudnn_version3=$5
    fi

    array_tmp=`eval cat $GPUINFO_CFG`
    IFS=";"
    array=($array_tmp)

    for(( i=0; i<${#array[@]}; i++))
    do
        tmp=`eval echo ${array[i]}`
        tmp_driver=`eval echo $tmp | awk -F ',' '{print $1}'`
        tmp_driver_version=`eval echo $tmp_driver | awk -F ':' '{print $2}'`
        driver_version=`eval echo $tmp_driver_version`
        tmp_name=`eval echo $tmp | awk -F ',' '{print $2}'`
        tmp_driver_name=`eval echo $tmp_name | awk -F ':' '{print $2}'`
        driver_name=`eval echo $tmp_driver_name`
        if [ ! -z "$cuda_version" ]; then
            tmp_cuda=`eval echo $tmp | awk -F ',' '{print $3}'`
            tmp_cuda_version=`eval echo $tmp_cuda | awk -F ':' '{print $2}'`
            tmp_cuda_version=`eval echo $tmp_cuda_version`

            tmp_name=`eval echo $tmp | awk -F ',' '{print $4}'`
            tmp_cuda_name=`eval echo $tmp_name | awk -F ':' '{print $2}'`
            cuda_name=`eval echo $tmp_cuda_name`
        elif [ $gpu_version == $driver_version ]; then
            echo "install driver only, goto install $driver_name"
            rm -f ${INSTALL_CFG}
            rm -f ${GPUINFO_CFG}
            $DRIVER_INSTALLER $driver_name
            exit 0
        fi

        if [ ! -z "$cudnn_version1" ]; then
            tmp_cudnn=`eval echo $tmp | awk -F ',' '{print $5}'`
            tmp_cudnn_version=`eval echo $tmp_cudnn | awk -F ':' '{print $2}'`
            tmp_cudnn_version=`eval echo $tmp_cudnn_version`

            #ubuntu has 3 cudnn names
            lsb_release -a 2>&1 | grep "Ubuntu" &> /dev/null
            if [ $? == 0 ]; then
                tmp_cudnn_name1=`eval echo $tmp | awk -F ',' '{print $6}'`
                tmp_cudnn_name2=`eval echo $tmp | awk -F ',' '{print $7}'`
                tmp_cudnn_name3=`eval echo $tmp | awk -F ',' '{print $8}'`

                cudnn_name1=`eval echo $tmp_cudnn_name1 | awk -F ':' '{print $2}'`
                cudnn_name2=`eval echo $tmp_cudnn_name2 | awk -F ':' '{print $2}'`
                cudnn_name3=`eval echo $tmp_cudnn_name3 | awk -F ':' '{print $2}'`
                cudnn_name1=`eval echo $cudnn_name1`
                cudnn_name2=`eval echo $cudnn_name2`
                cudnn_name3=`eval echo $cudnn_name3`
                if [ -z "$cudnn_name2" ] || [ -z "$cudnn_name3" ]; then
                    continue
                fi
                if [ $gpu_version == $driver_version ] && [ $cuda_version == $tmp_cuda_version ] && [ $cudnn_version1 == $tmp_cudnn_version ]; then
                    echo "install driver, cuda and cudnn, goto install $driver_name $cuda_name $cudnn_name1 $cudnn_name2 $cudnn_name3"
                    rm -f ${INSTALL_CFG}
                    rm -f ${GPUINFO_CFG}
                    $DRIVER_INSTALLER $driver_name
                    $CUDA_INSTALLER $cuda_name
                    $CUDNN_INSTALLER $cudnn_name
                    $CUDNN_INSTALLER $cudnn_name1 $cudnn_name2 $cudnn_name3
                    exit 0
                fi
            else
                tmp_cudnn_name=`eval echo $tmp | awk -F ',' '{print $6}'`
                cudnn_name=`eval echo $tmp_cudnn_name | awk -F ':' '{print $2}'`
                cudnn_name1=`eval echo $cudnn_name`

                if [ $gpu_version == $driver_version ] && [ $cuda_version == $tmp_cuda_version ] && [ $cudnn_version1 == $tmp_cudnn_version ]; then
                    echo "install driver, cuda and cudnn, goto install $driver_name $cuda_name $cudnn_name"
                    rm -f ${INSTALL_CFG}
                    rm -f ${GPUINFO_CFG}
                    $DRIVER_INSTALLER $driver_name
                    $CUDA_INSTALLER $cuda_name
                    $CUDNN_INSTALLER $cudnn_name
                    exit 0
                fi
            fi
        elif [ $gpu_version == $driver_version ] && [ $cuda_version == $tmp_cuda_version ]; then
            echo "install driver and cuda, goto install $driver_name $cuda_name"
            rm -f ${INSTALL_CFG}
            rm -f ${GPUINFO_CFG}
            $DRIVER_INSTALLER $driver_name
            $CUDA_INSTALLER $cuda_name
            exit 0
        fi
    done
}

taco_setup=`awk -F '=' '/taco_setup/{print $2}' $INSTALL_CFG | awk '{gsub(/^\s+|\s+$/, "");print}'`
if [ "$taco_setup"x = "1"x ]; then
    echo "setup taco"
    nohup $TACO_SETUP > /dev/null 2>&1 &
fi

install_driver=`awk -F '=' '/install_driver/{print $2}' $INSTALL_CFG | awk '{gsub(/^\s+|\s+$/, "");print}'`

if [ "$install_driver"x = "1"x ]; then
    driver_version=''
    cuda_version=''
    cudnn_version1=''
    cudnn_version2=''
    cudnn_version3=''

    driver_version=`awk -F '=' '/driver_version/{print $2}' $INSTALL_CFG | awk '{gsub(/^\s+|\s+$/, "");print}'`
    echo "install nvidia driver $driver_version"

    install_fabric_mgr=`awk -F '=' '/install_fabric_manager/{print $2}' $INSTALL_CFG | awk '{gsub(/^\s+|\s+$/, "");print}'`
    echo "install fabric mgr $install_fabric_mgr"

    install_cuda=`awk -F '=' '/install_cuda/{print $2}' $INSTALL_CFG | awk '{gsub(/^\s+|\s+$/, "");print}'`
    if [ "$install_cuda"x = "1"x ]; then
        cuda_version=`awk -F '=' '/cuda_version/{print $2}' $INSTALL_CFG | awk '{gsub(/^\s+|\s+$/, "");print}'`
        echo "install nvidia cuda $cuda_version"

        install_cudnn=`awk -F '=' '/install_cudnn/{print $2}' $INSTALL_CFG | awk '{gsub(/^\s+|\s+$/, "");print}'`
        if [ "$install_cudnn"x = "1"x ]; then
            cudnn_version1=`awk -F '=' '/cudnn_version1/{print $2}' $INSTALL_CFG | awk '{gsub(/^\s+|\s+$/, "");print}'`
            cudnn_version2=`awk -F '=' '/cudnn_version2/{print $2}' $INSTALL_CFG | awk '{gsub(/^\s+|\s+$/, "");print}'`
            cudnn_version3=`awk -F '=' '/cudnn_version3/{print $2}' $INSTALL_CFG | awk '{gsub(/^\s+|\s+$/, "");print}'`
            echo "install nvidia cudnn $cudnn_version1 $cudnn_version2 $cudnn_version3"
        else
            echo "### not install cudnn ###"
        fi
    else
        echo "### not install cuda ###"
    fi

    #check input args and install driver, cuda, cudnn
    echo "start here... $driver_version"
    if [[ $driver_version = *NVIDIA* ]]
    then
        echo "$PROGRESS_BAR" >> $PROFILE
        
        #install driver, cuda, and cudnn with their names
        $DRIVER_INSTALLER $driver_version
        if [ "$install_cuda"x = "1"x ]; then
            $CUDA_INSTALLER $cuda_version
        fi
        if [ "$install_cudnn"x = "1"x ]; then
            $CUDNN_INSTALLER $cudnn_version1 $cudnn_version2 $cudnn_version3
        fi
        if [ "$install_fabric_mgr"x = "1"x ]; then
            wget_file $FABRICMGR_INSTALLER_FILENAME $FABRICMGR_INSTALLER
            [ $? -eq 0 ] && chmod u+x $FABRICMGR_INSTALLER && $FABRICMGR_INSTALLER $driver_version
        fi
        sed -i '/progress_bar/d' ${PROFILE} >/dev/null 2>/dev/null
        rm -f ${INSTALL_CFG}
        rm -f ${GPUINFO_CFG}
    else
        echo "get driver name from gpu_info config file"
        wget_file $GPUINFO_FILENAME $GPUINFO_CFG
        [ $? -eq 0 ] && get_gpuinfo $driver_version $cuda_version $cudnn_version1 $cudnn_version2 $cudnn_version3
    fi

else
    rm -f ${INSTALL_CFG}
    rm -f ${GPUINFO_CFG}
    echo "### not install driver ###"
fi