Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: Re: [OMPI devel] [EXTERNAL] non-blocking collectives, SPARC, and alignment
From: Barrett, Brian W (bwbarre_at_[hidden])
Date: 2012-07-16 16:45:17

Eugene -

It's unlikely that I will have time to fix this in the short term. The
scheduling code is fairly localized in nbc.c if Oracle has some time to
spend looking at these issues. If not, it might be best to remove the
libnbc code from 1.7, as it's unfortunately clear that it's not as ready
for integration as we believed and I don't have time to fix the code base.


On 7/16/12 2:50 PM, "Eugene Loh" <eugene.loh_at_[hidden]> wrote:

>The NBC functionality doesn't fare very well on SPARC. One of the
>problems is with data alignment. An NBC schedule is a number of
>variously sized fields laid out contiguously in linear memory (e.g.,
>see nbc_internal.h or nbc.c) and words don't have much natural
>alignment. On SPARC, the "default" (for some definition of that word)
>is to sigbus when a word is not properly aligned. In any case (even
>non-SPARC), one might argue misalignment and subsequent exception
>handling is nice to avoid.
>Here are two specific issues.
>*) Schedule layout uses single-char delimiters between "round
>schedules". So, even if the first "round schedule" has nice alignment,
>the second will have single-byte offsets for its components.
>*) 8-byte pointers can fall on 4-byte boundaries. E.g., say a schedule
>starts on some "nice" alignment. The first words of the schedule will be:
> int total size of the schedule
> int number of elements in the first round schedule
> enum type of function
> void * pointer to some buffer
>So, with -m64, that 8-byte pointer is on a 12-byte boundary.
>Any input/comments on how to proceed?
>devel mailing list