Re: [OMPI devel] failures runing mpi4py testsuite, perhaps Comm.Split()

2007-07-11 Thread Lisandro Dalcin

On 7/11/07, George Bosilca  wrote:

The two errors you provide are quite different. The first one has
been addresses few days ago in the trunk (https://svn.open-mpi.org/
trac/ompi/changeset/15291). If instead of the 1.2.3 you use anything
after r15291 you will be safe in a threading case.


Please, take into account that in this case I not used MPI_Init_tread() ...

In any case, sorry for making noise if this was already reported. I
have other issues to report, but perhaps I should try the svn version.
Please, understand me, I am really busy with many things as to be
up-to-date with every source code I use. Sorry again.




The second is different. The problem is that memcpy is a lot faster
than memmove, and that's why we use it.


Yes, of course.


The case where the 2 data
overlap are quite minimal. I'll take a look to see exactly what
happened there.


Initially, I though it was my error, but next realized that this seems
to happen in Comm.Split() internals.



--
Lisandro Dalcín
---
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594



Re: [OMPI devel] failures runing mpi4py testsuite, perhaps Comm.Split()

2007-07-11 Thread George Bosilca

Lisandro,

The two errors you provide are quite different. The first one has  
been addresses few days ago in the trunk (https://svn.open-mpi.org/ 
trac/ompi/changeset/15291). If instead of the 1.2.3 you use anything  
after r15291 you will be safe in a threading case.


The second is different. The problem is that memcpy is a lot faster  
than memmove, and that's why we use it. The case where the 2 data  
overlap are quite minimal. I'll take a look to see exactly what  
happened there.


  george.

On Jul 11, 2007, at 8:08 PM, Lisandro Dalcin wrote:


Ups, sended to wrong list, forwarded here...

-- Forwarded message --
From: Lisandro Dalcin 
Date: Jul 11, 2007 8:58 PM
Subject: failures runing mpi4py testsuite, perhaps Comm.Split()
To: Open MPI 


Hello all, after a long time I'm here again. I am improving mpi4py in
order to support MPI threads, and I've found some problem with latest
version 1.2.3

I've configured with:

$ ./configure --prefix /usr/local/openmpi/1.2.3 --enable-mpi-threads
--disable-dependency-tracking

However, for the following fail, MPI_Init_thread() was not used. This
test creates a intercommunicator by using Comm.Split() followed by
Intracomm.Create_intercomm(). When running in two or more procs (for
one proc this test is skipped), I got (sometimes) the following trace

[trantor:06601] *** Process received signal ***
[trantor:06601] Signal: Segmentation fault (11)
[trantor:06601] Signal code: Address not mapped (1)
[trantor:06601] Failing at address: 0xa8
[trantor:06601] [ 0] [0x958440]
[trantor:06601] [ 1]
/usr/local/openmpi/1.2.3/lib/openmpi/mca_btl_sm.so 
(mca_btl_sm_component_progress+0x1483)

[0x995553]
[trantor:06601] [ 2]
/usr/local/openmpi/1.2.3/lib/openmpi/mca_bml_r2.so 
(mca_bml_r2_progress+0x36)

[0x645d06]
[trantor:06601] [ 3]
/usr/local/openmpi/1.2.3/lib/libopen-pal.so.0(opal_progress+0x58)
[0x1a2c88]
[trantor:06601] [ 4]
/usr/local/openmpi/1.2.3/lib/libmpi.so.0(ompi_request_wait_all+0xea)
[0x140a8a]
[trantor:06601] [ 5]
/usr/local/openmpi/1.2.3/lib/openmpi/mca_coll_tuned.so 
(ompi_coll_tuned_sendrecv_actual+0xc8)

[0x22d6e8]
[trantor:06601] [ 6]
/usr/local/openmpi/1.2.3/lib/openmpi/mca_coll_tuned.so 
(ompi_coll_tuned_allgather_intra_bruck+0xf2)

[0x231ca2]
[trantor:06601] [ 7]
/usr/local/openmpi/1.2.3/lib/openmpi/mca_coll_tuned.so 
(ompi_coll_tuned_allgather_intra_dec_fixed+0x8b)

[0x22db7b]
[trantor:06601] [ 8]
/usr/local/openmpi/1.2.3/lib/libmpi.so.0(ompi_comm_split+0x9d)
[0x12d92d]
[trantor:06601] [ 9]
/usr/local/openmpi/1.2.3/lib/libmpi.so.0(MPI_Comm_split+0xad)
[0x15a53d]
[trantor:06601] [10] /u/dalcinl/lib/python/mpi4py/_mpi.so [0x508500]
[trantor:06601] [11]
/usr/local/lib/libpython2.5.so.1.0(PyCFunction_Call+0x14d) [0xe150ad]
[trantor:06601] [12]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalFrameEx+0x64af)
[0xe626bf]
[trantor:06601] [13]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalCodeEx+0x7c4) [0xe63814]
[trantor:06601] [14]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalFrameEx+0x5a43)
[0xe61c53]
[trantor:06601] [15]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalFrameEx+0x6130)
[0xe62340]
[trantor:06601] [16]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalCodeEx+0x7c4) [0xe63814]
[trantor:06601] [17] /usr/local/lib/libpython2.5.so.1.0 [0xe01450]
[trantor:06601] [18]
/usr/local/lib/libpython2.5.so.1.0(PyObject_Call+0x37) [0xddf5c7]
[trantor:06601] [19]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalFrameEx+0x42eb)
[0xe604fb]
[trantor:06601] [20]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalCodeEx+0x7c4) [0xe63814]
[trantor:06601] [21] /usr/local/lib/libpython2.5.so.1.0 [0xe0137a]
[trantor:06601] [22]
/usr/local/lib/libpython2.5.so.1.0(PyObject_Call+0x37) [0xddf5c7]
[trantor:06601] [23] /usr/local/lib/libpython2.5.so.1.0 [0xde6de5]
[trantor:06601] [24]
/usr/local/lib/libpython2.5.so.1.0(PyObject_Call+0x37) [0xddf5c7]
[trantor:06601] [25] /usr/local/lib/libpython2.5.so.1.0 [0xe2abc9]
[trantor:06601] [26]
/usr/local/lib/libpython2.5.so.1.0(PyObject_Call+0x37) [0xddf5c7]
[trantor:06601] [27]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalFrameEx+0x1481)
[0xe5d691]
[trantor:06601] [28]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalCodeEx+0x7c4) [0xe63814]
[trantor:06601] [29] /usr/local/lib/libpython2.5.so.1.0 [0xe01450]
[trantor:06601] *** End of error message ***


As the problem seems to originate in Comm.Split(), I've written a
small python script to test it::

from mpi4py import MPI

# true MPI_COMM_WORLD_HANDLE
BASECOMM = MPI.__COMM_WORLD__

BASE_SIZE = BASECOMM.Get_size()
BASE_RANK = BASECOMM.Get_rank()

if BASE_RANK < (BASE_SIZE // 2) :
COLOR = 0
else:
COLOR = 1

INTRACOMM = BASECOMM.Split(COLOR, key=0)
print 'Done!!!'

This seems always work, but running it under valgrind (note
valgrind-py below is just an alias adding a suppression file for
python) I get the following:

mpiexec -n 3 valgrind-py python test.py

=6727== Warning: set address range perms: large range 134217728  
(defined)
==6727== Source and destination overlap in memc

[OMPI devel] failures runing mpi4py testsuite, perhaps Comm.Split()

2007-07-11 Thread Lisandro Dalcin

Ups, sended to wrong list, forwarded here...

-- Forwarded message --
From: Lisandro Dalcin 
List-Post: devel@lists.open-mpi.org
Date: Jul 11, 2007 8:58 PM
Subject: failures runing mpi4py testsuite, perhaps Comm.Split()
To: Open MPI 


Hello all, after a long time I'm here again. I am improving mpi4py in
order to support MPI threads, and I've found some problem with latest
version 1.2.3

I've configured with:

$ ./configure --prefix /usr/local/openmpi/1.2.3 --enable-mpi-threads
--disable-dependency-tracking

However, for the following fail, MPI_Init_thread() was not used. This
test creates a intercommunicator by using Comm.Split() followed by
Intracomm.Create_intercomm(). When running in two or more procs (for
one proc this test is skipped), I got (sometimes) the following trace

[trantor:06601] *** Process received signal ***
[trantor:06601] Signal: Segmentation fault (11)
[trantor:06601] Signal code: Address not mapped (1)
[trantor:06601] Failing at address: 0xa8
[trantor:06601] [ 0] [0x958440]
[trantor:06601] [ 1]
/usr/local/openmpi/1.2.3/lib/openmpi/mca_btl_sm.so(mca_btl_sm_component_progress+0x1483)
[0x995553]
[trantor:06601] [ 2]
/usr/local/openmpi/1.2.3/lib/openmpi/mca_bml_r2.so(mca_bml_r2_progress+0x36)
[0x645d06]
[trantor:06601] [ 3]
/usr/local/openmpi/1.2.3/lib/libopen-pal.so.0(opal_progress+0x58)
[0x1a2c88]
[trantor:06601] [ 4]
/usr/local/openmpi/1.2.3/lib/libmpi.so.0(ompi_request_wait_all+0xea)
[0x140a8a]
[trantor:06601] [ 5]
/usr/local/openmpi/1.2.3/lib/openmpi/mca_coll_tuned.so(ompi_coll_tuned_sendrecv_actual+0xc8)
[0x22d6e8]
[trantor:06601] [ 6]
/usr/local/openmpi/1.2.3/lib/openmpi/mca_coll_tuned.so(ompi_coll_tuned_allgather_intra_bruck+0xf2)
[0x231ca2]
[trantor:06601] [ 7]
/usr/local/openmpi/1.2.3/lib/openmpi/mca_coll_tuned.so(ompi_coll_tuned_allgather_intra_dec_fixed+0x8b)
[0x22db7b]
[trantor:06601] [ 8]
/usr/local/openmpi/1.2.3/lib/libmpi.so.0(ompi_comm_split+0x9d)
[0x12d92d]
[trantor:06601] [ 9]
/usr/local/openmpi/1.2.3/lib/libmpi.so.0(MPI_Comm_split+0xad)
[0x15a53d]
[trantor:06601] [10] /u/dalcinl/lib/python/mpi4py/_mpi.so [0x508500]
[trantor:06601] [11]
/usr/local/lib/libpython2.5.so.1.0(PyCFunction_Call+0x14d) [0xe150ad]
[trantor:06601] [12]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalFrameEx+0x64af)
[0xe626bf]
[trantor:06601] [13]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalCodeEx+0x7c4) [0xe63814]
[trantor:06601] [14]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalFrameEx+0x5a43)
[0xe61c53]
[trantor:06601] [15]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalFrameEx+0x6130)
[0xe62340]
[trantor:06601] [16]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalCodeEx+0x7c4) [0xe63814]
[trantor:06601] [17] /usr/local/lib/libpython2.5.so.1.0 [0xe01450]
[trantor:06601] [18]
/usr/local/lib/libpython2.5.so.1.0(PyObject_Call+0x37) [0xddf5c7]
[trantor:06601] [19]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalFrameEx+0x42eb)
[0xe604fb]
[trantor:06601] [20]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalCodeEx+0x7c4) [0xe63814]
[trantor:06601] [21] /usr/local/lib/libpython2.5.so.1.0 [0xe0137a]
[trantor:06601] [22]
/usr/local/lib/libpython2.5.so.1.0(PyObject_Call+0x37) [0xddf5c7]
[trantor:06601] [23] /usr/local/lib/libpython2.5.so.1.0 [0xde6de5]
[trantor:06601] [24]
/usr/local/lib/libpython2.5.so.1.0(PyObject_Call+0x37) [0xddf5c7]
[trantor:06601] [25] /usr/local/lib/libpython2.5.so.1.0 [0xe2abc9]
[trantor:06601] [26]
/usr/local/lib/libpython2.5.so.1.0(PyObject_Call+0x37) [0xddf5c7]
[trantor:06601] [27]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalFrameEx+0x1481)
[0xe5d691]
[trantor:06601] [28]
/usr/local/lib/libpython2.5.so.1.0(PyEval_EvalCodeEx+0x7c4) [0xe63814]
[trantor:06601] [29] /usr/local/lib/libpython2.5.so.1.0 [0xe01450]
[trantor:06601] *** End of error message ***


As the problem seems to originate in Comm.Split(), I've written a
small python script to test it::

from mpi4py import MPI

# true MPI_COMM_WORLD_HANDLE
BASECOMM = MPI.__COMM_WORLD__

BASE_SIZE = BASECOMM.Get_size()
BASE_RANK = BASECOMM.Get_rank()

if BASE_RANK < (BASE_SIZE // 2) :
   COLOR = 0
else:
   COLOR = 1

INTRACOMM = BASECOMM.Split(COLOR, key=0)
print 'Done!!!'

This seems always work, but running it under valgrind (note
valgrind-py below is just an alias adding a suppression file for
python) I get the following:

mpiexec -n 3 valgrind-py python test.py

=6727== Warning: set address range perms: large range 134217728 (defined)
==6727== Source and destination overlap in memcpy(0x4C93EA0, 0x4C93EA8, 16)
==6727==at 0x4006CE6: memcpy (mc_replace_strmem.c:116)
==6727==by 0x46C59CA: ompi_ddt_copy_content_same_ddt (in
/usr/local/openmpi/1.2.3/lib/libmpi.so.0.0.0)
==6727==by 0x4BADDCE: ompi_coll_tuned_allgather_intra_bruck (in
/usr/local/openmpi/1.2.3/lib/openmpi/mca_coll_tuned.so)
==6727==by 0x4BA9B7A: ompi_coll_tuned_allgather_intra_dec_fixed
(in /usr/local/openmpi/1.2.3/lib/openmpi/mca_coll_tuned.so)
==6727==by 0x46A692C: ompi_comm_split (in
/usr/local/openmpi/1.2.3/lib/libmpi.so.0.0.0)
==6

[OMPI devel] Notes on building and running Open MPI on Red Storm

2007-07-11 Thread Glendenning, Lisa
Some supplementary information to the wiki at
https://svn.open-mpi.org/trac/ompi/wiki/CrayXT3.


I. Accessing the Open MPI source:

  * Subversion is installed on redstorm in /projects/unsupported/bin

  * Reddish has subversion in the default path (you don't have to load a
module)

  * The proxy information in the wiki is accurate, and works on both
redstorm and reddish


II. Building Open MPI on reddish:

  * 'module load PrgEnv-pgi-xc' to cross compile for redstorm

  * Reddish and redstorm do not have recent enough version of autotools,
so you must build your own (currently available in
/project/openmpi/rbbrigh/tools)

  * Suggested configuration: 'configure CC=qk-gcc CXX=qk-pgCC
F77=qk-pgf77 FC=qk-pgf90 --disable-mpi-profile --with-platform=redstorm
--host=x86_64-cray-linux-gnu --build=x86_64-unknown-linux-gnu
--disable-mpi-f90 --disable-mem-debug --disable-mem-profile
--disable-debug build_alias=x86_64-unknown-linux-gnu
host_alias=x86_64-cray-linux-gnu'


III. Building with Open MPI:

  * No executables will be installed in $PREFIX/bin, so must compile
without mpicc, e.g. 'qk-gcc -I$PREFIX/include *.c -L$PREFIX/lib -lmpi
-lopen-rte -lopen-pal'

  * When linking with libopen-pal, the following warning is normal: 'In
function `checkpoint_response': warning: mkfifo is not implemented and
will always fail'


IV. Running on Redstorm:

  * scp your executable from reddish to redstorm

  * Use 'qsub' to submit job and 'yod' to launch job (if you do an
interactive session, you can bypass PBS)

  * qsub expects project/task information - you can either provide this
with -A option or set it in $XT_ACCOUNT environmental variable

  * Sample job script for qsub with 8 nodes/processes and 10 minute
runtime:

#!/bin/sh
#PBS -lsize=8
#PBS -lwalltime=10:00
cd $PBS_O_WORKDIR
yod a.out

  * Use 'xtshowmesh' and 'qstat' to query job status and cluster
configuration



Re: [OMPI devel] Multi-environment builds

2007-07-11 Thread Joshua Hursey


On Jul 11, 2007, at 8:09 AM, Terry D. Dontje wrote:


Jeff Squyres wrote:


On Jul 10, 2007, at 1:26 PM, Ralph H Castain wrote:




2. It may be useful to have some high-level parameters to specify a
specific run-time environment, since ORTE has multiple, related
frameworks (e.g., RAS and PLS).  E.g., "orte_base_launcher=tm", or
somesuch.




I was just writing this up in an enhancement ticket when the though
hit me: isn't this aggregate MCA parameters?  I.e.:

mpirun --am tm ...

Specifically, we'll need to make a "tm" AMCA file (and whatever other
ones we want), but my point is: does AMCA already give us what we  
want?




The above sounds like a possible solution as long as we are going to
deliver a set of such files and not require each site to create their
own.  Also, can one pull in multiple AMCA files for one run thus  
you can
specify a tm AMCA and possibly some other AMCA file that the user  
may want?


Yep. You can put a ':' between different parameters. So:
 shell$ mpirun -am tm:foo:bar ...
will pull in the three AMCA files 'tm' 'foo' 'bar' in that order of  
precedence. Meaning that 'tm' can override a MCA parameter in 'foo',  
and 'foo' can override a MCA parameter in 'bar'. And any '-mca'  
command line options take a higher precedence than AMCA parameter  
files, so could override MCA parameters set by any of 'tm' 'foo' or  
'bar'.


I'll put it on my list to make a faq entry for AMCA usage, as I don't  
see one.


-- Josh



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



Josh Hursey
jjhur...@open-mpi.org
http://www.open-mpi.org/





Re: [OMPI devel] [OMPI users] warning:regcache incompatible with malloc

2007-07-11 Thread Tim Prins


Scott Atchley wrote:

On Jul 10, 2007, at 3:24 PM, Tim Prins wrote:


On Tuesday 10 July 2007 03:11:45 pm Scott Atchley wrote:

On Jul 10, 2007, at 2:58 PM, Scott Atchley wrote:

Tim, starting with the recently released 1.2.1, it is the default.

To clarify, MX_RCACHE=1 is the default.
It would be good for the default to be something where there is no  
warning

printed (i.e. 0 or 2). I see the warning on the current trunk.

Tim


After further discussion in-house, the warning can be avoided if - 
lmyriexpress is included when linking the app (i.e. if it is in mpicc  
when linking).
We cannot do this since we create network agnostic executables so that 
users can select networks at runtime. Doing -lmyriexpress would put an 
artificial dependency on the myrinet library, even if the user does not 
want to use it.




Another clarification, the regache does work with several replacement  
malloc libraries. If the user application overloads mmap(), munmap()  
and sbrk(), then it may or may not work. In this case, the user  
should use MX_RCACHE=0.

This sounds to me like a lot to ask the user to do...

My opinion is that if MX_RCACHE is not explicitly set by the user, Open 
MPI should set it to either 0 or 2 automatically. An explicit goal Open 
MPI is for it to automatically do the right thing in most cases. Letting 
a ton of warnings be spit out at the user, in my opinion, is the wrong 
thing.


Tim


Re: [OMPI devel] patch for btl_sm.c fixing segmentation fault

2007-07-11 Thread Gleb Natapov
On Wed, Jul 11, 2007 at 01:17:02PM +0200, Christoph Niethammer wrote:
> Hello,
> 
> 
> Since some time I'm testing Open MPI at the HRLS. My main topic there is the 
> thread support of Open MPI.
> 
> Some time ago I found a segmentation fault when running the svn-trunk 
> Version. 
> Thanks to the help of Sven I could locate it now to be in the shared memory 
> btl. (ompi/mca/btl/sm/btl_sm.c)
> There the addresses of the fifos were modified because of the different 
> memory 
> mapping for the threads. Unfortunately this modification was not applied for 
> the head_locks. 
> 
> The attached patch should fix this problem.
> Maybe someone could have a look on it?

I see that Sven is already committed the fix to trunk r15291, but it
seems the better fix would be to allocate tail_lock and head_lock not
from shared memory at all but in a local memory of a process that is
going to use respective lock.

--
Gleb.


Re: [OMPI devel] Multi-environment builds

2007-07-11 Thread Ralph H Castain
Interesting point - no reason why we couldn't use that functionality for
this purpose. Good idea!


On 7/11/07 5:38 AM, "Jeff Squyres"  wrote:

> On Jul 10, 2007, at 1:26 PM, Ralph H Castain wrote:
> 
>>> 2. It may be useful to have some high-level parameters to specify a
>>> specific run-time environment, since ORTE has multiple, related
>>> frameworks (e.g., RAS and PLS).  E.g., "orte_base_launcher=tm", or
>>> somesuch.
> 
> I was just writing this up in an enhancement ticket when the though
> hit me: isn't this aggregate MCA parameters?  I.e.:
> 
> mpirun --am tm ...
> 
> Specifically, we'll need to make a "tm" AMCA file (and whatever other
> ones we want), but my point is: does AMCA already give us what we want?




Re: [OMPI devel] Multi-environment builds

2007-07-11 Thread Terry D. Dontje

Jeff Squyres wrote:


On Jul 10, 2007, at 1:26 PM, Ralph H Castain wrote:

 


2. It may be useful to have some high-level parameters to specify a
specific run-time environment, since ORTE has multiple, related
frameworks (e.g., RAS and PLS).  E.g., "orte_base_launcher=tm", or
somesuch.
 



I was just writing this up in an enhancement ticket when the though  
hit me: isn't this aggregate MCA parameters?  I.e.:


mpirun --am tm ...

Specifically, we'll need to make a "tm" AMCA file (and whatever other  
ones we want), but my point is: does AMCA already give us what we want?
 

The above sounds like a possible solution as long as we are going to 
deliver a set of such files and not require each site to create their 
own.  Also, can one pull in multiple AMCA files for one run thus you can 
specify a tm AMCA and possibly some other AMCA file that the user may want?


--td


Re: [OMPI devel] Multi-environment builds

2007-07-11 Thread Jeff Squyres

On Jul 10, 2007, at 1:26 PM, Ralph H Castain wrote:


2. It may be useful to have some high-level parameters to specify a
specific run-time environment, since ORTE has multiple, related
frameworks (e.g., RAS and PLS).  E.g., "orte_base_launcher=tm", or
somesuch.


I was just writing this up in an enhancement ticket when the though  
hit me: isn't this aggregate MCA parameters?  I.e.:


mpirun --am tm ...

Specifically, we'll need to make a "tm" AMCA file (and whatever other  
ones we want), but my point is: does AMCA already give us what we want?


--
Jeff Squyres
Cisco Systems



[OMPI devel] patch for btl_sm.c fixing segmentation fault

2007-07-11 Thread Christoph Niethammer
Hello,


Since some time I'm testing Open MPI at the HRLS. My main topic there is the 
thread support of Open MPI.

Some time ago I found a segmentation fault when running the svn-trunk Version. 
Thanks to the help of Sven I could locate it now to be in the shared memory 
btl. (ompi/mca/btl/sm/btl_sm.c)
There the addresses of the fifos were modified because of the different memory 
mapping for the threads. Unfortunately this modification was not applied for 
the head_locks. 

The attached patch should fix this problem.
Maybe someone could have a look on it?

Regards 

Christoph
Index: ompi/mca/btl/sm/btl_sm.c
===
--- ompi/mca/btl/sm/btl_sm.c	(Revision 15143)
+++ ompi/mca/btl/sm/btl_sm.c	(Arbeitskopie)
@@ -516,8 +516,11 @@
 /* Calculate the difference as (my_base - their_base) */
 diff = tmp_ptr[mca_btl_sm_component.my_smp_rank] - tmp_ptr[j];
 mca_btl_sm_component.fifo[j] = (ompi_fifo_t*)((char*)fifo_tmp[j]+diff);
+
+mca_btl_sm_component.fifo[j][mca_btl_sm_component.my_smp_rank].head_lock =
+  (opal_atomic_lock_t*) ((char*)mca_btl_sm_component.fifo[j][mca_btl_sm_component.my_smp_rank].head_lock + diff);
+
 mca_btl_sm_component.sm_offset[j] = diff;
-
 }
 
 for( j=mca_btl_sm_component.num_smp_procs ; j <


pgpDKJG53Fh1y.pgp
Description: PGP signature


[OMPI devel] Off topic: ptpd for time synchronization

2007-07-11 Thread Jeff Squyres
This is a bit off-topic for this list, but I was wondering if anyone  
has any experience working with ptpd (precision time protocol daemon;  
following the IEEE 1588 spec).  The point of ptpd is to give better  
time precision than NTP; NTP gives accuracy on the order of  
miliseconds where ptpd/IEEE 1588 gives accuracy on the order of  
microseconds.


http://ptpd.sourceforge.net/

Having coordination accuracy within miliseconds could be quite  
helpful to MPI in multiple ways: giving more accurate MPI tracing  
outputs, the possibility of scheduling communication (particularly  
for MPI collectives) in oversubscribed networks, etc.


I'd like to give ptpd a whirl, but there's very little documentation  
and I can't find any mailing lists or other points of contact where  
to ask a few questions.


In particular, I would like to run ptpd in a way that I'm guessing  
would be fairly common in HPC environments: use NTP to get the time  
to my cluster's head node and then use ptpd to synchronize my cluster  
to the NTP'ed head node.  However, it's not clear to me how ptpd  
works -- how do I designate one head node as the "master"?  What,  
exactly, do all the command line options to ptpd mean?  (there's only  
a limited "--help" kind of message to explain them)  And so on.


I have a busy/active cluster, so I don't want to muck up the clock  
(and therefore potentially muck up NFS file timestamps) -- some level  
of experimentation is ok, but I don't want to unintentionally cause a  
large/bad effect (particularly in terms of NFS) if possible.  I'm  
also curious as to how much network overhead ptpd incurs, both at  
startup and in its steady state operation.


If anyone has any insight or experience with ptpd, I'd love to hear  
it.  Thanks!


--
Jeff Squyres
Cisco Systems