[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OMPI devel] Build failures of 1.2.3 on Debian hppa, mips, mipsel, s390, m68k



On Sat, Jul 14, 2007 at 10:47:52AM -0600, Brian Barrett wrote:
> Open MPI uses some assembly for things like atomic locks, atomic  
> compare and swap, memory barriers, and the like.
[...]
> We don't currently have support for a non-assembly code path.  We  
> originally planned on having one, but the team went away from that  
> route over time and there's no way to build Open MPI without assembly  
> support right now.

Hi Brian,

PA-RISC (aka hppa) has only two atomic instructions -- load and clear
word and load and clear doubleword (ie 32-bit and 64-bit -- and the
latter is available only on 64-bit platforms).  In addition, the address
of the word/dword must be 32-byte aligned [1].

This makes implementing atomic functionality "interesting", to say
the least.  Carlos O'Donell has implemented some kernel helper routines
to aide this, but that would tie the implementation to linux -- I don't
know if you care to support HPUX or not.

If you can implement a non-assembly codepath in terms of POSIX
constructs, that would be enormously helpful, albeit somewhat
slower on some architectures.  Another non-assembly approach which
might be of interest would be to use the functions documented here:
http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html
This sounds like it would match your requirements somewhat better.

[1] This is according to the architecture specifications.  In terms of
implementations, the restriction is relaxed on more recent processors.

-- 
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."



Reply to: