clusterDocs/clusterNodes/bashrc.md

4.3 KiB
Raw Blame History

Файл .bashrc

Применение и изменение

Файл bashrc определён в домашней дирректории вашего пользователя, его содержимое можно просмотреть использовав команды:

$ cd
$ nano .bashrc

Если вы вносите изменения в файл .bashrc то, чтобы изменения вступили в силу, требуется перезагрузить конфигурацию:

$ cd
$ source .bashrc

Список команд доступных пользователю благодаря .bashrc

$ gcc
$ g++
$ nvcc
$ conda
$ mpicc
$ mpic++
$ mpicxx
$ icc
$ icpc
$ icx
$ icpx
$ mpiicpx
$ mpiicc

О представленной конфигурации

Представленная конфигурация позволяет пользователю использовать компилятор GNU Compiller Collection версии 11.2, используя команды:

$ gcc и $ g++ для языков C и C++ соответственно

Она описана в модуле #GCC 11.2 INIT, без неё по умолчанию будет использоваться gcc/g++ версии 8.

Команда

$ conda

ановится доступной благодаря модулю #CONDA INIT

По умолчанию OpenMP может не работать без чёткого указания положения библиотеки в модуле #OPENMP INIT

Пользователю доступно использование компилятора Nvidia CUDA:

$ nvcc

ановится доступным благодаря модулю #CUDA INIT

Компиляторы для MPI кода

mpicc и mpic++

ановится доступным благодаря модулю #MPI INIT

Применение высокоскоростной сети infiniBand в MPI становится возможным благодаря строкам

export OMPI_MCA_btl_openib_allow_ib=1
export OMPI_MCA_btl_openib_if_include="mlx4_0:1"

После ввода в консоли команды targetIntel пользователь получает доступ к компиляторам

$ icc
$ icx
$ icpc
$ icpx
$ mpiicx
$ mpiicc

Это работает благодаря модулю #INTEL ICX/ICPX INIT

Базовая конфигурация

Базовая конфигурация файла .bashrc выглядет следующим образом:

# .bashrc


# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific environment
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
then
    PATH="$HOME/.local/bin:$HOME/bin:$PATH"
fi
export PATH


#GCC 11.2 INIT
#Devtoolset-11-gcc#g++ enabler
source /opt/rh/gcc-toolset-11/enable


#CONDA INIT
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/opt/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/opt/miniconda3/etc/profile.d/conda.sh" ]; then
        . "/opt/miniconda3/etc/profile.d/conda.sh"
    else
        export PATH="/opt/miniconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<


#OPENMP INIT
#export LIB_OPENMP="/opt/intel2018/lib/intel64/libiomp5.so"
export LIB_OPENMP="/opt/intel/oneapi/compiler/2023.2.1/linux/compiler/lib/intel64_lin/libiomp5.so"
#for SCREEN correct working with OMP5.so library
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/compiler/lib/intel64_lin/"

#CUDA INIT
export PATH="/opt/cuda/cuda-12.2/bin/:$PATH"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/cuda/cuda12.2/lib64"
export PATH="/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/:$PATH"
export PATH="/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/mpi/bin:$PATH"
export MANPATH="$MANPATH:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/mpi/man"

#MPI INIT
export I_MPI_FABRICS=shm:ofi
#export I_MPI_CC=mpiicc
export UCX_TLS=mm,tcp,self
export OMPI_MCA_btl_openib_allow_ib=1
export OMPI_MCA_btl_openib_if_include="mlx4_0:1"
export PATH="/usr/lib64/openmpi/bin/:$PATH"
export I_MPI_FALLBACK=1

#INTEL ICX/ICPX INIT
alias targetIntel="source /opt/intel/oneapi/setvars.sh intel64 >> /dev/null"