<> <> == Clustertalca: == === Características: === ||Nombre ||Clustertalca3 (GPU) || ||Marca ||Supermicro || ||Modelo ||SSG-6048R-E1CR24N || ||Nodos ||9 (8 esclavos y 1 cabecera) || ||Procesadores disponibles ||256 || ||GPU por nodo ||2 * 16 Tesla K80 y 6 * 8 Geforce GTX 1080 Ti || ||Total GPU ||80 || ||Procesadores por nodo disponibles ||32 || ||Disco Total (headnode) ||30 TB || ||Memoria distriuida Total (nodos) ||1 TB || ||Red ||56 Gb/sec (4X FDR) || ||Red ||Ethernet 1 Gbps || ||IP ||10.1.1.103 || ||Nodos Master (s) ||1 || ||Nodos Esclavos ||8 || ||Nodos totales ||9 || ||Sistema Operativo ||CentOS Linux release 7.5 || ==== Nodos disponibles ==== ||Nodos ||1 - 6 || ||hostname ||node001, node002, node003, node004, node005, node006 || ||Procesadores por nodo ||2 x 16 || ||CPU ||Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz || ||Memoria por nodo ||128 GB || ||Disco Duro ||1 TB SATA 3.1, 6.0 Gb/s 7200 RPM || ||GPU ||8 x NVIDIA Corporation GP102 GeForce GTX 1080 Ti (rev a1) || ||Nodos ||7 - 8 || ||hostname ||node007, node008 || ||Procesadores por nodo ||2 x 16 || ||CPU ||Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz || ||Memoria por nodo ||128 GB || ||Disco Duro ||1 TB SATA 3.1, 6.0 Gb/s 7200 RPM || ||GPU ||16 x NVIDIA Corporation GK210GL [Tesla K80] (rev a1) || <> === Software === El equipo tiene un sistema de colas llamado [[https://es.wikipedia.org/wiki/Simple_Linux_Utility_for_Resource_Management|SLURM]] que cumple la labor de organizar, priorizar los trabajos enviados por los usuarios. El listado completo de aplicaciones que existen en el cluster lo puede encontrar en el siguiente directorio: '''/cm/shared/apps''' En el caso de requerir una versión en particular puede instalar en su espacio personal y cambiar las variables de entorno del sistema para que sea visualizada la aplicación y sus dependencias {{{ export PATH=NEW_PATH:$PATH export LD_LIBRARY_PATH=NEW_LIBRARY_PATH:$LD_LIBRARY_PATH }}} En donde: * NEW_PATH es la ubicación de los binarios o ejecutables de la aplicación instalada * LD_LIBRARY_PATH son las librerías para que los binarios o ejecutable puedan arrancar Esto también lo debe conocer SLURM, por lo que se debe agregar al script a ejecutar. ==== Namd ==== La versión instalada es 2.13y 2.14 y están ubicadas en su propio directorio en la ruta de: /cm/shared/apps/NAMD/ Existen las variantes de NAMD para uso de solo GPU, GPU + Infiniband y CPU + Infiniband. ===== Archivo SLURM NAMD utilizando NAMD 2.13 ===== {{{#!Bash #!/bin/sh #SBATCH --job-name namd #SBATCH -o slurm-gpu-job.out #SBATCH -p defq #SBATCH --gres=gpu:2 #SBATCH --ntasks=12 #SBATCH --time 36:00:00 #SBATCH --error=error.log #SBATCH --output=output # choose version of NAMD to use # VERSION=2.13 NAMD_DIR=/cm/shared/apps/NAMD/2.13/CUDA # execute ################################################################## #CONFIG: change this jobcfg= jobout= #END CONFIG ################################################################## ${NAMD_DIR}/namd2 +idlepoll +p $SLURM_NTASKS ${jobcfg} +isomalloc_sync >& ${jobout} wait }}} [[attachment:slurm-namd.sh|Descarga el archivo]] [[https://www.ks.uiuc.edu/Research/namd/2.13/ug/node106.html|Información NAMD GPU]] ===== Importante ===== Fijarse en las lineas del archivo slurmnamd.sh {{{ #SBATCH --ntasks=32 }}} Esta indica la cantidad de procesadores a utilizar, en este caso se utilizarán 32 procesadores {{{ #SBATCH --gres=gpu:2 }}} Con está linea indica la cantidad de GPU a utilizar, para el caso serían 2 {{{ #SBATCH --time 36:00:00 }}} Esta linea indica el tiempo total de ejecución (horas, minutos, segundos) para este caso el tiempo máximo de ejecución es de 36 horas. {{{ jobcfg= jobout= }}} La entrada y la salida del trabajo a realizar {{{ NAMD_DIR=/cm/share/apps/NAMD/2.13/CUDA }}} Esta linea indica la versión de NAMD a utilizar, en este caso seria la 2.13. Otras opciones para utilizar: * /cm/share/apps/NAMD/2.13/CUDA-ib -> CUDA + Infiniband * /cm/share/apps/NAMD/2.13/CPU-ib -> NAMD sólo CPU + Infiniband {{{ #SBATCH -w node001 }}} En caso de necesitar distribuir un trabajo en un nodo en particular, agregar la linea anterior en donde node001 referencia al nodo1. Los nodos disponibles van desde node00[1-8] ===== La ejecución ===== Una vez editado el archivo slurmnamd.sh procedemos a ejecutar utilizando el comando sbatch {{{ sbatch slurmnamd.sh }}} Y podemos hacer el seguimiento utilizando el comando squeue {{{ squeue }}} ==== Desmond Schrodinger ==== Se encuentra instalado la versión 2018.1 y 2019.1 en el directorio /cm/shared/apps/desmond/ ===== Ejecutar ===== Primero y muy importante para la ejecución es exportar la variable de entorno SCHRODINGER para la sesión: {{{ export SCHRODINGER=/cm/shared/apps/desmond/ }}} en donde "version" será la versión a ejecutar. El siguiente paso es pasar la linea que se obtiene del archivo cfg (se genera al crear las condiciones de la simulación) y adaptarlo al cluster {{{ $SCHRODINGER/utilities/multisim -JOBNAME -HOST bright81 -maxjob 0 -cpu -m -c -o .cms .cms -mode umbrella -set 'stage[1].set_family.md.jlaunch_opt=["-gpu"]' -ATTACHED }}} En donde: * nombre_trabajo refiere al nombre que usaremos para identificar en PBS * total_cpu es el total de CPU para el trabajo, puede ser del modo "4 4 4" (simplemente explicado como 4x4x4=64) o del modo "64". * entrada.msj, archivo_configuracion.cfg salida.cms, archivo-cms, son todos archivos necesarios de SCHRODINGER Desmond. * El -mode umbrella es muy importante, puesto a que este parámetro le dice a la aplicación se que ejecutará en modo paralelo. * -set 'stage[1].set_family.md.jlaunch_opt=["-gpu"]' permite el uso de GPU. Importante es saber que Schrodinger desmond solo permite el uso de una GPU. Ejecutado la linea anterior podemos hacer el seguimiento utilizando el comando squeue {{{ squeue }}} ==== Amber ==== Se encuentra instalado la versión 16 y 20 de Amber ===== Ejecutar Amber 20 ===== Para poder ejecutar de un modo correcto Amber se recomienda realizarlo mediante el siguiente script GPU {{{#!Bash #!/bin/bash #SBATCH --output=sout.%j #SBATCH --error=error.%j #SBATCH --time=504:00:00 #SBATCH -n 16 #SBATCH --gres=gpu:1 # unload default modules unset AMBERHOME module purge > /dev/null 2>&1 # load modules module load amber/20 module load cuda10.0/toolkit/10.0.130 module load gcc/6.5.0 # RUN GPU $AMBERHOME/bin/pmemd.cuda -O -i mdin.GPU -o mdout -p ../Topologies/Cellulose.prmtop -c ../Coordinates/Cellulose.inpcrd }}} El script anterior está preparado para correr con 16 CPU y 1 GPU, si se desea cambiar la configurar de CPU se debe editar el parámetro de -n (#SBATCH -n 16) por el número deseado. El número de GPU siempre será 1. MULTI-GPU {{{#!Bash #!/bin/bash #SBATCH --output=sout.%j #SBATCH --error=error.%j #SBATCH --time=504:00:00 #SBATCH -n 16 #SBATCH --gres=gpu:2 # unload default modules unset AMBERHOME module purge > /dev/null 2>&1 # load modules module load amber/20 module load cuda10.0/toolkit/10.0.130 module load gcc/6.5.0 N_GPU=`echo ${SLURM_JOB_GPUS//,}|awk -F, '{print length}'` echo $N_GPU # RUN GPU srun -n $N_GPU $AMBERHOME/bin/pmemd.cuda -O -i mdin.GPU -o mdout -p ../Topologies/Cellulose.prmtop -c ../Coordinates/Cellulose.inpcrd }}} El script anterior está preparado para correr con 16 CPU y 2 GPU, si se desea cambiar la configurar de CPU se debe editar el parámetro de -n (#SBATCH -n 16) por el número deseado. Para utilizar multiple GPU debe editar el parámetro de #SBATCH --gres=gpu:2 en donde el número 2 debe ser reemplazado por el número deseado y en la instrucción de srun -n indicará el número de GPU a utilizar. CPU {{{#!Bash #!/bin/bash #SBATCH --output=sout.%j #SBATCH --error=error.%j #SBATCH --time=504:00:00 #SBATCH -n 16 #SBATCH --gres=gpu:1 # unload default modules unset AMBERHOME module purge > /dev/null 2>&1 # load modules module load amber/20 module load cuda10.0/toolkit/10.0.130 module load gcc/6.5.0 # RUN CPU mpirun $AMBERHOME/bin/pmemd.MPI -O -i mdin.CPU -o mdout -p ../Topologies/Cellulose.prmtop -c ../Coordinates/Cellulose.inpcrd }}} El script anterior está preparado para correr con 16 CPU, si se desea cambiar la configurar de CPU se debe editar el parámetro de -n (#SBATCH -n 16) por el número deseado. ===== Ejecutar Amber 16 ===== Para poder ejecutar de un modo correcto Amber se recomienda realizarlo mediante el siguiente script GPU {{{#!Bash #!/bin/bash #SBATCH --output=sout.%j #SBATCH --error=error.%j #SBATCH --time=504:00:00 #SBATCH -n 16 #SBATCH --gres=gpu:1 # load modules # RUN GPU $AMBERHOME/bin/pmemd.cuda -O -i mdin.GPU -o mdout -p ../Topologies/Cellulose.prmtop -c ../Coordinates/Cellulose.inpcrd }}} El script anterior está preparado para correr con 16 CPU y 1 GPU, si se desea cambiar la configurar de CPU se debe editar el parámetro de -n (#SBATCH -n 16) por el número deseado. El número de GPU siempre será 1. CPU {{{#!Bash #!/bin/bash #SBATCH --output=sout.%j #SBATCH --error=error.%j #SBATCH --time=504:00:00 #SBATCH -n 16 #SBATCH --gres=gpu:1 # RUN CPU mpirun $AMBERHOME/bin/pmemd.MPI -O -i mdin.CPU -o mdout -p ../Topologies/Cellulose.prmtop -c ../Coordinates/Cellulose.inpcrd }}} El script anterior está preparado para correr con 16 CPU, si se desea cambiar la configurar de CPU se debe editar el parámetro de -n (#SBATCH -n 16) por el número deseado. '''Referencia:''' https://www.nvidia.com/es-la/data-center/gpu-accelerated-applications/amber/