Passer à parApply
Pour exécuter du code en parallèle avec le paquet parallel, le flux de travail de base comporte trois étapes.
- Créer un grappe avec
makeCluster(). - Faire le travail.
- Arrêter le grappe avec
stopCluster().
La façon la plus simple de créer un grappe est de passer un nombre à makeCluster(). Cela crée un grappe du type par défaut et exécute le code sur ce nombre de cœurs.
L'objet dd est une trame de données de 10 colonnes et 100 lignes. Le code suivant utilise apply() pour calculer les médianes par colonne :
apply(dd, 2, median)
Pour exécuter ceci en parallèle, remplacez apply() par parApply(). Les arguments de cette fonction sont les mêmes, sauf qu'elle prend un grappe en argument avant les arguments habituels de apply().
Cette activité fait partie du cours
Écrire du code R efficace
Instructions de l’exercice
- Utilisez la fonction
detectCores()pour afficher dans la console le nombre de cœurs disponibles. - Créez un grappe avec
makeCluster(); fixez le nombre de cœurs utilisés à 2. Enregistrez le résultat danscl. - Réécrivez la fonction
apply()ci‑dessus enparApply(). Rappelez‑vous que le premier argument doit maintenant être l'objet grappe,cl. - Arrêtez le grappe avec
stopCluster().
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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)