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

Reply via email to