Memory barrier for fat initialization

Niels Möller nisse at lysator.liu.se
Tue Jan 13 21:09:01 UTC 2015


tg at gmplib.org (Torbjörn Granlund) writes:

> It would not break any language rules, afaik.

It would break reasonable expectations of threaded programs intended for
the x86 platform...

> Before we worry too much, we might want to determine if this could ever
> be a real problem.  I.e., what happens if only some arbitrary subset of
> the cpuvec structure is initialised?

A problematic case is if the sqr_basescasse ptr is initialized, and we
get an out-of-sync and too large, value for the corresponding threshold,
which that implementation can't handle. Not sure what other cases there
are. IIRC.

> If that's bad, could we *compile*
> in initial values which are safe, even if some arbitrary values are then
> modified?

Sounds doable for the sqr_basecase threshold, at least.

On the other hand, on x86_64, maybe all chips we care about have the
needed extensions, so it's *easy* to add an mfence or sfence instruction
and not have to worry? I guess 32-bit x86 is more painful, since I guess
we'd have to check if the instructions are available.

Regards,
/Niels

-- 
Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26.
Internet email is subject to wholesale government surveillance.


More information about the gmp-devel mailing list