Hybrydowy MPI / OpenMP w LSF
Przenoszę program równolegle przez OpenMP do Cluster. Klaster używa Lava 1.0 jako harmonogramu i ma 8 rdzeni w każdym węźle. Użyłem opakowania skryptu MPI w skrypcie zadania do równoległego wykonywania wielu hostów.
Oto skrypt pracy:
#BSUB -q queue_name
#BSUB -x
#BSUB -R "span[ptile=1]"
#BSUB -n 1
#BSUB -J n1p1o8
##BSUB -o outfile.email
#BSUB -e err
export OMP_NUM_THREADS=8
date
/home/apps/bin/lava.openmpi.wrapper -bynode -x OMP_NUM_THREADS \
~/my_program ~/input.dat ~/output.out
date
Zrobiłem kilka eksperymentów wyłącznie na JEDNYM hoście. Nie wiem jednak, jak wyjaśnić niektóre wyniki.
1
-nOMP_NUM_THREADSczas
1 4 21:12
2 4 20:12
Czy to oznacza, że MPI nie robi tutaj żadnego równoległego? W drugim przypadku pomyślałem, że każdy proces MPI będzie miał 4 wątki OMP, więc powinien używać 800% wykorzystania procesora, co powinno być szybsze niż pierwszego.
Kolejne wyniki, aby to udowodnić
-nOMP_NUM_THREADSczas
2 2 31:42
4 2 30:47
Mają też dość krótkie czasy pracy.
2.
W tym przypadku, jeśli chcę w prosty sposób zrównoważyć ten program w tym klastrze z rozsądną zoptymalizowaną prędkością, czy rozsądne jest umieszczenie procesu 1 MPI (powiedz LFG, że używam jednego rdzenia) w każdym hoście, ustaw OMP_NUM_THREADS = 8, a następnie uruchomić go wyłącznie? Dlatego MPI działa tylko na zadaniach między węzłami, a OpenMP działa na zadaniach węzła wewnętrznego. (-n = # hosta; ptile = 1; OMP_NUM_THREADS = Maks. rdzenie w każdym hoście)
AKTUALIZACJA: Program jest skompilowany przez gfortran -fopenmp bez mpicc. MPI jest używany tylko do dystrybucji pliku wykonywalnego.
AKTUALIZACJA 3 marca: Monitor użycia pamięci programu
Środowisko lokalne: pamięć Mac 10.8 / 2.9 Ghz i7 / 8GB
Brak OpenMP
Rzeczywisty rozmiar pamięci: 8,4 MBRozmiar pamięci wirtualnej: 2,37 GBWspółdzielona wielkość pamięci: 212 KBPrywatny rozmiar pamięci: 7.8 MbWirtualna pamięć prywatna: 63,2 MBZ OpenMP (4 wątki)
Rzeczywisty rozmiar pamięci: 31,5 MBRozmiar pamięci wirtualnej: 2,52 GBWspółdzielona wielkość pamięci: 212 KBPrywatny rozmiar pamięci: 27,1 MbWirtualna pamięć prywatna: 210,2 MBKrótka informacja o sprzęcie klastrowym
Każdy host zawiera podwójne quady, które mają 8 rdzeni na węzeł i 8 GB pamięci. Hosty w tym klastrze są połączone przez infiniband.