Je suis en cours d'exécution sur un groupe multiple nœud Linux. Je souhaite exécuter mon analyse sur R à l'aide de scripts ou de mode de lot sans utiliser de logiciels informatiques parallèles tels que MPI ou Snow.
Je sais que cela peut être fait en divisant les données d'entrée telles que chaque nœud traverse différentes parties des données. P>
Ma question est comment puis-je y aller exactement? Je ne sais pas comment je devrais coder mes scripts. Un exemple serait très utile! P>
J'ai exécuté mes scripts jusqu'à présent à l'aide de PBS, mais il semble qu'il semble exécuter sur un nœud comme R est un programme de fil unique. Par conséquent, j'ai besoin de savoir comment ajuster mon code afin qu'il distribue de main-d'œuvre à tous les nœuds. P>
Voici ce que j'ai fait jusqu'à présent: em> strong> p> 1) ligne de commande: p> > library(survival)
> ...
> write.table(test,"TESTER.csv",
> sep=",", row.names=F, quote=F)
3 Réponses :
Ceci est plutôt une question PBS; Je fais habituellement un script R (avec chemin Rscript après #!) Et faites-la rassembler un paramètre (Utilisation de Commandargs CODE> Fonction) qui contrôle la "partie du travail" de cette instance actuelle. Parce que j'utilise
multicore code> beaucoup, je n'ai généralement pas besoin d'utiliser seulement 3-4 nœuds, donc je viens de soumettre quelques tâches appelant ce script r avec chacune d'une éventuelle valeurs d'argument de contrôle.
D'autre part, votre utilisation de pbsdsh code> devrait faire son travail ... alors la valeur de
pbs_tasknum code> peut être utilisée comme paramètre de contrôle. P>
C'est une suggestion intéressante. Pourriez-vous s'il vous plaît partagez-vous avec nous votre grotte utilisant le script «Commandargs» et «PBS»? Ce n'est pas évident sur la façon dont on irait à ce sujet. Merci
C'était une réponse à une question connexe - mais c'est une réponse au commentaire ci-dessus (aussi).
Pour la majeure partie de notre travail, nous exécutons plusieurs sessions R en parallèle à l'aide de QSUB (à la place). P >
Si c'est pour plusieurs fichiers, je le fais normalement: p> call_r.pbs: p> analyse_file. R: p> puis je combine toute la sortie ... p> p>
Ce problème semble très bien adapté à l'utilisation de GNU parallèle. GNU Parallel a un excellent tutoriel ici . Je ne connais pas où votre Mon objectif principal avec cette réponse consiste à signaler la disponibilité de GNU parallèle, qui est arrivée après la publication de la question initiale. Espérons que quelqu'un d'autre peut fournir un exemple plus tangible. En outre, je suis toujours wobbly avec mon utilisation de pbsdsh code>, et je suis nouveau à HPC, mais à moi, il semble que
pbsdsh code> est un but similaire comme GNU
parallèle code >. Je ne connais pas non plus de lancer R à partir de la ligne de commande avec des arguments, mais voici à ma suppression sur la manière dont votre fichier PBS regarderait:
infilelist.txt code > répertorie les fichiers de données que vous souhaitez traiter, par exemple: p>
myscript.r code> accéderait à l'argument de la ligne de commande pour charger et traiter le spécifié. Fichier d'entrée. P>
parallèle code>, par exemple, je ne sais pas l'option
-j2 code>. (Voir mon question associée .) P> p>
Êtes-vous sûr que PBS lance plusieurs instances? Essayez d'ajouter
echo $ (nom d'hôte) code> dans le fichier BATCH