(j3.2006) (SC22WG5.4480) Added atomic
Fri Jun 17 12:07:08 EDT 2011
The list of comments on the coarray TR from Rice suggested adding a SWAP
atomic subroutine. The list in 11-200 includes all of the "common"
atomic operations except one: atomic andxor. I'm inclined to add that
one, which would make SWAP unnecessary. Or we could add both. For those
who are not big amo users...
subroutine atomic_andxor (atom, andmask, xormask)
atom - variable atomically updated according to
atom = ieor ( iand (atom, andmask), xormask))
subroutine atomic_fandxor (atom, andmask, xormask, old)
similar to atomic_fandxor except old is set to the old value of atom.
If andmask is all 0 bits, and xormask is the new value, then the effect
is to set atom to the new value and old to the old one. Can be used to
do a swap.
The real virtue of this operation is that it allows you to atomically
define a subset of the bits in the atom variable.
If this is added, is there a need for a separate atomic_swap?
Bill Long longb at cray.com
Fortran Technical Support & voice: 651-605-9024
Bioinformatics Software Development fax: 651-605-9142
Cray Inc./Cray Plaza, Suite 210/380 Jackson St./St. Paul, MN 55101
More information about the J3