wiki:R

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

module load R

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 ~]$ module load R
[bmedina@wn037 ~]$ export R_LIBS_USER=/oceano/gmeteo/users/bmedina/R/mylibs/%v
[bmedina@wn037 ~]$ R

El directorio que especifiquemos mediante la variable de entorno R_LIBS_USER tiene prevalencia sobre las librerías del sistema. Conviene tener definida siempre esta variable (introduciendo el comando anterior en el fichero ~/.bashrc), ya que los usuarios no tienen permiso de escritura en las librerías del sistema. Siempre que vayas a instalar algún paquete, esta variable proporciona un lugar con permisos de escritura donde hacerlo. A la hora de cargar paquetes, R mira primero en este directorio, de forma que si tienes aquí un paquete con el mismo nombre que otro del sistema, cargará el tuyo.

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

install.packages(“glmnet”)
library(“glmnet”)

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 de desarrollo de transformeR, loadeR, downscaleR o visualizeR que están en github. Para ello primero hay que cargar el paquete devtools:

library(“devtools”)

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)

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:

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.

Java_ldpaths

Administration notes

R binaries

R is currently installed by unpacking the rpm binaries corresponding to the CentOS6 version in the cluster, and set manually into /software/meteo/R/3.3.3. Slight modifications to usr/bin/R and usr/lib64/R/bin/R scripts. These scripts now load a R_PREFIX environment variable to set the root installation directory for R.

if test -z "$R_PREFIX"; then
  R_PREFIX=/software/meteo/R/3.3.3
fi
R_HOME_DIR=${R_PREFIX}/usr/lib64/R

R_PREFIX has also been used to replace other absolute installation paths in these scripts from the rpm package.

Package installation problems

A few problems arised when compiling packages for version 3.3.3 installed as shown above. namely:

  • Problems to locate the ICU4C development library in the system, required for the stringi package. We installed this package with the flag:
    install.packages("stringi", configure.args="--disable-cxx11")
    
  • Some packages required g++ >=4.7.2. This was available from Valva's "module load GCC"
  • visualizeR depends on verification > dtw > proxy, and the latter is not supported for R <3.4. An older version was installed from source: https://cran.r-project.org/src/contrib/Archive/proxy/proxy_0.4-16.tar.gz (released: 2016-12-05)
  • The ncdf package was removed from CRAN, but it was supported for R v3.3.3, so I download the latest release from the archive https://cran.r-project.org/src/contrib/Archive/ncdf/ncdf_1.6.9.tar.gz (released: 2015-11-29). ncdf4 is the recommended package to deal with NetCDF, ncdf is left just to avoid breaking old code.
Last modified 3 years ago Last modified on Jun 12, 2018 6:29:16 PM