MPI avec python
nuanda
-
nuanda -
nuanda -
Bonjour,
Je souhaite utiliser MPI avec Python. Mon programme python est très simple, mais le temps de calcul et d'ecriture à chaque itération est long.
__________________________________________________________________________
for i in mylist:
myfile = open(path+str(i)+'filename.dat, 'w')
.......
# calcul + ecriture du fichier...
.......
myfile.close()
__________________________________________________________________________
Par consequent, je voudrais lancer le programme sur plusieurs processeurs grace à MPI, etant donné que chaque iteration correspond à un job independant.
Quelqu'un aurait-il une methode simple pour faire ça svp?
Merci!
Je souhaite utiliser MPI avec Python. Mon programme python est très simple, mais le temps de calcul et d'ecriture à chaque itération est long.
__________________________________________________________________________
for i in mylist:
myfile = open(path+str(i)+'filename.dat, 'w')
.......
# calcul + ecriture du fichier...
.......
myfile.close()
__________________________________________________________________________
Par consequent, je voudrais lancer le programme sur plusieurs processeurs grace à MPI, etant donné que chaque iteration correspond à un job independant.
Quelqu'un aurait-il une methode simple pour faire ça svp?
Merci!
A voir également:
- MPI avec python
- Python pix ✓ - Forum Python
- Citizen code python avis - Accueil - Outils
- Citizen code python solution - Forum Python
- Aide exercice Python sur site citizen code ✓ - Forum Python
- Citizen Code : Saison 1 Episode 3, difficulté à comprendre - Forum Python
4 réponses
Je pourrais t'aider à faire des algorithmes en parallèle, mais en pseudo MPI car je ne connais pas Python... Pour l'implémentation en naviguant un peu j'ai trouvé pyMPI.
Quand je regarde ton code j'ai quand même un gros doute sur la parallélisation, car si c'est le temps d'écriture qui est long tu ne pourras rien faire car de toute façon ton fichier final devra être lu et écrit sur l'ordinateur maître. La parallélisation va de plus demander un certain nombres de ressources puisque tu vas devoir envoyer sur le réseau les fichiers de départ, puis les fichiers d'arrivées.
En revanche si c'est le temps des calculs qui est long alors tu as tout intérêt à paralléliser, par exemple avec 1 fichier par ordinateur (processeur en fait) :
Ça c'est la première idée (assez naïve) de la parallélisation. Mais il peut-être intéressant d'utiliser la parallélisation aussi dans les calculs, mais là il nous faut plus d'infos sur ce que tu veux faire !
Quand je regarde ton code j'ai quand même un gros doute sur la parallélisation, car si c'est le temps d'écriture qui est long tu ne pourras rien faire car de toute façon ton fichier final devra être lu et écrit sur l'ordinateur maître. La parallélisation va de plus demander un certain nombres de ressources puisque tu vas devoir envoyer sur le réseau les fichiers de départ, puis les fichiers d'arrivées.
En revanche si c'est le temps des calculs qui est long alors tu as tout intérêt à paralléliser, par exemple avec 1 fichier par ordinateur (processeur en fait) :
Maître : Pour chaque i, envoyer le fichier f[i] sur l'ordinateur i. Maître : Pour chaque i, recevoir le fichier f'[i] de l'ordinateur i. Ordinateur [i] : recevoir le fichier f du maître Ordinateur [i] : faire le calcul de f et enregistrer le résultat dans f' Ordinateur [i] : envoyer le fichier f' au maître
Ça c'est la première idée (assez naïve) de la parallélisation. Mais il peut-être intéressant d'utiliser la parallélisation aussi dans les calculs, mais là il nous faut plus d'infos sur ce que tu veux faire !
Merci KX.
"Pour chaque i, envoyer le fichier f[i] sur le CPU i" C'est exactement ça que je veux.
Et j'utilise une seule machine multi-core donc pas de souci pour l'ecriture etc.
J'aurais juste besoin de savoir comment implementer ça en Python (en utilisant pyMPI par exemple comme tu le suggeres).
"Pour chaque i, envoyer le fichier f[i] sur le CPU i" C'est exactement ça que je veux.
Et j'utilise une seule machine multi-core donc pas de souci pour l'ecriture etc.
J'aurais juste besoin de savoir comment implementer ça en Python (en utilisant pyMPI par exemple comme tu le suggeres).
Si tu utilises une seule machine, je ne vois pas l'intérêt d'utiliser MPI. Alors je ne sais pas ce qui existe en Python mais l'utilisation de plusieurs threads ou processus (type fork) est certainement plus judicieux, car ça permettrait d'équilibrer la charge sur les différents processeurs. Mais MPI paraît inutiles ici, car il s'adresse avant tout à l'utilisation sur plusieurs machines pas une seule...
flo88
Messages postés
28900
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
5 146
Salut
MPI est un protocole de transfert de données industriel............
Il faut toujours précisé.
Bonjour chez vous
MPI est un protocole de transfert de données industriel............
Il faut toujours précisé.
Bonjour chez vous
Simplement, que dans certain domaine professionnel, certaine abréviation ne veulent pas dire la même chose.