Sto parallelizzando il codice per risolvere numericamente un modello di bilancio demografico a 5 dimensioni. Attualmente ho un ottimo codice parallelizzato MPICH2 in FORTRAN ma quando aumentiamo i valori dei parametri gli array diventano troppo grandi per essere eseguiti in modalità di memoria distribuita.
Ho accesso a un cluster con 15 nodi, in cui ogni nodo ha due CPU 8 core e 128 GB di RAM. Voglio scrivere eseguire un programma con MPI-3.0 in modalità memoria condivisa in modo che ogni processo non generi la propria copia di ciascun array.
Prima di poter eseguire qualsiasi cosa sul cluster, devo provarlo su un desktop che esegue Ubuntu. È essenzialmente un blade del cluster in quanto ha due CPU a 8 core e 128 GB di RAM. Scriverò e testerò il mio codice su di esso, quindi per favore orienta le tue risposte verso l'esecuzione di programmi sul computer Ubuntu.
Ho letto che esiste un modo per eseguire MPI-3.0 in modalità di memoria condivisa come OpenMP anziché la sua modalità di memoria distribuita predefinita.
Domande:
Come dovrò modificare il mio codice? Devo aggiungere chiamate ad altre funzioni MPI come
MPI_WIN_ALLOCATE
?Come posso compilare il mio codice per eseguire MPI-3.0 in modalità memoria condivisa? Sarà diverso se si trova su più nodi?
Se possibile, fornire script di compilazione di esempio. Ho anche solo compilatori GNU. Il cluster che utilizzo non supporta i compilatori Intel.
mpiexec -n 8 /path/to/application
per falsificare il tuo computer nel pensare che abbia 8 nodi diversi.