Skip to content
Snippets Groups Projects
init.sh 1.85 KiB
Newer Older
  • Learn to ignore specific revisions
  • patmjen's avatar
    patmjen committed
    #!/bin/bash
    # Simple init script for Python on DTU HPC
    # Patrick M. Jensen, patmjen@dtu.dk, 2022
    
    # Configuration
    # This is what you should change for your setup
    
    patmjen's avatar
    patmjen committed
    VENV_NAME=venv         # Name of your virtualenv (default: venv)
    VENV_DIR=.             # Where to store your virtualenv (default: current directory)
    
    patmjen's avatar
    patmjen committed
    PYTHON_VERSION=3.11.9  # Python version (default: 3.11.9)
    
    CUDA_VERSION=11.8      # CUDA version (default: 11.8)
    
    patmjen's avatar
    patmjen committed
    
    # Load modules
    
    module load python3/$PYTHON_VERSION
    
    patmjen's avatar
    patmjen committed
    module load $(module avail -o modulepath -t -C "python-${PYTHON_VERSION}" 2>&1 | grep "numpy/")
    module load $(module avail -o modulepath -t -C "python-${PYTHON_VERSION}" 2>&1 | grep "scipy/")
    module load $(module avail -o modulepath -t -C "python-${PYTHON_VERSION}" 2>&1 | grep "matplotlib/")
    module load $(module avail -o modulepath -t -C "python-${PYTHON_VERSION}" 2>&1 | grep "pandas/")
    
    module load cuda/$CUDA_VERSION
    
    patmjen's avatar
    patmjen committed
    CUDNN_MOD=$(module avail -o modulepath -t cudnn 2>&1 | grep "cuda-${CUDA_VERSION}" | sort | tail -n1)
    
    if [ -z "$CUDNN_MOD" ]
    then
        # Could find cuDNN for exact CUDA version, try to find major.X version
        CUDA_VERSION_MAJOR=$(echo $CUDA_VERSION | cut -d. -f1)
        CUDNN_MOD=$(module avail -o modulepath -t cudnn 2>&1 | grep "cuda-${CUDA_VERSION_MAJOR}.X" | sort | tail -n1)
    fi
    
    patmjen's avatar
    patmjen committed
    if [[ ${CUDNN_MOD} ]]
    then
        module load ${CUDNN_MOD}
    fi
    
    # Create virtualenv if needed and activate it
    
    if [ ! -d "${VENV_DIR}/${VENV_NAME}" ]
    
    patmjen's avatar
    patmjen committed
    then
        echo INFO: Did not find virtualenv. Creating...
    
        virtualenv "${VENV_DIR}/${VENV_NAME}"
    
    patmjen's avatar
    patmjen committed
    fi
    
    source "${VENV_DIR}/${VENV_NAME}/bin/activate"
    
    patmjen's avatar
    patmjen committed
    
    
    # Select least used GPU if any are available
    
    patmjen's avatar
    patmjen committed
    if command -v nvidia-smi &> /dev/null
    then
    
        export CUDA_VISIBLE_DEVICES=$(nvidia-smi --query-gpu=memory.used,utilization.gpu,utilization.gpu,index --format=csv,noheader,nounits | sort -V | awk '{print $NF}' | head -n1)
    
    patmjen's avatar
    patmjen committed
        echo CUDA_VISIBLE_DEVICES=${CUDA_VISIBLE_DEVICES}
    fi