-malign-double

Jed Brown jed at 59A2.org
Sat Nov 14 12:43:46 CST 2009


Barry Smith wrote:
> 
> On Nov 14, 2009, at 11:28 AM, Jed Brown wrote:
> 
>> Barry Smith wrote:
>>>
>>>
>>>   Good point, I have removed it.
>>>
>>>   I put it in because I wanted an easy way to test that PETSc double
>>> arrays are always 8 byte aligned (and the unaligned struct values were
>>> giving me lots of false alarms).
>>
>> A related issue is PetscMallocN which (in optimized mode) gives
>> unaligned arrays even if malloc always returns aligned memory.  Consider
>>
>>  PetscMalloc2(3,PetscInt,&ai,3,PetscScalar,&a);
> 
>    This call is illegal. You are required to pass the longest aligned
> arrays first leading the shortest. Hence The PetscScalar should be
> before the PetscInt.
> 
>    The debug mode should check that this requirement is satisfied; it
> currently does not check anything.

If nothing ever checks and the docs don't specify, it's valid.

>    In the real world when any of these beasts can be 32 bit or 64 bit
> one cannot always put them in the right order; but for now they should
> be ordered, PetscScalar, pointer, PetscInt

What advantage does this have over just aligning all the pointers (even
to 16-byte to enable movapd and prevent many loads across a cacheline
split, see http://x264dev.multimedia.cx/?p=8)?  The arithmetic and few
wasted bytes is trivial compared to the cost of the allocation, so I
don't see a reason not to.

Jed

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 261 bytes
Desc: OpenPGP digital signature
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20091114/df46f8dc/attachment.sig>


More information about the petsc-dev mailing list