2017-03-03 3 views
1

J'utilise doMPI sur un HPC et j'aimerais consigner les résultats des travailleurs. En utilisant doParallel, j'ai pu utiliser makeCluster(outfile='myfile.log'). Avec doMPI, il ne semble pas y avoir d'argument outfile dans aucune des méthodes. J'ai essayé d'utiliser sinkWorkerOutput(). Cela fonctionne, mais seulement écrit le journal pour l'un des travailleurs. Je soupçonne que chaque travailleur écrase l'autre. Y a-t-il un analogue pour outfile pour le doMPI?Écrire dans le fichier journal à l'aide de doMPI

Une question connexe - à l'intérieur d'un travailleur, puis-je trouver le numéro du travailleur?

EDIT: voici un lien vers une réponse discuter de la façon d'utiliser outfile: How can I print when using %dopar%

Merci pour votre aide,

Ben

+0

Qu'en est-il de mettre 'sink' ou' cat' dans votre fonction? – Jav

Répondre

0

Pour envoyer la sortie de travailleur à un fichier dans le package doMPI , réglez la startMPIcluster option "bavard" à TRUE:

cl <- startMPIcluster(verbose=TRUE) 

Cela crée un fichier p Travailleur avec les noms du formulaire "MPI_1_steve_41747.log". Le rang MPI, le nom d'utilisateur et l'identifiant de processus sont utilisés pour rendre les noms de fichiers uniques. Vous pouvez également spécifier le répertoire des journaux via l'option "logdir".

Pour obtenir un numéro de travailleur, vous pouvez simplement appeler la fonction mpi.comm.rank.