10
votes

R Programmation - Soumission d'emplois sur un cluster à plusieurs nœuds Linux à l'aide de PBS

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)


1 commentaires

Êtes-vous sûr que PBS lance plusieurs instances? Essayez d'ajouter echo $ (nom d'hôte) dans le fichier BATCH


3 Réponses :


2
votes

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 Fonction) qui contrôle la "partie du travail" de cette instance actuelle. Parce que j'utilise multicore 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 devrait faire son travail ... alors la valeur de pbs_tasknum peut être utilisée comme paramètre de contrôle.


1 commentaires

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



1
votes

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).

Si c'est pour plusieurs fichiers, je le fais normalement: xxx

call_r.pbs: xxx

analyse_file. R: xxx

puis je combine toute la sortie ...


0 commentaires

1
votes

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 pbsdsh , et je suis nouveau à HPC, mais à moi, il semble que pbsdsh est un but similaire comme GNU parallèle . 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: xxx

infilelist.txt répertorie les fichiers de données que vous souhaitez traiter, par exemple: xxx

votre myscript.r accéderait à l'argument de la ligne de commande pour charger et traiter le spécifié. Fichier d'entrée.

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 parallèle , par exemple, je ne sais pas l'option -j2 . (Voir mon question associée .)


0 commentaires