Hay varias posibilidades para correr programas python en DIRAC

Usar python de la distribución OpenHPC

En este caso se utiliza la versión y módulos que vienen con la distribución de OpenHPC instalada en los nodos de cómputo, actualmente OHPC 1.3.5 . Esta versión proporciona los interpretes python2.7 (python 2.7.5) y python3.4 (python 3.4.10). Además de los interpretes, hay disponibles preinstalados para todos los usuarios los módulos python scipy, numpy y mpi4py, tanto para python 2 como python 3. Los mismos se distinguen porque empiezan con py2- o py3- segun corresponda., como se observan al ejecutar module avail py2

[ohpc-test@dirac ~]$ module avail py2-

----------------------------------------------- /opt/ohpc/pub/moduledeps/gnu7-openmpi3 -----------------------------------------------
   py2-mpi4py/3.0.0    py2-scipy/1.1.0

--------------------------------------------------- /opt/ohpc/pub/moduledeps/gnu7 ----------------------------------------------------
   py2-numpy/1.14.3

Así, para utilizar esta posibilidad se debe crear un archivo de job que tenga el siguiente contenido

#!/bin/bash
# Put your SLURM options here
#SBATCH --mail-type=END,FAIL
#SBATCH --time=2-00:00:00           # put proper time of reservation here
#SBATCH --nodes=1                 # number of nodes
#SBATCH --ntasks-per-node=1       # tasks per node
#SBATCH -c 16 # allocated CPU threads 
#SBATCH --mem=12G               # memory resource
#SBATCH --job-name=""    # change to your job name
#SBATCH --ntasks=1
# ? Any other batch options ?

module load py3-scipy  

#el programa codigo.py utiliza scipy
srun python3.4 codigo.py

La distribución base Centos7 también ofrece la version python3.6, para lo cual también están disponibles numpy, scipy y mpi4py , cargando los módulos py36-numpy, py36-scipy y py36-mpi4py, respectivamente.

Para versiones más recientes de python o para paquetes más específicos se recomienda las opciones que siguen:

Usar python de la distribución ''Anaconda'' instalada

Esta es la opción recomendada en la mayoría de los casos, ya que Anaconda viene con muchos más módulos preinstalados. Hay varias versiones disponibles en DIRAC, nuevamente ejecutando module avail Anaconda podemos verlas,

[ohpc-test@dirac ~]$ module avail Anaconda

--------------------------------------------------- /opt/ohpc/pub/apps/modules/all ---------------------------------------------------
   Anaconda2/5.1.0    Anaconda3/5.1.0    Anaconda3/5.3.0 (D)    Anaconda3/5.3.1    Anaconda3/2019.10

  Where:
   D:  Default Module

Y podemos seleccionar una para el uso ejecutando module load Anaconda3 (tomará la default) o la versión específica module load Anaconda3/2019.10. En este caso, una vez cargado el modulo Anaconda2 o Anaconda3 correspondiente estaremos trabajando en python 2 o python 3 . Si necesitamos saber la versión exacta de python podemos ejecutar

[ohpc-test@dirac ~]$ module load Anaconda2
[ohpc-test@dirac ~]$ python --version
Python 2.7.14 :: Anaconda, Inc.
[ohpc-test@dirac ~]$ module load Anaconda3
[ohpc-test@dirac ~]$ python --version
Python 3.7.3

Entonces, para correr un job en el cluster basta con cargar el Anaconda y usar el interprete python a secas, estos cambios se deben realizar dentro del archivo de job.

Personalización del entorno y paquetes

Si bien la distribución Anaconda y los paquetes de OHPC proveen muchos módulos python, es frecuente que el usuario necesite instalar alguna otra versión o algún otro módulo. En este caso hay varias opciones:

* La opción más sencilla es utilizar el comando pip pagregando la opción –user para instalar un paquete en el espacio de usuario. Por ejemplo si quisiera instalar el paquete fantastico que no viene preinstalado, bastaría con ejecutar.

pip install fantastico --user

* Crear un entorno separado con virtualenv y pip. El comando virtualenv nos permite generar entornos separados que no modifique ni conflictue con la instalación general ni con otros entornos, y dentro del cual se pueden instalar las versiones deseadas de paquetes utilizando el comando pip.

* Crear un entorno separado utilizando conda. De manera similar a virtualenv, conda permite crear y aislar un entorno de trabajo. En este caso uno primero se define el entorno, luego se activa.

module load Anaconda3
conda create  --name miEntorno python37
conda activate miEntorno 

Luego de creado el entorno, puedo instalar los paquetes/versiones particulares que necesite,

conda install fantastico

Tener en cuenta que en todos estos casos la instalación del paquete se realiza en el espacio del usuario y que si uno quiere agregar algún paquete sobre Anaconda, lo recomendable es cargar primero el módulo correspondiente con module load Anaconda3 o la versión que corresponda.