Bonjour,
Je souhaiterais utiliser la parallélisation des calculs pour certaines parties de mon script exécuté sur une session interactive Rstudio via Ondemand. Pour cela j'utilise les packages "foreach" et "DoParallel". Savez-vous s'il faut privilégier certains paramètres compte tenu de l'environnement et des ressources propres à la session interactive? En particulier le type de cluster à constituer (de type "FORK" ou "PSOCK")? Ci-dessous un exemple de script qui n'a pas fonctionné.
merci d'avance pour votre aide
Ivan
# Parallelization initialization
library(foreach)
library(doParallel)
parallel::detectCores()
n.cores <- 8
my.cluster <- parallel::makeCluster(n.cores, type = "PSOCK")
print(my.cluster)
doParallel::registerDoParallel(cl = my.cluster)
foreach::getDoParRegistered()
foreach::getDoParWorkers()
# My code to parallelize
sil_scores <- list()
for(i in names(sobj.list.subsample)){
sil_scores[[i]] <- foreach(j = 1:length(clustering.levels), .inorder=TRUE, .packages = c(Packages,"SCISSORS")) %dopar%{
#The clustering factor must be named "seurat_clusters" for ComputeSilhouetteScores()
sobj.list.subsample[[i]]@meta.data[,"seurat_clusters"] <- sobj.list.subsample[[i]]@meta.data[,clustering.levels[j]]
sil_score_df <- ComputeSilhouetteScores(sobj.list.subsample[[i]],
dist.metric = "euclidean", #Same as in FindNeighbors
avg = FALSE #Computes mean silhouette score for each cluster
)
}
}
# Stop parallel workers
parallel::stopCluster(cl = my.cluster)