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 MB

Z 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 MB

Kró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.

questionAnswers(1)

yourAnswerToTheQuestion