Je parallélise le code pour résoudre numériquement un modèle d'équilibre de population à 5 dimensions. Actuellement, j'ai un très bon code parallélisé MPICH2 dans FORTRAN mais à mesure que nous augmentons les valeurs des paramètres, les tableaux deviennent trop volumineux pour fonctionner en mode mémoire distribuée.
J'ai accès à un cluster avec 15 nœuds, où chaque nœud a deux processeurs 8 cœurs et 128 Go de RAM. Je veux écrire exécuter un programme avec MPI-3.0 en mode mémoire partagée afin que chaque processus ne génère pas sa propre copie de chaque tableau.
Avant de pouvoir exécuter quoi que ce soit sur le cluster, je dois le tester sur un bureau exécutant Ubuntu. Il s'agit essentiellement d'une lame du cluster dans la mesure où elle possède deux processeurs 8 cœurs et 128 Go de RAM. J'écrirai et testerai mon code dessus, alors veuillez orienter vos réponses vers l'exécution de programmes sur l'ordinateur Ubuntu.
J'ai lu qu'il existe un moyen d'exécuter MPI-3.0 en mode de mémoire partagée comme OpenMP au lieu de son mode de mémoire distribuée par défaut.
Des questions:
Comment vais-je devoir modifier mon code? Dois-je ajouter des appels à d'autres fonctions MPI comme
MPI_WIN_ALLOCATE
?Comment compiler mon code pour exécuter MPI-3.0 en mode mémoire partagée? Est-ce que ce sera différent si c'est sur plusieurs nœuds?
Veuillez donner des exemples de scripts de compilation si vous le pouvez. Je n'ai également que des compilateurs GNU. Le cluster que j'utilise ne prend pas en charge les compilateurs Intel.
mpiexec -n 8 /path/to/application
pour faire croire à votre ordinateur qu'il a 8 nœuds différents.