R

Revision as of 17:08, 7 December 2017 by Diane27 (talk | contribs)
Other languages:

R est un outil de calcul statistique et de graphiques. Il s'agit d'un langage de programmation additionné d'un environnement graphique, d'un débogueur, de l'accès à certaines fonctions de système et de la possibilité d'exécuter des scripts.

Même si R n'a pas été développé pour le calcul de haute performance, sa popularité au sein de plusieurs disciplines scientifiques incluant l'ingénierie, les mathématiques, la statistique et la bioinformatique, en fait un outil essentiel sur les supercalculateurs dédiés à la recherche académique. Certaines fonctionnalités étant écrites en C, compilées et parallélisées par fils d'exécution, permettent d'atteindre des performances raisonnables sur un seul nœud de calcul. Grâce à la nature modulaire de R, les utilisateurs peuvent personnaliser leur configuration en installant des paquets dans leur répertoire personnel à partir du Comprehensive R Archive Network (CRAN).

L'interpréteur R

Chargez d'abord un module R. Comme plusieurs versions seront probablement disponibles, consultez la liste en lançant la commande

Question.png
[nom@serveur ~]$ module spider r

Pour charger un module R particulier, lancez la commande

Question.png
[nom@serveur ~]$ module load r/3.3.3

Lorsque R est chargé dans votre environnement, vous pouvez démarrer l'interpréteur R et exécuter du code R dans cet environnement :

Question.png
[name@server ~]$ R
R version 3.3.3 (2017-03-06) -- "Another Canoe"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> values <- c(3,5,7,9)
> values[0]
[1] 3
> q()

Pour exécuter des scripts R, utilisez la commande Rscript suivie du fichier contenant les commandes R :

Question.png
[nom@serveur ~]$ Rscript computation.R

Cette commande passera automatiquement les options appropriées pour un traitement en lot, soit ‑‑slave et ‑‑no‑restore à l'interpréteur R. Ces options empêcheront la création de fichiers d'espace de travail inutiles avec ‑‑no‑save lors d'un traitement en lot.

Installer des paquets R

Pour installer des paquets du répertoire CRAN, vous pouvez utiliser la commande install.packages à l'intérieur de R. Par exemple, pour installer le paquet sp pour des données spatiales, exécutez sur le nœud frontal (login node) la commande

Question.png
[nom@serveur ~]$ R

Lorsque R vous le demandera, sélectionnez un miroir pour le téléchargement. Idéalement, ce miroir sera géographiquement proche de la grappe que vous utilisez.

Avant l'installation, certains paquets requièrent la définition de la variable d'environnement TMPDIR. D'autres paquets fonctionneront avec un compilateur Gnu C et/ou C++ plutôt qu'avec un compilateur de type Intel. Il est donc préférable de charger d'abord un des modules gcc avant de lancer R.

Si vous cherchez à installer un paquet que vous avez téléchargé, supposons que l'archive se nomme paquet_archive.tgz (utile pour un paquet qui n'appartient pas au domaine CRAN), entrez la commande suivante dans votre interpréteur de commandes :

Question.png
[nom@serveur ~]$ R CMD INSTALL -l 'chemin pour votre bibliothèque locale (personnelle) R' paquet_archive.tgz

Rmpi

Installation

La procédure suivante installe Rmpi, une interface (wrapper) pour les routines MPI qui permet d'exécuter R en parallèle.


1. Consultez les modules R disponibles avec

 module spider r

2. Sélectionnez la dernière version (novembre 2017) et chargez le module OpenMPI approprié.

 module load r/3.4.0
 module load openmpi/1.10.7

3. Téléchargez la dernière version de R en remplaçant le numéro de la version selon le cas.

wget https://cran.r-project.org/src/contrib/Rmpi_0.6-6.tar.gz

4. Indiquez le répertoire dans lequel vous voulez copier les fichiers; vous devez avoir une permission d'écriture pour ce répertoire. Le nom du répertoire peut être modifié.

 mkdir -p ~/local/R_libs/
 export R_LIBS=~/local/R_libs/

5. Lancez la commande d'installation.

R CMD INSTALL --configure-args="--with-Rmpi-include=$EBROOTOPENMPI/include   --with-Rmpi-libpath=$EBROOTOPENMPI/lib --with-Rmpi-type='OPENMPI' " Rmpi_0.6-6.tar.gz

Cette procédure utilise la version 1.10.7 qui est nécessaire pour bien démarrer les processus. Notez que le module par défaut (2.1.1) ne fonctionne pas bien présentement.

Exécution

  1. Placez le code R dans un fichier script, ici le fichier test.R.
 #Tell all slaves to return a message identifying themselves.
  library("Rmpi")
  sprintf("TEST mpi.universe.size() =  %i", mpi.universe.size())
  ns <- mpi.universe.size() - 1
  sprintf("TEST attempt to spawn %i slaves", ns)
  mpi.spawn.Rslaves(nslaves=ns)
  mpi.remote.exec(paste("I am",mpi.comm.rank(),"of",mpi.comm.size()))
  mpi.remote.exec(paste(mpi.comm.get.parent()))
  #Send execution commands to the slaves
  x<-5
  #These would all be pretty correlated one would think
  x<-mpi.remote.exec(rnorm,x)
  length(x)
  x
  1. Copiez ce qui suit dans le script job.sh.
 #!/bin/bash
 #SBATCH --account=def-ppomorsk # replace this with your own account
 #SBATCH --ntasks=5               # number of MPI processes
 #SBATCH --mem-per-cpu=2048M      # memory; default unit is megabytes
 #SBATCH --time=0-00:15           # time (DD-HH:MM)
 module load r/3.4.0
 module load openmpi/1.10.7
 export R_LIBS=~/local/R_libs/
 mpirun -np 1 R CMD BATCH test.R test.txt
  1. Soumettez la tâche.
 sbatch job.sh

Pour plus d'information sur comment soumettre des tâches, consultez Exécuter des tâches.