Re: [OMPI devel] large virtual memory consumption on smp nodes and gridengine problems

2007-06-11 Thread Jeff Squyres

In addition to what Ralph said, I have the following random comments:

1. You'll have to ask on the GE mailing lists about the GE issues  
(2gb vs. 2000mb, etc.); I doubt we'll be of much help here on this list.


2. Do you have a very large SMP machine (i.e., 16 cores or more)?   
More specifically, how many MPI processes do you plan to run at once  
on a host?


3. Unrelated to the SMP issue, I see that you are using the  
InfiniBand Mellanox VAPI interface (mvapi BTL).  Is there any chance  
that you can upgrade to the newer OpenFabrics kernel/user stack?  All  
the IB vendors support it for their HPC customers.  FWIW: all Open  
MPI InfiniBand work is being done in support of OpenFabrics; the  
"mvapi" BTL is only maintained for backward compatibility and has had  
no new work done on it in at least a year.  See http://www.open- 
mpi.org/faq/?category=openfabrics#vapi-support.


4. Note that depending on your application (e.g., if it primarily  
sends large messages), it *may* be faster to use the DMA engine in  
your IB interface and not use Open MPI's shared memory interface.   
But there are a lot of factors involved here, such as the size of  
your typical messages, how many processes you run per host (i.e., I'm  
assuming you have one HCA that would need to service all the  
processes), etc.



On Jun 10, 2007, at 6:04 PM, Ralph Castain wrote:


Hi Markus

There are two MCA params that can help you, I believe:

1. You to set the maximum size of the shared memory file with

-mca mpool_sm_max_size xxx

where xxx is the maximum memory file you want, expressed in bytes. The
default value I see is 512MBytes.

2. You can set the size/peer of the file, again in bytes:

-mca mpool_sm_per_peer_size xxx

This will allocate a file that is xxx * num_procs_on_the_node on  
each node,

up to the maximum file size (either the 512MB default or whatever you
specified using the previous param). This defaults to 32MBytes/proc.


I see that there is also a minimum (total, not per-proc) file size  
that
defaults to 128MBytes. If that is still too large, you can adjust  
it using


-mca mpool_sm_min_size yyy


Hope that helps
Ralph



On 6/10/07 2:55 PM, "Markus Daene" halle.de> wrote:



Dear all,

I hope I am in the correct mailing list with my problem.
I try to run openmpi with the gridengine(6.0u10, 6.1). Therefore I
compiled openmpi (1.2.2),
which has the gridengine support included, I have checked it with  
ompi_info.

In principle, openmpi runs well.
The gridengine is configured such that the user has to specify the
memory consumption
via the h_vmem option. Then I noticed that with a larger number of
processes the job
is killed by the gridengine because of taking too much memory.
To take a closer look on that, I wrote a small and simple  
(Fortran) MPI

program which has just a MPI_Init
and a (static) array, in my case of 50MB, then the programm goes  
into a

(infinite) loop, because it
takes some time until the gridengine reports the maxvmem.
I found, that if the processes run all on different nodes, there  
is only

a offset per process, at least
a linear scaling. But it becomes worse when the jobs run on one node.
There it seems to be a quadratic
scaling with the offset, in my case about 30M. I made a list of the
virtual memory reported by the
gridengine, I was running on a 16 processor node:

#N procvirt. Mem[MB]
1  182
2  468
3  825
4  1065
5  1001
6  1378
7  1817
8  2303
12 4927
16 8559

the pure program should need N*50MB, for 16 it is only 800M, but it
takes 10 times more, >7GB!!!
Of course, the gridengine will kills the job is this overtaking is  
not

taken into accout,
because of too much virtual memory consumption. The momory  
consumtion is

not related to the grid engine,
it is the same if I run from the command line.
I guess it might be related to the 'sm' component of the btl.
Is it possible to avoid the quadratic scaling?
Of course I could use the vapi/tcp component only like
mpirun --mca btl mvapi  -np 16 ./my_test_program
in this case the virtual memory is fine, but it will not be what one
wants on a smp node.


then it becomes ever worse:
openmpi nicely report the (max./act.) used virtual memory to the grid
engine as sum of all processes.
This value is the compared with the one the user has specified  
with the

h_vmem option, but the
gridengine takes this value per process for the allocation of the job
(works) and does not multiply
this with the number of processes. Maybe one should report this to  
the

gridenging mailing list, but it
could be related as well for the openmpi interface.

The last thing I noticed:
It seems that if the v_mem option for gridengine jobs is specified  
like

'2.0G' my test job was
immedialtely killed; but when I specify '2000M' (which is obviously
less) it work. The gridengine
puts the job allways on the correct node as requested, but I think  
there

is might be a problem in
th

Re: [OMPI devel] Patch to fix cross-compile failure

2007-06-11 Thread Jeff Squyres

Paul -- Excellent; many thanks!

Brian: this patch looks good to me, but I defer to the unOfficial  
OMPI ROMIO Maintainer (uOORM)...



On Jun 8, 2007, at 3:33 PM, Paul Henning wrote:



I've attached a patch relative to the revision 14962 version of

ompi/mca/io/romio/romio/configure.in

that fixes configuration errors when doing a cross-compile.  It  
simply changes some tests for the number of parameters to  
aio_suspend and aio_write from AC_TRY_RUN to AC_TRY_COMPILE.


Paul



___
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel



--
Jeff Squyres
Cisco Systems



Re: [OMPI devel] large virtual memory consumption on smp nodes and gridengine problems

2007-06-11 Thread Pak Lui

Markus Daene wrote:

then it becomes ever worse:
openmpi nicely report the (max./act.) used virtual memory to the grid
engine as sum of all processes.
This value is the compared with the one the user has specified with the
h_vmem option, but the
gridengine takes this value per process for the allocation of the job
(works) and does not multiply
this with the number of processes. Maybe one should report this to the
gridenging mailing list, but it
could be related as well for the openmpi interface.


Hi Markus,

From the SGE 6.1 man page, it shows the hard virtual memory limit 
(h_vmem) is for the virtual memory consumed by all processes in a job. I 
don't think SGE does the fine-grained resource limit for each process 
anyway. Maybe you can verify this with the grid engine mailing list to 
just to confirm.




N1GE 6  Last change: 2007/02/14 13:34:15   12

N1 Grid Engine File Formats QUEUE_CONF(5)

 The resource limit parameters s_vmem and h_vmem  are  imple-
 mented by N1 Grid Engine as a job limit. They impose a limit
 on the amount of combined virtual memory consumed by all the
 processes in the job. If h_vmem is exceeded by a job running
 in the queue, it  is  aborted  via  a  SIGKILL  signal  (see
 kill(1)).   If s_vmem is exceeded, the job is sent a SIGXCPU
 signal which can be caught by the job.  If you wish to allow
 a  job to be "warned" so it can exit gracefully before it is
 killed then you should set the s_vmem limit to a lower value
 than  h_vmem.   For parallel processes, the limit is applied
 per slot which means that the limit  is  multiplied  by  the
 number of slots being used by the job before being applied.

...
 h_cpu The per-job CPU time limit in seconds.

 h_dataThe per-job maximum memory limit in bytes.

 h_vmemThe same as h_data (if both are set the minimum is
   used).



The last thing I noticed:
It seems that if the v_mem option for gridengine jobs is specified like
'2.0G' my test job was
immedialtely killed; but when I specify '2000M' (which is obviously
less) it work. The gridengine
puts the job allways on the correct node as requested, but I think there
is might be a problem in
the openmpi interface.


You should email the grid engine alias. This sounds like a SGE bug to me.




It would be nice if someone could give some hints how to avoid the
quadratic scaling or maybe to think
if this is really neccessary in openmpi.


Thanks.
Markus Daene




my compiling options:
./configure --prefix=/not_important --enable-static
--with-f90-size=medium --with-f90-max-array-dim=7  --with-mpi-para
m-check=always --enable-cxx-exceptions --with-mvapi
--enable-mca-no-build=btl-tcp

ompi_info output:
Open MPI: 1.2.2
   Open MPI SVN revision: r14613
Open RTE: 1.2.2
   Open RTE SVN revision: r14613
OPAL: 1.2.2
   OPAL SVN revision: r14613
  Prefix: /usrurz/openmpi/1.2.2/pathscale_3.0
 Configured architecture: x86_64-unknown-linux-gnu
   Configured by: root
   Configured on: Mon Jun  4 16:04:38 CEST 2007
  Configure host: GE1N01
Built by: root
Built on: Mon Jun  4 16:09:37 CEST 2007
  Built host: GE1N01
  C bindings: yes
C++ bindings: yes
  Fortran77 bindings: yes (all)
  Fortran90 bindings: yes
 Fortran90 bindings size: small
  C compiler: pathcc
 C compiler absolute: /usrurz/pathscale/bin/pathcc
C++ compiler: pathCC
   C++ compiler absolute: /usrurz/pathscale/bin/pathCC
  Fortran77 compiler: pathf90
  Fortran77 compiler abs: /usrurz/pathscale/bin/pathf90
  Fortran90 compiler: pathf90
  Fortran90 compiler abs: /usrurz/pathscale/bin/pathf90
 C profiling: yes
   C++ profiling: yes
 Fortran77 profiling: yes
 Fortran90 profiling: yes
  C++ exceptions: yes
  Thread support: posix (mpi: no, progress: no)
  Internal debug support: no
 MPI parameter check: always
Memory profiling support: no
Memory debugging support: no
 libltdl support: yes
   Heterogeneous support: yes
 mpirun default --prefix: no
  MCA backtrace: execinfo (MCA v1.0, API v1.0, Component v1.2.2)
  MCA memory: ptmalloc2 (MCA v1.0, API v1.0, Component v1.2.2)
   MCA paffinity: linux (MCA v1.0, API v1.0, Component v1.2.2)
   MCA maffinity: first_use (MCA v1.0, API v1.0, Component v1.2.2)
   MCA maffinity: libnuma (MCA v1.0, API v1.0, Component v1.2.2)
   MCA timer: linux (MCA v1.0, API v1.0, Component v1.2.2)
 MCA installdirs: env (MCA v1.0, API v1.0, Component v1.2.2)
 MCA installdirs: config (MCA v1.0, API v1.0, Component v1.2.2)
   MCA allocator: basic (MCA v1.0, API v1.0, Component v1.0)
   MCA allocator: bucket (MCA v1.0, API v1.0, Component v1.0)
   

[OMPI devel] threaded builds

2007-06-11 Thread Jeff Squyres
Per the teleconf last week, I have started to revamp the Cisco MTT  
infrastructure to do simplistic thread testing.  Specifically, I'm  
building the OMPI trunk and v1.2 branches with "--with-threads -- 
enable-mpi-threads".


I haven't switched this into my production MTT setup yet, but in the  
first trial runs, I'm noticing a segv in the test/threads/ 
opal_condition program.


It seems that in the thr1 test on the v1.2 branch, when it calls  
opal_progress() underneath the condition variable wait, at some point  
in there current_base is getting to be NULL.  Hence, the following  
segv's because the passed in value of "base" is NULL (event.c):


int
opal_event_base_loop(struct event_base *base, int flags)
{
const struct opal_eventop *evsel = base->evsel;
...

Here's the full call stack:

#0  0x002a955a020e in opal_event_base_loop (base=0x0, flags=5)
at event.c:520
#1  0x002a955a01f9 in opal_event_loop (flags=5) at event.c:514
#2  0x002a95599111 in opal_progress () at runtime/opal_progress.c: 
259

#3  0x004012c8 in opal_condition_wait (c=0x5025a0, m=0x502600)
at ../../opal/threads/condition.h:81
#4  0x00401146 in thr1_run (obj=0x503110) at opal_condition.c:46
#5  0x0036e290610a in start_thread () from /lib64/tls/ 
libpthread.so.0

#6  0x0036e1ec68c3 in clone () from /lib64/tls/libc.so.6
#7  0x in ?? ()

This test seems to work fine on the trunk (at least, it didn't segv  
in my small number of trail runs).


Is this a known problem in the 1.2 branch?  Should I skip the thread  
testing on the 1.2 branch and concentrate on the trunk?


--
Jeff Squyres
Cisco Systems



Re: [OMPI devel] threaded builds

2007-06-11 Thread Tim Prins
I had similar problems on the trunk, which was fixed by Brian with r14877.

Perhaps 1.2 needs something similar?

Tim

On Monday 11 June 2007 10:08:15 am Jeff Squyres wrote:
> Per the teleconf last week, I have started to revamp the Cisco MTT
> infrastructure to do simplistic thread testing.  Specifically, I'm
> building the OMPI trunk and v1.2 branches with "--with-threads --
> enable-mpi-threads".
>
> I haven't switched this into my production MTT setup yet, but in the
> first trial runs, I'm noticing a segv in the test/threads/
> opal_condition program.
>
> It seems that in the thr1 test on the v1.2 branch, when it calls
> opal_progress() underneath the condition variable wait, at some point
> in there current_base is getting to be NULL.  Hence, the following
> segv's because the passed in value of "base" is NULL (event.c):
>
> int
> opal_event_base_loop(struct event_base *base, int flags)
> {
>  const struct opal_eventop *evsel = base->evsel;
> ...
>
> Here's the full call stack:
>
> #0  0x002a955a020e in opal_event_base_loop (base=0x0, flags=5)
>  at event.c:520
> #1  0x002a955a01f9 in opal_event_loop (flags=5) at event.c:514
> #2  0x002a95599111 in opal_progress () at runtime/opal_progress.c:
> 259
> #3  0x004012c8 in opal_condition_wait (c=0x5025a0, m=0x502600)
>  at ../../opal/threads/condition.h:81
> #4  0x00401146 in thr1_run (obj=0x503110) at opal_condition.c:46
> #5  0x0036e290610a in start_thread () from /lib64/tls/
> libpthread.so.0
> #6  0x0036e1ec68c3 in clone () from /lib64/tls/libc.so.6
> #7  0x in ?? ()
>
> This test seems to work fine on the trunk (at least, it didn't segv
> in my small number of trail runs).
>
> Is this a known problem in the 1.2 branch?  Should I skip the thread
> testing on the 1.2 branch and concentrate on the trunk?


Re: [OMPI devel] threaded builds

2007-06-11 Thread Brian Barrett
Yes, this is a known issue.  I don't know -- are we trying to make  
threads work on the 1.2 branch, or just the trunk?  I had thought  
just the trunk?


Brian


On Jun 11, 2007, at 8:13 AM, Tim Prins wrote:

I had similar problems on the trunk, which was fixed by Brian with  
r14877.


Perhaps 1.2 needs something similar?

Tim

On Monday 11 June 2007 10:08:15 am Jeff Squyres wrote:

Per the teleconf last week, I have started to revamp the Cisco MTT
infrastructure to do simplistic thread testing.  Specifically, I'm
building the OMPI trunk and v1.2 branches with "--with-threads --
enable-mpi-threads".

I haven't switched this into my production MTT setup yet, but in the
first trial runs, I'm noticing a segv in the test/threads/
opal_condition program.

It seems that in the thr1 test on the v1.2 branch, when it calls
opal_progress() underneath the condition variable wait, at some point
in there current_base is getting to be NULL.  Hence, the following
segv's because the passed in value of "base" is NULL (event.c):

int
opal_event_base_loop(struct event_base *base, int flags)
{
 const struct opal_eventop *evsel = base->evsel;
...

Here's the full call stack:

#0  0x002a955a020e in opal_event_base_loop (base=0x0, flags=5)
 at event.c:520
#1  0x002a955a01f9 in opal_event_loop (flags=5) at event.c:514
#2  0x002a95599111 in opal_progress () at runtime/ 
opal_progress.c:

259
#3  0x004012c8 in opal_condition_wait (c=0x5025a0,  
m=0x502600)

 at ../../opal/threads/condition.h:81
#4  0x00401146 in thr1_run (obj=0x503110) at  
opal_condition.c:46

#5  0x0036e290610a in start_thread () from /lib64/tls/
libpthread.so.0
#6  0x0036e1ec68c3 in clone () from /lib64/tls/libc.so.6
#7  0x in ?? ()

This test seems to work fine on the trunk (at least, it didn't segv
in my small number of trail runs).

Is this a known problem in the 1.2 branch?  Should I skip the thread
testing on the 1.2 branch and concentrate on the trunk?

___
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel




Re: [OMPI devel] Patch to fix cross-compile failure

2007-06-11 Thread Brian Barrett
Argonne used AC_TRY_RUN instead of AC_TRY_COMPILE (I believe) because  
there are some places where aio functions behaved badly (returned  
ENOTIMPL or something).  I was going to make it call AC_TRY_RUN if we  
weren't cross-compiling and AC_TRY_COMPILE if we were.  I'll commit  
something this evening.


Brian


On Jun 11, 2007, at 6:07 AM, Jeff Squyres wrote:


Paul -- Excellent; many thanks!

Brian: this patch looks good to me, but I defer to the unOfficial
OMPI ROMIO Maintainer (uOORM)...


On Jun 8, 2007, at 3:33 PM, Paul Henning wrote:



I've attached a patch relative to the revision 14962 version of

ompi/mca/io/romio/romio/configure.in

that fixes configuration errors when doing a cross-compile.  It
simply changes some tests for the number of parameters to
aio_suspend and aio_write from AC_TRY_RUN to AC_TRY_COMPILE.

Paul



___
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel



--
Jeff Squyres
Cisco Systems

___
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel




Re: [OMPI devel] threaded builds

2007-06-11 Thread Ralph H Castain
I think that 1.2 is a lost cause in this regard - I thought we were just
looking forward on the trunk.


On 6/11/07 8:17 AM, "Brian Barrett"  wrote:

> Yes, this is a known issue.  I don't know -- are we trying to make
> threads work on the 1.2 branch, or just the trunk?  I had thought
> just the trunk?
> 
> Brian
> 
> 
> On Jun 11, 2007, at 8:13 AM, Tim Prins wrote:
> 
>> I had similar problems on the trunk, which was fixed by Brian with
>> r14877.
>> 
>> Perhaps 1.2 needs something similar?
>> 
>> Tim
>> 
>> On Monday 11 June 2007 10:08:15 am Jeff Squyres wrote:
>>> Per the teleconf last week, I have started to revamp the Cisco MTT
>>> infrastructure to do simplistic thread testing.  Specifically, I'm
>>> building the OMPI trunk and v1.2 branches with "--with-threads --
>>> enable-mpi-threads".
>>> 
>>> I haven't switched this into my production MTT setup yet, but in the
>>> first trial runs, I'm noticing a segv in the test/threads/
>>> opal_condition program.
>>> 
>>> It seems that in the thr1 test on the v1.2 branch, when it calls
>>> opal_progress() underneath the condition variable wait, at some point
>>> in there current_base is getting to be NULL.  Hence, the following
>>> segv's because the passed in value of "base" is NULL (event.c):
>>> 
>>> int
>>> opal_event_base_loop(struct event_base *base, int flags)
>>> {
>>>  const struct opal_eventop *evsel = base->evsel;
>>> ...
>>> 
>>> Here's the full call stack:
>>> 
>>> #0  0x002a955a020e in opal_event_base_loop (base=0x0, flags=5)
>>>  at event.c:520
>>> #1  0x002a955a01f9 in opal_event_loop (flags=5) at event.c:514
>>> #2  0x002a95599111 in opal_progress () at runtime/
>>> opal_progress.c:
>>> 259
>>> #3  0x004012c8 in opal_condition_wait (c=0x5025a0,
>>> m=0x502600)
>>>  at ../../opal/threads/condition.h:81
>>> #4  0x00401146 in thr1_run (obj=0x503110) at
>>> opal_condition.c:46
>>> #5  0x0036e290610a in start_thread () from /lib64/tls/
>>> libpthread.so.0
>>> #6  0x0036e1ec68c3 in clone () from /lib64/tls/libc.so.6
>>> #7  0x in ?? ()
>>> 
>>> This test seems to work fine on the trunk (at least, it didn't segv
>>> in my small number of trail runs).
>>> 
>>> Is this a known problem in the 1.2 branch?  Should I skip the thread
>>> testing on the 1.2 branch and concentrate on the trunk?
>> ___
>> devel mailing list
>> de...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
> 
> ___
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel




Re: [OMPI devel] threaded builds

2007-06-11 Thread Jeff Squyres
I leave it to the thread subgroup to decide...  Should we discuss on  
the call tomorrow?


I don't have a strong opinion; I was just testing both because it was  
easy to do so.  If we want to concentrate on the trunk, I can adjust  
my MTT setup.



On Jun 11, 2007, at 10:17 AM, Brian Barrett wrote:


Yes, this is a known issue.  I don't know -- are we trying to make
threads work on the 1.2 branch, or just the trunk?  I had thought
just the trunk?

Brian


On Jun 11, 2007, at 8:13 AM, Tim Prins wrote:


I had similar problems on the trunk, which was fixed by Brian with
r14877.

Perhaps 1.2 needs something similar?

Tim

On Monday 11 June 2007 10:08:15 am Jeff Squyres wrote:

Per the teleconf last week, I have started to revamp the Cisco MTT
infrastructure to do simplistic thread testing.  Specifically, I'm
building the OMPI trunk and v1.2 branches with "--with-threads --
enable-mpi-threads".

I haven't switched this into my production MTT setup yet, but in the
first trial runs, I'm noticing a segv in the test/threads/
opal_condition program.

It seems that in the thr1 test on the v1.2 branch, when it calls
opal_progress() underneath the condition variable wait, at some  
point

in there current_base is getting to be NULL.  Hence, the following
segv's because the passed in value of "base" is NULL (event.c):

int
opal_event_base_loop(struct event_base *base, int flags)
{
 const struct opal_eventop *evsel = base->evsel;
...

Here's the full call stack:

#0  0x002a955a020e in opal_event_base_loop (base=0x0, flags=5)
 at event.c:520
#1  0x002a955a01f9 in opal_event_loop (flags=5) at event.c:514
#2  0x002a95599111 in opal_progress () at runtime/
opal_progress.c:
259
#3  0x004012c8 in opal_condition_wait (c=0x5025a0,
m=0x502600)
 at ../../opal/threads/condition.h:81
#4  0x00401146 in thr1_run (obj=0x503110) at
opal_condition.c:46
#5  0x0036e290610a in start_thread () from /lib64/tls/
libpthread.so.0
#6  0x0036e1ec68c3 in clone () from /lib64/tls/libc.so.6
#7  0x in ?? ()

This test seems to work fine on the trunk (at least, it didn't segv
in my small number of trail runs).

Is this a known problem in the 1.2 branch?  Should I skip the thread
testing on the 1.2 branch and concentrate on the trunk?

___
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel


___
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel



--
Jeff Squyres
Cisco Systems



Re: [OMPI devel] threaded builds

2007-06-11 Thread Galen Shipman


On Jun 11, 2007, at 8:25 AM, Jeff Squyres wrote:


I leave it to the thread subgroup to decide...  Should we discuss on
the call tomorrow?

I don't have a strong opinion; I was just testing both because it was
easy to do so.  If we want to concentrate on the trunk, I can adjust
my MTT setup.



I think trying to worry about 1.2 would just be a time sink. We know  
that there are architectural issues with threads in some parts of the  
code. I don't see us re-architecting 1.2 in this regard.

Seems we should only focus on the trunk.


- Galen




On Jun 11, 2007, at 10:17 AM, Brian Barrett wrote:


Yes, this is a known issue.  I don't know -- are we trying to make
threads work on the 1.2 branch, or just the trunk?  I had thought
just the trunk?

Brian


On Jun 11, 2007, at 8:13 AM, Tim Prins wrote:


I had similar problems on the trunk, which was fixed by Brian with
r14877.

Perhaps 1.2 needs something similar?

Tim

On Monday 11 June 2007 10:08:15 am Jeff Squyres wrote:

Per the teleconf last week, I have started to revamp the Cisco MTT
infrastructure to do simplistic thread testing.  Specifically, I'm
building the OMPI trunk and v1.2 branches with "--with-threads --
enable-mpi-threads".

I haven't switched this into my production MTT setup yet, but in  
the

first trial runs, I'm noticing a segv in the test/threads/
opal_condition program.

It seems that in the thr1 test on the v1.2 branch, when it calls
opal_progress() underneath the condition variable wait, at some
point
in there current_base is getting to be NULL.  Hence, the following
segv's because the passed in value of "base" is NULL (event.c):

int
opal_event_base_loop(struct event_base *base, int flags)
{
 const struct opal_eventop *evsel = base->evsel;
...

Here's the full call stack:

#0  0x002a955a020e in opal_event_base_loop (base=0x0, flags=5)
 at event.c:520
#1  0x002a955a01f9 in opal_event_loop (flags=5) at event.c:514
#2  0x002a95599111 in opal_progress () at runtime/
opal_progress.c:
259
#3  0x004012c8 in opal_condition_wait (c=0x5025a0,
m=0x502600)
 at ../../opal/threads/condition.h:81
#4  0x00401146 in thr1_run (obj=0x503110) at
opal_condition.c:46
#5  0x0036e290610a in start_thread () from /lib64/tls/
libpthread.so.0
#6  0x0036e1ec68c3 in clone () from /lib64/tls/libc.so.6
#7  0x in ?? ()

This test seems to work fine on the trunk (at least, it didn't segv
in my small number of trail runs).

Is this a known problem in the 1.2 branch?  Should I skip the  
thread

testing on the 1.2 branch and concentrate on the trunk?

___
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel


___
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel



--
Jeff Squyres
Cisco Systems

___
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel




Re: [OMPI devel] threaded builds

2007-06-11 Thread Graham, Richard L.
I would second this - thread safety should be a 1.3 item, unless someone has a 
lot of spare time.

Rich

-Original Message-
From: devel-boun...@open-mpi.org 
To: Open MPI Developers 
Sent: Mon Jun 11 10:44:33 2007
Subject: Re: [OMPI devel] threaded builds


On Jun 11, 2007, at 8:25 AM, Jeff Squyres wrote:

> I leave it to the thread subgroup to decide...  Should we discuss on
> the call tomorrow?
>
> I don't have a strong opinion; I was just testing both because it was
> easy to do so.  If we want to concentrate on the trunk, I can adjust
> my MTT setup.
>

I think trying to worry about 1.2 would just be a time sink. We know  
that there are architectural issues with threads in some parts of the  
code. I don't see us re-architecting 1.2 in this regard.
Seems we should only focus on the trunk.


- Galen


>
> On Jun 11, 2007, at 10:17 AM, Brian Barrett wrote:
>
>> Yes, this is a known issue.  I don't know -- are we trying to make
>> threads work on the 1.2 branch, or just the trunk?  I had thought
>> just the trunk?
>>
>> Brian
>>
>>
>> On Jun 11, 2007, at 8:13 AM, Tim Prins wrote:
>>
>>> I had similar problems on the trunk, which was fixed by Brian with
>>> r14877.
>>>
>>> Perhaps 1.2 needs something similar?
>>>
>>> Tim
>>>
>>> On Monday 11 June 2007 10:08:15 am Jeff Squyres wrote:
 Per the teleconf last week, I have started to revamp the Cisco MTT
 infrastructure to do simplistic thread testing.  Specifically, I'm
 building the OMPI trunk and v1.2 branches with "--with-threads --
 enable-mpi-threads".

 I haven't switched this into my production MTT setup yet, but in  
 the
 first trial runs, I'm noticing a segv in the test/threads/
 opal_condition program.

 It seems that in the thr1 test on the v1.2 branch, when it calls
 opal_progress() underneath the condition variable wait, at some
 point
 in there current_base is getting to be NULL.  Hence, the following
 segv's because the passed in value of "base" is NULL (event.c):

 int
 opal_event_base_loop(struct event_base *base, int flags)
 {
  const struct opal_eventop *evsel = base->evsel;
 ...

 Here's the full call stack:

 #0  0x002a955a020e in opal_event_base_loop (base=0x0, flags=5)
  at event.c:520
 #1  0x002a955a01f9 in opal_event_loop (flags=5) at event.c:514
 #2  0x002a95599111 in opal_progress () at runtime/
 opal_progress.c:
 259
 #3  0x004012c8 in opal_condition_wait (c=0x5025a0,
 m=0x502600)
  at ../../opal/threads/condition.h:81
 #4  0x00401146 in thr1_run (obj=0x503110) at
 opal_condition.c:46
 #5  0x0036e290610a in start_thread () from /lib64/tls/
 libpthread.so.0
 #6  0x0036e1ec68c3 in clone () from /lib64/tls/libc.so.6
 #7  0x in ?? ()

 This test seems to work fine on the trunk (at least, it didn't segv
 in my small number of trail runs).

 Is this a known problem in the 1.2 branch?  Should I skip the  
 thread
 testing on the 1.2 branch and concentrate on the trunk?
>>> ___
>>> devel mailing list
>>> de...@open-mpi.org
>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>
>> ___
>> devel mailing list
>> de...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>
>
> -- 
> Jeff Squyres
> Cisco Systems
>
> ___
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel

___
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel



Re: [OMPI devel] threaded builds

2007-06-11 Thread Paul H. Hargrove
If Jeff has the resources to run threaded tests against 1.2, *and* to 
examine the results, then it might be valuable to have a summary the 
known threading issues in 1.2 written down somewhere for the benefit of 
those who don't chase the trunk.


-Paul

Graham, Richard L. wrote:

I would second this - thread safety should be a 1.3 item, unless someone has a 
lot of spare time.

Rich

-Original Message-
From: devel-boun...@open-mpi.org 
To: Open MPI Developers 
Sent: Mon Jun 11 10:44:33 2007
Subject: Re: [OMPI devel] threaded builds


On Jun 11, 2007, at 8:25 AM, Jeff Squyres wrote:

  

I leave it to the thread subgroup to decide...  Should we discuss on
the call tomorrow?

I don't have a strong opinion; I was just testing both because it was
easy to do so.  If we want to concentrate on the trunk, I can adjust
my MTT setup.




I think trying to worry about 1.2 would just be a time sink. We know  
that there are architectural issues with threads in some parts of the  
code. I don't see us re-architecting 1.2 in this regard.

Seems we should only focus on the trunk.


- Galen


  

On Jun 11, 2007, at 10:17 AM, Brian Barrett wrote:



Yes, this is a known issue.  I don't know -- are we trying to make
threads work on the 1.2 branch, or just the trunk?  I had thought
just the trunk?

Brian


On Jun 11, 2007, at 8:13 AM, Tim Prins wrote:

  

I had similar problems on the trunk, which was fixed by Brian with
r14877.

Perhaps 1.2 needs something similar?

Tim

On Monday 11 June 2007 10:08:15 am Jeff Squyres wrote:


Per the teleconf last week, I have started to revamp the Cisco MTT
infrastructure to do simplistic thread testing.  Specifically, I'm
building the OMPI trunk and v1.2 branches with "--with-threads --
enable-mpi-threads".

I haven't switched this into my production MTT setup yet, but in  
the

first trial runs, I'm noticing a segv in the test/threads/
opal_condition program.

It seems that in the thr1 test on the v1.2 branch, when it calls
opal_progress() underneath the condition variable wait, at some
point
in there current_base is getting to be NULL.  Hence, the following
segv's because the passed in value of "base" is NULL (event.c):

int
opal_event_base_loop(struct event_base *base, int flags)
{
 const struct opal_eventop *evsel = base->evsel;
...

Here's the full call stack:

#0  0x002a955a020e in opal_event_base_loop (base=0x0, flags=5)
 at event.c:520
#1  0x002a955a01f9 in opal_event_loop (flags=5) at event.c:514
#2  0x002a95599111 in opal_progress () at runtime/
opal_progress.c:
259
#3  0x004012c8 in opal_condition_wait (c=0x5025a0,
m=0x502600)
 at ../../opal/threads/condition.h:81
#4  0x00401146 in thr1_run (obj=0x503110) at
opal_condition.c:46
#5  0x0036e290610a in start_thread () from /lib64/tls/
libpthread.so.0
#6  0x0036e1ec68c3 in clone () from /lib64/tls/libc.so.6
#7  0x in ?? ()

This test seems to work fine on the trunk (at least, it didn't segv
in my small number of trail runs).

Is this a known problem in the 1.2 branch?  Should I skip the  
thread

testing on the 1.2 branch and concentrate on the trunk?
  

___
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel


___
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel
  

--
Jeff Squyres
Cisco Systems

___
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel



___
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel

___
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel
  



--
Paul H. Hargrove  phhargr...@lbl.gov
Future Technologies Group 
HPC Research Department   Tel: +1-510-495-2352

Lawrence Berkeley National Laboratory Fax: +1-510-486-6900