Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: [OMPI devel] MPI_Init_thread problem on ubuntu ARM (open-mpi 1.4.3)
From: Juan Solano (jsm_at_[hidden])
Date: 2012-03-21 07:07:12


Hello,

I have a problem using Open MPI on my linux system (pandaboard running
Ubuntu precise). A call to MPI_Init_thread with the following parameters
hangs:

  MPI_Init_thread(0, 0, MPI_THREAD_MULTIPLE, &provided);

it seems that we are stuck on this loop in function
opal_condition_wait():

while (c->c_signaled == 0) {
    opal_progress();

this is the call stack:

#0 opal_condition_wait (c=0x42528, m=0x42500) at
../../../../../../opal/threads/condition.h:76
#1 0xb6d23124 in orte_rml_oob_send (peer=0xb6e40ae0, iov=0xbeffefa4,
count=1, tag=1, flags=16)
    at ../../../../../../orte/mca/rml/oob/rml_oob_send.c:153
#2 0xb6d2351a in orte_rml_oob_send_buffer (peer=0xb6e40ae0,
buffer=0xbeffefdc, tag=1, flags=0)
    at ../../../../../../orte/mca/rml/oob/rml_oob_send.c:269
#3 0xb6e2dca6 in orte_routed_base_register_sync (setup=true) at
../../../../../orte/mca/routed/base/routed_base_register_sync.c:91
#4 0xb6d46274 in init_routes (job=3667329025, ndat=0x0) at
../../../../../../orte/mca/routed/binomial/routed_binomial.c:890
#5 0xb6e1a088 in orte_ess_base_app_setup () at
../../../../../orte/mca/ess/base/ess_base_std_app.c:150
#6 0xb6d2e630 in rte_init (flags=0 '\000') at
../../../../../../orte/mca/ess/singleton/ess_singleton_module.c:276
#7 0xb6e01404 in orte_init (flags=0 '\000') at
../../../orte/runtime/orte_init.c:131
#8 0xb6f552dc in ompi_mpi_init (argc=0, argv=0x0, requested=0,
provided=0xbefff67c) at ../../../ompi/runtime/ompi_mpi_init.c:344
#9 0xb6f7c6f2 in PMPI_Init_thread (argc=0x0, argv=0x0, required=0,
provided=0xbefff67c) at pinit_thread.c:84
#10 0x00008572 in main () at test_lib.c:8

In function opal_condition_wait(), opal_using_threads() returns false,
shouldn't this returns true in this case, as we are calling the
initialization function with MPI_THREAD_MULTIPLE?

The global opal_uses_threads is set by calling opal_set_using_threads()
from MPI_Init_thread(), however this happens further down in this
function and we never reach the point in which this is set.

Thanks,
Juan.