Passer à parApply
Pour exécuter du code en parallèle avec le package parallel, le flux de travail de base comporte trois étapes.
- Créer un cluster avec
makeCluster(). - Effectuer un traitement.
- Arrêter le cluster avec
stopCluster().
La façon la plus simple de créer un cluster est de passer un nombre à makeCluster(). Cela crée un cluster de type par défaut, et exécute le code sur ce nombre de cœurs.
L’objet dd est un data frame avec 10 colonnes et 100 lignes. Le code suivant utilise apply() pour calculer les médianes des colonnes :
apply(dd, 2, median)
Pour exécuter cela en parallèle, remplacez apply() par parApply(). Les arguments de cette fonction sont les mêmes, sauf qu’elle prend un argument cluster avant les arguments habituels de apply().
Cet exercice fait partie du cours
Écrire du code R efficace
Instructions
- Utilisez la fonction
detectCores()pour afficher dans la console le nombre de cœurs disponibles. - Créez un cluster avec
makeCluster(); définissez le nombre de cœurs utilisés à 2. Enregistrez le résultat danscl. - Réécrivez la fonction
apply()ci‑dessus avecparApply(). N’oubliez pas : le premier argument doit maintenant être l’objet cluster,cl. - Arrêtez le cluster avec
stopCluster().
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Determine the number of available cores
___
# Create a cluster via makeCluster
cl <- makeCluster(___)
# Parallelize this code
apply(dd, 2, median)
# Stop the cluster
stopCluster(cl)