Question

Alors, les questions sont les suivantes: 1. MapReduce frais généraux trop élevés pour le problème suivant? Est-ce que quelqu'un a une idée de combien de temps chaque map / reduce cycle (Disco par exemple) prend un emploi très léger? 2. Y at-il une meilleure alternative à MapReduce pour ce problème?

Dans la carte Réduire les termes de mon programme se compose de 60 phases de carte et 60 réduire toutes les phases qui, ensemble, doivent être accomplies en 1 seconde. L'un des problèmes que je dois résoudre cette façon est une recherche minimale avec environ 64000 des variables. La matrice hessian pour la recherche est une matrice de blocs, 1000 blocs de taille 64x64 le long d'une diagonale, et une rangée de blocs à l'extrême droite et en bas. La dernière section de: algorithme inversion matrice bloc montre comment cela se fait. Chacun de Schur de la S_A et S_D peut être calculé dans une étape de MapReduce. Le calcul de l'inverse prend une autre étape.

D'après mes recherches à ce jour, mpi4py semble un bon pari. Chaque processus peut faire un pas en arrière de calcul et du rapport au client après chaque étape, et le client peut rendre compte de nouvelles variables d'état pour le cycle de continuer. De cette façon, l'état du processus ne soit pas perdu le calcul peut se poursuivre avec toutes les mises à jour. http://mpi4py.scipy.org/docs/usrman/index.html

Ce wiki détient quelques suggestions, mais quelqu'un at-il une direction sur la solution la plus développée: http://wiki.python.org/moin/ParallelProcessing

Merci!

Était-ce utile?

La solution

MPI est un protocole de communication qui permet la mise en oeuvre du traitement en parallèle par des messages passant entre les noeuds de grappe. Le modèle de traitement parallèle qui est mis en oeuvre avec MPI dépend du programmeur.

Je n'ai pas eu une expérience avec MapReduce, mais il me semble qu'il est un modèle de traitement parallèle spécifique et est conçu pour être simple à mettre en œuvre. Ce genre d'abstraction devrait vous faire gagner du temps et la programmation peut ou ne peut pas fournir une solution adaptée à votre problème. Tout dépend de la nature de ce que vous essayez de faire.

Le truc avec le traitement parallèle est que la solution la plus appropriée est souvent spécifique de problème et sans le savoir plus de détails au sujet de votre problème, il est difficile de faire des recommandations.

Si vous pouvez nous en dire plus sur l'environnement que vous exécutez votre travail sur et où vos ajustements de programme dans

scroll top