wiki:R

Version 2 (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 dos ficheros:

  • enviaR.pbs.e756142: este fichero lo genera el enviamatlab y será el que arranque matlab y ejecute el script.m. El final del nombre es la fecha de ejecución.
  • ./pruebaR.${PBS_JOBID}.log: en este fichero se recoge la salida por pantalla de R.

Al final de la ejecución del script.R se genera un nuevo fichero 'enviaR.pbs.o756142', donde el número indica el identificador del job ejecutado.

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:

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.