wiki:R

Version 3 (modified by gutierjm, 4 years ago) (diff)

--

El acceso al cluster se realiza por ssh a ui.macc.unican.es y los trabajos en R hay que lanzarlos utilizando el comando en la terminal qsub rutadelfichero.pbs, que se encarga de mandar el trabajo a la cola especificada. Un ejemplo de como logearnos y mandar un script de R sería el siguiente:

ssh bmedina@ui.macc.unican.es
bmedina@ui.macc.unican.es's password: 
Last login: Tue Jan 16 09:45:53 2018 from ifcapc2.ifca.unican.es
[bmedina@ui ~]$ qsub /oceano/gmeteo/WORK/bmedina/enviaR.pbs
756142.encina

En este caso el script ya estaría enviado con el ID 756142.encina. El archivo enviaR.qsub contiene información como: a qué cola enviar el script, la ruta del script, el número de nodos... Concretamente la pinta que tiene se puede ver abajo:

#!/bin/bash
### Job name
###PBS -N cfs:region
### Max run time
###PBS -l walltime=72:00:00
### Queue name
#PBS -q bamd
### Number of nodes and processors per node
#PBS -l nodes=1:ppn=1
#PBS -l mem=2Gb
#PBS -M bmedina@ifca.unican.es
#PBS -m bea
###PBS -W 506119

WORKDIR=/oceano/gmeteo/WORK/bmedina/
cd $WORKDIR

R -f ./pruebaR.R >& ./pruebaR.${PBS_JOBID}.log

En este caso el script de R que mando se llama pruebaR.R que está situado en el directorio WORKDIR = /oceano/gmeteo/WORK/bmedina/. Parámetros como -q, -l mem=2Gb o -M sirven para especificar la cola a la que se manda el script o la memoria requerida o la cuenta de correo asociada al script, respectivamente.

De este modo, se generarán en la carpeta tres ficheros:

  • enviaR.pbs.e756142: un fichero que contiene los errores del sistema.
  • pruebaR.756142.log: en este fichero se recoge la salida por pantalla de R.
  • enviaR.pbs.o756142: un fichero que contiene los outputs del sistema.

Hay que tener en cuenta que dentro del script.R probablemente llamemos a librerías que no estén precargadas por defecto en la versión de R del cluster. En ese caso tenemos que previamente haberlas instalado en un directorio personal y para cargarlas dirigir a R hacia ese directorio personal. Para ilustrar esta situación voy a iniciar una sesión interactiva de R. Para iniciar una sesión interactiva introducimos el siguiente comando:

[bmedina@ui ~]$ qsub -I -q bamd
qsub: waiting for job 756144.encina to start
qsub: job 756144.encina ready
[bmedina@wn037 ~]$ R

Ahora que ya estoy en R en modo interactivo, puedo instalar y cargar librerías nuevas en mi directorio personal:

install.packages(“glmnet”, lib = “/vols/abedul/meteo/bmedina/R/mylibs”)
library(“glmnet”, lib.loc = “/vols/abedul/meteo/bmedina/R/mylibs”)

En este caso estoy instalando el paquete "glmnet". De esta manera en nuestro script de R, cada vez que llamemos a una librería que hemos instalado en nuestro directorio personal habrá que introducir el comando anterior.

En nuestro caso podemos querer instalar las librerías transformeR, loadeR, downscaleR o visualizeR que están en github. Para ello primero hay que instalar el paquete devtools (en caso de que no esté previaente instalado en el R del cluster):

install.packages(“devtools”, lib = “/vols/abedul/meteo/bmedina/R/mylibs”)
library(“devtools”, lib.loc = “/vols/abedul/meteo/bmedina/R/mylibs”)

Una vez que está cargado devtools utilizar el siguiente comando para descargar transformeR (aunque el mismo procedimiento seguiría para instalar el resto de paquetes de climate4R)

withr::with_libpaths(new = "~/R/myRlibs", devtools::install_github("SantanderMetGroup/transformeR"))

En el caso de querer un transformeR de una rama que no sea MASTER habría que especificarlo de la siguiente manera:

withr::with_libpaths(new = "~/R/myRlibs", devtools::install_github("SantanderMetGroup/transformeR@jorge-devel"))

De esta manera, el transformeR que se está instalando es el que se encuentra en la rama de transformeR que se llama jorge-devel.

Observaciones

En este apartado podéis escribir las observaciones, dificultades o aclaraciones que encontréis o creáis necesarias a la hora de usar el cluster.