Anaconda
- Anaconda - кроссплатформенный дистрибутив Python, включающий большое количество дополнительных модулей. Также содержит реализацию языка R. Имеет несколько версий, как коммерческие, так и Open Source. Предлагается для замены Python, идущего в составе операционной системы SUSE Linux Enterprise Server, поскольку официальные репозитории SLES не содержат многие востребованные модули, доступные с помощью Anaconda (например, python-matplotlib, mpi4py).
- https://anaconda.com - сайт разработчиков Anaconda, официальные дистрибутивы и инструкции.
- https://docs.anaconda.com/anaconda/packages/pkg-docs - полный список доступных официальных пакетов от разработчиков Anaconda. Если нужный вам пакет у нас не установлен, обратитесь к администрации комплекса.
- http://anaconda.org - Anaconda Cloud, хостинг сторонних пакетов для Anaconda.
- Пользователи комплекса могут самостоятельно установить Anaconda в свою домашнюю директорию. Но в составе дистрибутива идут далеко не все пакеты, предполагается, что остальные будут скачиваться через интернет, а доступ в интернет с комплекса по умолчанию запрещён. Поэтому ниже описано использование централизованно установленной Anaconda, поддерживаемой администраторами комплекса. Её пользователи не могут самостоятельно устанавливать или обновлять пакеты, даже в созданных для них окружениях (см ниже).
Версии
- Рекомендуемая версия: Anaconda3 2020.11 с последующими обновлениями (по состоянию на сентябрь 2024г. это версия 2024.06). Для её использования необходимо предварительно настроить переменные окружения, выполнив команду:
source /opt/shared/anaconda/anaconda3-2020/bin/activate
- Лучше выполнять эту команду из скрипта для qsub, это позволит разным задачам иметь разные значения переменных окружения.
- При написании скриптов на Python учитывайте, что для использования Anaconda интерпретатором должен указываться не системный '/usr/bin/python', а '/opt/shared/anaconda/anaconda3-2020/bin/python'
- Также сохранены более ранние версии: Anaconda2 на Python 2.7 и Anaconda3 на Python 3.5. Для них настройка переменных окружения выполняется следующим образом:
- для Anaconda2:
export PATH=/opt/shared/anaconda/anaconda2/bin:$PATH
- для Anaconda3:
export PATH=/opt/shared/anaconda/anaconda3/bin:$PATH
Environment
- Anaconda позволяет иметь несколько независимых конфигураций установленных пакетов, называемых 'Environment' ('окружение'). У нас они используются для установки определённого ПО для конкретного пользователя.
- Для использования окружения с именем 'test_env' необходимо после предварительной настройки переменных окружения дополнительно выполнить команду следующего вида:
source activate test_env
После выполнения этой команды изменится приглашение к вводу команд, оно будет отображать название текущего окружения:
(test_env) clu:~ #
- Для выхода из окружения нужно выполнить:
source deactivate
mpi4py
- mpi4py - пакет для использования стандарта MPI из программ на языке Python.
- mpi4py из состава Anaconda использует реализацию MPI, также идущую в составе Anaconda - MPICH.
- При работе с Anaconda реализация MPI, выбранная утилитой 'mpi-selector', не используется. Чтобы отключить настройку переменных окружения для неё, выполните на интерфейсном сервере:
mpi-selector --unset
Затем разорвите SSH-соединение с интерфейсным сервером и подключитесь заново.
- Ниже приведён пример работы с mpi4py.
- Создайте файл 'submit.sh' такого вида:
#!/bin/bash #PBS -l select=3:ncpus=2:mpiprocs=2:mem=1gb,place=scatter #PBS -l walltime=0:01:00 cd $PBS_O_WORKDIR source /opt/shared/anaconda/anaconda3-2020/bin/activate echo -n 'mpiexec = ' which mpiexec echo MPI_NP=$(wc -l $PBS_NODEFILE | awk '{ print $1 }') mpiexec -hostfile $PBS_NODEFILE -np $MPI_NP $PBS_O_WORKDIR/mpitest.py
- Создайте файл 'mpitest.py', в котором в качестве интерпретатора Python укажите реализацию из состава Anacoda:
#!/opt/shared/anaconda/anaconda3-2020/bin/python from mpi4py import MPI as mpi import socket comm_world = mpi.COMM_WORLD r = comm_world.Get_rank() s = comm_world.Get_size() str='mpi proc '+str(r)+' of '+str(s)+' run on '+socket.gethostname() print(str)
- Разрешите исполнение этого файла:
chmod u+x mpitest.py
- Поставьте задачу в очередь:
qsub submit.sh
- После завершения задачи в лог-файле с потоком стандартного вывода будет примерно следующее:
mpiexec = /opt/shared/anaconda/anaconda3-2020/bin/mpiexec mpi proc 1 of 6 run on cn243 mpi proc 0 of 6 run on cn243 mpi proc 3 of 6 run on cn204 mpi proc 5 of 6 run on cn205 mpi proc 2 of 6 run on cn204 mpi proc 4 of 6 run on cn205