[Bench!][Mir] +54%..+185% performance boost for Mersenne Twister.
Joseph Rushton Wakeling via Digitalmars-d
digitalmars-d at puremagic.com
Sat Jan 7 15:16:26 PST 2017
On Saturday, 26 November 2016 at 20:13:36 UTC, Andrei
Alexandrescu wrote:
> On 11/26/16 11:31 AM, Ilya Yaroshenko wrote:
>> Hey,
>>
>> 32-bit Mt19937 random number Generator is default in Phobos.
>> It is default in Mir too, except that 64-bit targets use
>> 64-bit Mt19937 instead.
>
> Congrats! Also thanks for using the Boost license which would
> allow backporting the improvements to Phobos. Who'd be up for
> it?
PR is now on Phobos, and in the process of looking at this
together, Ilya and I resolved a number of issues both in this
code and in mir.random:
https://github.com/dlang/phobos/pull/5011
There is unfortunately one serious blocker to this PR. In order
to allow it to be a drop-in replacement for the previous Phobos
implementation, I had to find a means to default-initialize its
internal state at compile time so that it would match what would
be there if it was explicitly seeded with the default seed.
The method I developed works fine with LDC, but fails with DMD:
the internal state of the generator winds up as all zeros, except
for the `State.z` parameter which mysteriously ends up at the
correct value. This would suggest that somehow the generated
state is being overwritten _after_ being correctly generated,
rather than not correctly generated in the first place.
Any chance that someone with more CTFE-fu than myself could take
a glance and advise what might be wrong (or how to work around
it)?
More information about the Digitalmars-d
mailing list