On Mon, 27 Aug 2012, Ulrich Drepper wrote:
This is done in the attached patch. It's rather ugly because of the business with the TR1 support. Is this really still needed? Can't we remove that? It really makes not much sense for a random_device to be predictable.
Er, I haven't read the context, but for simulations physicists usually require that random generators can be repeated, so 2 simulations with the same seed give the same results. But that may not be what you meant with predictable.
Anyway, another change in the patch is support for a less expensive implementation on Ivy Bridge processors. That processor has the rdrand instruction. The code uses it if the instruction is usable. Has been tested on real hardware. This is not the type of arch-specific code I meant earlier. Will get to that tomorrow. There are other architectures with similar instructions. Adding support for those will be simple.
I assume they are different enough that they can't all be abstracted behind a nice common builtin (with default implementation in libgcc and/or a macro advertising fast implementations of it) :-( -- Marc Glisse