R

From CC Doc
Jump to: navigation, search
This page is a translated version of the page R and the translation is 100% complete.

Other languages:
English • ‎français

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).

Interpréteur

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

[nom@serveur $] module spider r

Pour charger un module R particulier, utilisez une variante de la commande

[nom@serveur $] module load r/3.3.3

Vous devrez probablement charger aussi gcc.

[name@server $] module load gcc/5.4.0

Dépendant des paquets dont vous avez besoin, vous pourriez devoir installer d'autres modules. Par exemple, rgdal exige que le module gdal soit chargé et gdal exige à son tour nixpkgs et gcc. Par défaut, nixpfks devrait être chargé, mais vérifiez qu'il l'est avec

[name@server $] module list

Si nixpkgs n'est pas listé, chargez-le avec

[name@server $] module load nixpkgs/16.09

Si l'installation d'un paquet échoue, portez attention au message d'erreur qui pourrait indiquer d'autres modules qui seraient nécessaires. Pour savoir s'il y a une dépendance avec un autre module, lancez

[name@server $] module spider gdal/2.2.1

Une fois tous les modules chargés dans votre environnement, démarrez l'interpréteur et entrez le code R dans cet environnement.

[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 :

[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. Comme plusieurs paquets R sont développés avec la famille de compilateurs Gnu, nous recommandons de charger un module gcc avant d'installer un paquet R et d'utiliser la même version de gcc pour tous les paquets.

[name@server $] module load gcc/5.4.0

Par exemple, pour installer le paquet sp qui offre des classes et des méthodes pour les données spatiales, utilisez cette commande sur un nœud de connexion.

[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 :

[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 MPIMessage Passing Interface qui permet d'exécuter R en parallèle.

1. Voyez les modules R disponibles avec la commande

module spider r

2. Sélectionnez une version (par exemple, 3.4.0) 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. Portez attention au message d'erreur s'affiche quand l'installation d'un paquet échoue; il pourrait indiquer d'autres modules qui seraient nécessaires.

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
mpi.close.Rslaves()
mpi.quit()

2. Copiez ce qui suit dans le script job.sh.

#!/bin/bash
#SBATCH --account=def-someacct   # 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

3. Soumettez la tâche.

 sbatch job.sh

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