Je cherche à faire un graphique en vidéos avec gganimate.
Mes graphiques sont très nombreux > 100 000.
Du coup j'aurais voulu profiter des 15 coeurs disponibles de mon processeurs.
J'ai installé cette version de gganimate : https://github.com/HenrikBengtsson/gganimate/tree/feature/parallel-animate
Trouvé via cette pull request : https://github.com/thomasp85/gganimate/pull/403
Et cette intervention stack overflow : https://stackoverflow.com/questions/67321487/how-to-use-multiple-cores-to-make-gganimate-faster
Cependant je ne vois pas de différence d'usage des proc.
Du coup ma question est comment peut on faire tourner du code R en multicoeur ?
merci
Si cela peut aider voici un test :
Code : Tout sélectionner
future::plan("sequential") ## default
t0 <- system.time(data_gx %>%
group_by(RFID) %>%
left_join(., x_id) %>%
mutate(event = case_when(nature == "Intellicage" ~ val_xIC[x_id],
nature == "Main" ~ val_xMn[x_id],
> t0 <- system.time(data_gx %>%
+ group_by(RFID) %>%
+ left_join(., x_id) %>%
+ mutate(event = case_when(nature == "Intellicage" ~ val_xIC[x_id],
+ nature == "Main" ~ val_xMn[x_id],
+ nature == "Wheels" ~ val_xRw[x_id]),
+ date_hm = format(date_event, "%F %H:%M"),
+ date_h = format(date_event, "%F %H"),
+ date_j = format(date_event, "%Y-%m-%d"),
+ ytraitement = case_when(traitement == "coc" ~ 0.3,
+ traitement == "sal" ~ 0.8))
+ )
future::plan("multicore", workers = 4L)
t1 <- system.time(data_gx %>%
group_by(RFID) %>%
left_join(., x_id) %>%
mutate(event = case_when(nature == "Intellicage" ~ val_xIC[x_id],
nature == "Main" ~ val_xMn[x_id],
nature == "Wheels" ~ val_xRw[x_id]),
date_hm = format(date_event, "%F %H:%M"),
date_h = format(date_event, "%F %H"),
date_j = format(date_event, "%Y-%m-%d"),
ytraitement = case_when(traitement == "coc" ~ 0.3,
traitement == "sal" ~ 0.8))
)
Joining, by = "RFID"
>
> future::plan("multicore", workers = 4L)
> t1 <- system.time(data_gx %>%
+ group_by(RFID) %>%
+ left_join(., x_id) %>%
+ mutate(event = case_when(nature == "Intellicage" ~ val_xIC[x_id],
+ nature == "Main" ~ val_xMn[x_id],
+ nature == "Wheels" ~ val_xRw[x_id]),
+ date_hm = format(date_event, "%F %H:%M"),
+ date_h = format(date_event, "%F %H"),
+ date_j = format(date_event, "%Y-%m-%d"),
+ ytraitement = case_when(traitement == "coc" ~ 0.3,
+ traitement == "sal" ~ 0.8))
+ )
Joining, by = "RFID"
> print(t0 / t1)
utilisateur système écoulé
1.0768970 0.8314108 1.0692858
> length(data_gx)
[1] 8
> nrow(data_gx)
[1] 36518393