Bonjours! premier post ici alors on va essayer de pas le ruiner!
je vais essayer de décrire la situation le plus clairement possible.. ce qui n'est peut-être pas facile avec mon inexpérience en Fortran..
*************
Situation:
Je veux separer les iteration sur Nprocs (idéalement de facon block-cyclique)
la matrice de départ est de dimension (nb,6) ou nb va avec le nomrbe de particules dans le systeme (présentement tres peu mais aussitot que ca va etre fonctionel on va pouvoir pousser un peu).. donc on a un "tall matrice"
je voudrais diviser la matrice en X sub matrice (row-major) pour distribuer ca sur les procs .. ca ne seras pas trop evident pour moi mais ce n'est pas le plus gros du problème...
***************
Problème:
Tout les processus sont "nested" dans une main loop . (qui doit etre syncro) .. c.a.d que a chaque debut de loop la matrice globale est updater avec les resultat de tout les iterations pour ainsi pouvoir commencer le cycle suivant..
j'ai pense a allgather .. mais le probleme c'est que ca ne semble pas fonctionner pour des matrices. Dans tout ce que j'ai lus dernierement personne semblent parler de comment récupérer le résultat des diffèrents procs et les mettrent dans la même matrice..
une autre solution que j'ai pensé est de dumper les résultats de chaque procs sur le NFS (qui est en commun) et a chaque debut de loop de mettre les fichier en séquence dans la matrice de base.. mais cette solution m'enchante pas beaucoup.... vraiment pas beaucoup a vrais dire .. sauf si c'est la seule solution.......
**********
Précision:
je dois avoir la matrice complete dans la memoire de chaque procs car ce programe sert a solutionner un probleme a N-corps en résolvant X problème à 2-corps .. et la "nouvelle matrice" n'est pas necesaire avant le debut de la loop suivante .. donc le gather des resultats doit se faire a la fin de la loop, pour synchronise le tout.
La solution est peut-etre évidente mais je dois avouer que présentement je tourne en rond avec ca... mon code run #1 sur 1 machine. C'est suffisant car j'ai 31 particules dans le systeme pour faire les test ... une fois que les test vont être terminés je vais tomber a 200-300.. 1000-2000(si le programme et le cluster peuvent le supporter compte tenu du délais que l'ont a)
Donc si vous avez une solution ou un document référence que je pourrais lire pour m'éclairer sur le sujet ! ... ca m'aiderais beaucoup
c'est pour une recherche(ecole)
Merci
Partager