[mpich2-dev] [opa-core] Problem with MPICH2 1.1 during MPI_Init() on PPC Linux 32bit
Dave Goodell
goodell at mcs.anl.gov
Tue Jun 9 15:55:59 CDT 2009
[adding Sameer]
On Jun 9, 2009, at 3:23 PM, Darius Buntinas wrote:
> I see that there is a comment in opa_gcc_ppc.h that "these need to be
> aligned on an 8-byte boundary to work on a BG/P." Do you know if this
> is true?
>
> Dave, this looks like your comment. Can you comment?
This was a restriction that Sameer told me was needed for lwarx/stcwx
to preserve atomicity on BG/P when we visited Watson last summer. I
don't know for sure whether or not it is needed, I just took Sameer's
statement at face value.
> Should this be changed to "OPA_ATTRIBUTE((aligned (SIZEOF_VOID_P)))"
> to
> handle different pointer sizes (similarly for SIZEOF_INT for ints)?
I think the bigger question is whether or not the assertion is
sensible. I don't know why the cell rel pointer structure needs to be
exactly the same size as a pointer as long as it contains a pointer
value...
> -d
>
> On 06/09/2009 03:04 PM, Joe Ratterman wrote:
>> This is the error I'm seeing:
>>
>> Assertion failed in file mpid_nem_init.c at line 89:
>> sizeof(MPID_nem_cell_rel_ptr_t) == 4
>>
>>
>>
>> This appears to be the important code from the pre-processed version
>> of mpid_nem_init.c
>>
>>
>> # 11
>> "/bglhome/usr1/jratt/src-sles10/mpich2/mpich2-1.1/src/openpa/src/
>> primitives/opa_gcc_ppc.h"
>> typedef struct { volatile int v __attribute__ ((aligned (8))); }
>> OPA_int_t;
>> typedef struct { void * volatile v __attribute__ ((aligned
>> (8))); }
>> OPA_ptr_t;
>>
>> # 188 "../include/mpid_nem_datatypes.h"
>> typedef struct MPID_nem_cell_rel_ptr
>> {
>> OPA_ptr_t p;
>> }
>> MPID_nem_cell_rel_ptr_t;
>>
>> # 135 mpid/ch3/include/mpidi_ch3_conf.h
>>
>> #define SIZEOF_VOID_P 4
>>
>> # 85 mpid_nem_init.c
>> /* The MPID_nem_cell_rel_ptr_t defined in mpid_nem_datatypes.h
>> * should only contain a pointer. Also, we don't support
>> compilers
>> * which add random padding to the start of the structure. The
>> * below assert should blow up if any of these happens. */
>> MPIU_Assert(sizeof(MPID_nem_cell_rel_ptr_t) == SIZEOF_VOID_P);
>>
>>
>>
>> Given the above code, the size of that type appears to be 8 in both
>> GCC
>> and XLC. I see that the alignment is hard-coded to 8 in
>> src/openpa/src/primitives/opa_gcc_ppc.h. Changing that first line
>> to an
>> alignment of 4, the type size shrinks to 4 (correspondingly,
>> increasing
>> it to 16 increases the type size as well).
>>
>> Changing the file to 4 and recompiling things allows a few simple
>> tests
>> to work fine--I haven't tried too much more.
>>
>>
>>
>> Thanks,
>> Joe Ratterman
>> jratt at us.ibm.com <mailto:jratt at us.ibm.com>
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> opa-core mailing list
>> opa-core at lists.mcs.anl.gov
>> https://lists.mcs.anl.gov/mailman/listinfo/opa-core
More information about the mpich2-dev
mailing list