Hi
All machines on the setup are IDataPlex with Nehalem 12 cores per node, 24GB
memory.
· Problem 1 – OMPI 1.4.3 hangs in gather:
I’m trying to run IMB and gather operation with OMPI 1.4.3 (Vanilla).
It happens when np>= 64 and message size exceed 4k:
mpirun -np 64 -machinefile voltairenodes -mca btl sm,self,openib
imb/src-1.4.2/IMB-MPI1 gather –npmin 64
voltairenodes consists of 64 machines.
#----------------------------------------------------------------
# Benchmarking Gather
# #processes = 64
#----------------------------------------------------------------
#bytes #repetitions t_min[usec] t_max[usec] t_avg[usec]
0 1000 0.02 0.02 0.02
1 331 14.02 14.16 14.09
2 331 12.87 13.08 12.93
4 331 14.29 14.43 14.34
8 331 16.03 16.20 16.11
16 331 17.54 17.74 17.64
32 331 20.49 20.62 20.53
64 331 23.57 23.84 23.70
128 331 28.02 28.35 28.18
256 331 34.78 34.88 34.80
512 331 46.34 46.91 46.60
1024 331 63.96 64.71 64.33
2048 331 460.67 465.74 463.18
4096 331 637.33 643.99 640.75
This the padb output:
padb –A –x –Ormgr=mpirun –tree:
=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2011.01.06 14:33:17 =~=~=~=~=~=~=~=~=~=~=~=
Warning, remote process state differs across ranks
state : ranks
R (running) :
[1,3-6,8,10-13,16-20,23-28,30-32,34-42,44-45,47-49,51-53,56-59,61-63]
S (sleeping) : [0,2,7,9,14-15,21-22,29,33,43,46,50,54-55,60]
Stack trace(s) for thread: 1
-----------------
[0-63] (64 processes)
-----------------
main() at ?:?
IMB_init_buffers_iter() at ?:?
IMB_gather() at ?:?
PMPI_Gather() at pgather.c:175
mca_coll_sync_gather() at coll_sync_gather.c:46
ompi_coll_tuned_gather_intra_dec_fixed() at
coll_tuned_decision_fixed.c:714
-----------------
[0,3-63] (62 processes)
-----------------
ompi_coll_tuned_gather_intra_linear_sync() at coll_tuned_gather.c:248
mca_pml_ob1_recv() at pml_ob1_irecv.c:104
ompi_request_wait_completion() at
../../../../ompi/request/request.h:375
opal_condition_wait() at ../../../../opal/threads/condition.h:99
-----------------
[1] (1 processes)
-----------------
ompi_coll_tuned_gather_intra_linear_sync() at coll_tuned_gather.c:302
mca_pml_ob1_send() at pml_ob1_isend.c:125
ompi_request_wait_completion() at
../../../../ompi/request/request.h:375
opal_condition_wait() at ../../../../opal/threads/condition.h:99
-----------------
[2] (1 processes)
-----------------
ompi_coll_tuned_gather_intra_linear_sync() at coll_tuned_gather.c:315
ompi_request_default_wait() at request/req_wait.c:37
ompi_request_wait_completion() at ../ompi/request/request.h:375
opal_condition_wait() at ../opal/threads/condition.h:99
Stack trace(s) for thread: 2
-----------------
[0-63] (64 processes)
-----------------
start_thread() at ?:?
btl_openib_async_thread() at btl_openib_async.c:344
poll() at ?:?
Stack trace(s) for thread: 3
-----------------
[0-63] (64 processes)
-----------------
start_thread() at ?:?
service_thread_start() at btl_openib_fd.c:427
select() at ?:?
-bash-3.2$
When running again padb after couple of minutes, I can see that the total
number of processes remain in the same position but
different processes are at different positions.
For example, this is the diff between two padb outputs:
Warning, remote process state differs across ranks
state : ranks
-R (running) : [0,2-4,6-13,16-18,20-21,28-31,33-36,38-56,58,60,62-63]
-S (sleeping) : [1,5,14-15,19,22-27,32,37,57,59,61]
+R (running) : [2,5-14,16-23,25,28-40,42-48,50-51,53-58,61,63]
+S (sleeping) : [0-1,3-4,15,24,26-27,41,49,52,59-60,62]
Stack trace(s) for thread: 1
-----------------
[0-63] (64 processes)
@@ -13,21 +13,21 @@
mca_coll_sync_gather() at coll_sync_gather.c:46
ompi_coll_tuned_gather_intra_dec_fixed() at coll_tuned_decision_fixed.c:714
-----------------
- [0,3-63] (62 processes)
+ [0-5,8-63] (62 processes)
-----------------
ompi_coll_tuned_gather_intra_linear_sync() at coll_tuned_gather.c:248
mca_pml_ob1_recv() at pml_ob1_irecv.c:104
ompi_request_wait_completion() at ../../../../ompi/request/request.h:375
opal_condition_wait() at ../../../../opal/threads/condition.h:99
-----------------
- [1] (1 processes)
+ [6] (1 processes)
-----------------
ompi_coll_tuned_gather_intra_linear_sync() at coll_tuned_gather.c:302
mca_pml_ob1_send() at pml_ob1_isend.c:125
ompi_request_wait_completion() at ../../../../ompi/request/request.h:375
opal_condition_wait() at ../../../../opal/threads/condition.h:99
-----------------
- [2] (1 processes)
+ [7] (1 processes)
-----------------
ompi_coll_tuned_gather_intra_linear_sync() at coll_tuned_gather.c:315
ompi_request_default_wait() at request/req_wait.c:37
Choosing different gather algorithm seems to bypass the hang.
I’ve used the following mca parameters:
--mca coll_tuned_use_dynamic_rules 1
--mca coll_tuned_gather_algorithm 1
Actually, both dec_fixed and basic_linear works while binomial and linear_sync
doesn’t.
With OMPI 1.5 it doesn’t hangs (with all gather algorithms) and it much faster
(the number of repetitions is much higher):
#----------------------------------------------------------------
# Benchmarking Gather
# #processes = 64
#----------------------------------------------------------------
#bytes #repetitions t_min[usec] t_max[usec] t_avg[usec]
0 1000 0.02 0.03 0.02
1 1000 18.50 18.55 18.53
2 1000 18.17 18.25 18.22
4 1000 19.04 19.10 19.07
8 1000 19.60 19.67 19.64
16 1000 21.39 21.47 21.43
32 1000 24.83 24.91 24.87
64 1000 27.35 27.45 27.40
128 1000 33.23 33.34 33.29
256 1000 41.24 41.39 41.32
512 1000 52.62 52.81 52.71
1024 1000 73.20 73.46 73.32
2048 1000 416.36 418.04 417.22
4096 1000 638.54 640.70 639.65
8192 1000 506.26 506.97 506.63
16384 1000 600.63 601.40 601.02
32768 1000 639.52 640.34 639.93
65536 640 914.22 916.02 915.13
131072 320 2287.37 2295.18 2291.35
262144 160 4041.36 4070.58 4056.27
524288 80 7292.35 7463.27 7397.14
1048576 40 13647.15 14107.15 13905.29
2097152 20 30625.00 32635.45 31815.36
4194304 10 63543.01 70987.49 68680.48
· Problem 2 – segmentation fault with OMPI 1.4.3/1.5 and IMB gather
np=768:
When trying to run the same command but with np=768 I get segmentation fault:
openmpi-1.4.3/bin/mpirun -np 768 -machinefile voltairenodes -mca btl
sm,self,openib -mca coll_tuned_use_dynamic_rules 1 -mca
coll_tuned_gather_algorithm 1 imb/src/IMB-MPI1 gather -npmin 768 -mem 1.6
This happens in OMPI 1.4.3 and 1.5
[compa163:20249] *** Process received signal ***
[compa163:20249] Signal: Segmentation fault (11)
[compa163:20249] Signal code: Address not mapped (1)
[compa163:20249] Failing at address: 0x2aab4a204000
[compa163:20249] [ 0] /lib64/libpthread.so.0 [0x366aa0e7c0]
[compa163:20249] [ 1]
/gpfs/asrc/home/voltaire/install//openmpi-1.4.3/lib/libmpi.so.0(ompi_convertor_unpack+0x15f)
[0x2b077882282e]
[compa163:20249] [ 2]
/gpfs/asrc/home/voltaire/install/openmpi-1.4.3/lib/openmpi/mca_pml_ob1.so
[0x2b077b9e1672]
[compa163:20249] [ 3]
/gpfs/asrc/home/voltaire/install/openmpi-1.4.3/lib/openmpi/mca_pml_ob1.so
[0x2b077b9dd0b6]
[compa163:20249] [ 4]
/gpfs/asrc/home/voltaire/install/openmpi-1.4.3/lib/openmpi/mca_btl_sm.so
[0x2b077c459d87]
[compa163:20249] [ 5]
/gpfs/asrc/home/voltaire/install//openmpi-1.4.3/lib/libopen-pal.so.0(opal_progress+0xbe)
[0x2b0778d845b8]
[compa163:20249] [ 6]
/gpfs/asrc/home/voltaire/install/openmpi-1.4.3/lib/openmpi/mca_pml_ob1.so
[0x2b077b9d6d62]
[compa163:20249] [ 7]
/gpfs/asrc/home/voltaire/install/openmpi-1.4.3/lib/openmpi/mca_pml_ob1.so
[0x2b077b9d6ba7]
[compa163:20249] [ 8]
/gpfs/asrc/home/voltaire/install/openmpi-1.4.3/lib/openmpi/mca_pml_ob1.so
[0x2b077b9d6a90]
[compa163:20249] [ 9]
/gpfs/asrc/home/voltaire/install/openmpi-1.4.3/lib/openmpi/mca_coll_tuned.so
[0x2b077d298dc5]
[compa163:20249] [10]
/gpfs/asrc/home/voltaire/install/openmpi-1.4.3/lib/openmpi/mca_coll_tuned.so
[0x2b077d2990d3]
[compa163:20249] [11]
/gpfs/asrc/home/voltaire/install/openmpi-1.4.3/lib/openmpi/mca_coll_tuned.so
[0x2b077d286e9b]
[compa163:20249] [12]
/gpfs/asrc/home/voltaire/install/openmpi-1.4.3/lib/openmpi/mca_coll_sync.so
[0x2b077d07e96c]
[compa163:20249] [13]
/gpfs/asrc/home/voltaire/install//openmpi-1.4.3/lib/libmpi.so.0(PMPI_Gather+0x55e)
[0x2b077883ec9a]
[compa163:20249] [14] imb/src/IMB-MPI1(IMB_gather+0xe8) [0x40a088]
[compa163:20249] [15] imb/src/IMB-MPI1(IMB_init_buffers_iter+0x28a) [0x405baa]
[compa163:20249] [16] imb/src/IMB-MPI1(main+0x30f) [0x40362f]
[compa163:20249] [17] /lib64/libc.so.6(__libc_start_main+0xf4) [0x3669e1d994]
[compa163:20249] [18] imb/src/IMB-MPI1 [0x403269]
[compa163:20249] *** End of error message ***
Any ideas? More debuggin tips?
Thanks,
Doron