(j3.2006) (SC22WG5.3712) [ukfortran] Atomic stuff
N.M. Maclaren
nmm1 at cam.ac.uk
Wed Dec 3 13:14:52 EST 2008
On Dec 3 2008, Jim Xia wrote:
>
>Now I take another look at the atomic stuff we worked out in Tokyo, I
>think there is an issue we didn't address: alignment. Consider on a
>system we have atomic_integer_kind being 4 bytes, and the processor also
>supports 2 byte integers, then the following declarations
>
> integer(2) x(3)
> integer(ATOMIC_INTEGER_KIND) y, z
>
> equivalence (y, x(2))
> equivalence (z, x)
>
>Now either y or z is out of natural alignment. This will certainly cause
>implementation problems on atomic operations on y and z. We have to
>disallow this to happen.
Already done for that example - see Note 5.42 in 5.7.1.5. But let's say
that we make the appropriate changes to avoid that. Then it is clobbered by
constraint C589, C590, C591 and 4.5.2.3.
The problem has been there since time immemorial in the case of systems
where unaligned access is not supported (especially for DOUBLE PRECISION).
Yes, I know that the IBM System/360 (sic) Fortran library trapped the
interrupts and fixed up the alignment, but that was a performance disaster,
not all compilers did and some still don't. But, curiously, I can't find
where that that one is locked out.
Regards,
Nick Maclaren,
University of Cambridge Computing Service,
New Museums Site, Pembroke Street, Cambridge CB2 3QH, England.
Email: nmm1 at cam.ac.uk
Tel.: +44 1223 334761 Fax: +44 1223 334679
More information about the J3
mailing list