> > There is no guarantee that NIC/network based atomics will be coherent with > CPU based atomics, or that they will be coherent between NICs, or the final > result will even be atomic. [...] > > Would I be correct in reading that last clause as “or [that] the [visibility > of the] final result will even be atomic”, meaning that visibility of one > subpart (byte, for example) of the result should not be taken as evidence of > visibility of the whole? Or in other words, that the paragraph about CPU > visibility provides the only guarantees of visibility. (So if tearing occurs, > it will have been dealt with before that guaranteed-visible point.)
I wasn't trying to write spec language. :) The point I was making above was related to data correctness. If 2 or more 'actors' are both performing atomic operations on the same target memory, the result is undefined. An actor can be a NIC or CPU. E.g. An atomic through NIC A adds 1 to each element. An atomic through NIC B subtracts 1 to each element. The results may end up with each element unchanged, incremented by 1, or decremented by 1. And the change may not be the same for each element -- some may be +1, some -1, some unchanged. The visibility discussion in the man page is describing when another actor can see the results of an atomic operation. Before a second actor can perform atomic operations on a target region, the results of the first actor must first be visible. This would ensure that the target region is updated in a consistent manner. - Sean _______________________________________________ ofiwg mailing list [email protected] https://lists.openfabrics.org/mailman/listinfo/ofiwg
