Re: [Computer-go] Learning from CGOS

2015-03-29 Thread Urban Hafner
Awesome Joshua! I agree with the others. Start open sourcing it right away.
That's what I did with my Go bot that I started writing in a language I
didn't know. And people (well, two ;)) just decided to help out.

As for features. Well, I'd be happy if you just reimplemented CGOS and it
were running all the time for all three sizes. ;) There are only minor
things I'd like to change:

1. The standings page could update more frequently
2. The length of the usernames is a bit restricting for me as my bot is
called Iomrascálaí which almost takes up all 16 (?) characters. Adding a
version number and some identifiers for various command line parameters
gets difficult then.
3. On that topic. Allowing characters other than ASCII in a username would
be nice, too. It's 2015 after all.

Other than that, I'm happy with the way it's set up.

Urban

On Sat, Mar 28, 2015 at 11:58 PM, Joshua Shriver  wrote:

> What elements did you like about CGOS and what do you wish for?
>
> I've begun writing a new version from scratch that isn't TCL based.
> With the aim for future use and also open source and open to public
> commits.
>
> -Josh
> ___
> Computer-go mailing list
> Computer-go@computer-go.org
> http://computer-go.org/mailman/listinfo/computer-go




-- 
Blog: http://bettong.net/
Twitter: https://twitter.com/ujh
Homepage: http://www.urbanhafner.com/
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] fast + good RNG

2015-03-29 Thread René van de Veerdonk
Looking at the lightest playout version of my bitmap-based 9x9 program
(source-code somewhere in the archives), I spent an estimated 2% of the
time generating random numbers, so 40% seems to indicate something is not
right, such as re-initializing the generator all the time.

The execution time of my engine breaks down sort-of like this on my MacBook:

benchmarking Mersenne Twister (SFMT version [following Agner Fog])
  [BRandom] = 1, [IRandom] = 1, [IRandomX] = 2, [Random] = 2, [FRandom] = 2

benchmarking playouts (clock cycles)
  [game] = 18051 cc, [moves] = 111.07

benchmarking playouts (wall time)
  [game] = 126.108 kpps, [moves] = 111.07

benchmarking board functions (calls per game/clock cycles)
  [select] 111/55, [play] 106/93, [score] 14, [win] 0.4251

benchmarking move generator (calls per game/clock cycles, find+pick)
  [moves] 111
[random] 111/17+36

This last line breaks down move-generation in finding all legal moves
(17cc, using Gunnar Farneback's Brown programs definition of legal) and
picking one uniformly at random (36cc). That last method uses 1-3 random
numbers of 1cc each. A move takes 55 + 93 = 148cc, so 3cc represents at
most 2%.

Things get a bit messier to assess once you consider waterfalling moves,
such as captures, atari extensions, etc. In general, though, going towards
heavier playouts will only reduce the time spent on random number
generation because you will have to maintain more data or perform more
logic. In any case, spending more than a handful of cc on random number
generation is not needed and, thus, random number generation should not be
high on your resource consumption list.

For reference, an old profile report for a non-bitmap heavier MCTS-player
reports 1.1% of time was spent on random number generation.

René

BTW. The average game-length using a uniformly random move-generator is a
pretty good correctness test.

On Sun, Mar 29, 2015 at 10:16 PM, Petri Pitkanen  wrote:

> Assuming you are using some sensible OS there better ways profile than
> sample like oprofile for linux. There is similar thing for FreeBSD I
> think.  No instrumentation san sampling gets automated
>
> Petri
>
> 2015-03-30 8:05 GMT+03:00 hughperkins2 :
>
>> 40% sounds pretty high. Are you sure its not an artefact of your
>> profiling implementation?
>>
>> I prefer not to instrument, but to sample stack traces. You can do this
>> using gdb by pressing ctrl-c, then type bt. Do this 10 times, and look for
>> the parts of the stack that occur often.
>>
>>
>> ___
>> Computer-go mailing list
>> Computer-go@computer-go.org
>> http://computer-go.org/mailman/listinfo/computer-go
>>
>
>
> ___
> Computer-go mailing list
> Computer-go@computer-go.org
> http://computer-go.org/mailman/listinfo/computer-go
>
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] fast + good RNG

2015-03-29 Thread Petri Pitkanen
Assuming you are using some sensible OS there better ways profile than
sample like oprofile for linux. There is similar thing for FreeBSD I
think.  No instrumentation san sampling gets automated

Petri

2015-03-30 8:05 GMT+03:00 hughperkins2 :

> 40% sounds pretty high. Are you sure its not an artefact of your profiling
> implementation?
>
> I prefer not to instrument, but to sample stack traces. You can do this
> using gdb by pressing ctrl-c, then type bt. Do this 10 times, and look for
> the parts of the stack that occur often.
>
>
> ___
> Computer-go mailing list
> Computer-go@computer-go.org
> http://computer-go.org/mailman/listinfo/computer-go
>
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] fast + good RNG

2015-03-29 Thread hughperkins2
40% sounds pretty high. Are you sure its not an artefact of your profiling 
implementation?

I prefer not to instrument, but to sample stack traces. You can do this using 
gdb by pressing ctrl-c, then type bt. Do this 10 times, and look for the parts 
of the stack that occur often. 

___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Learning from CGOS

2015-03-29 Thread Adrian Petrescu
I encourage you to work in the open from the start (on GitHub) so everyone
can see what you have in mind.

On Sat, Mar 28, 2015 at 6:59 PM Joshua Shriver  wrote:

> What elements did you like about CGOS and what do you wish for?
>
> I've begun writing a new version from scratch that isn't TCL based.
> With the aim for future use and also open source and open to public
> commits.
>
> -Josh
> ___
> Computer-go mailing list
> Computer-go@computer-go.org
> http://computer-go.org/mailman/listinfo/computer-go
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Learning from CGOS

2015-03-29 Thread Xavier Combelle
In which langage will it be ?

2015-03-28 23:58 GMT+01:00 Joshua Shriver :

> What elements did you like about CGOS and what do you wish for?
>
> I've begun writing a new version from scratch that isn't TCL based.
> With the aim for future use and also open source and open to public
> commits.
>
> -Josh
> ___
> Computer-go mailing list
> Computer-go@computer-go.org
> http://computer-go.org/mailman/listinfo/computer-go
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] fast + good RNG

2015-03-29 Thread Urban Hafner

>  29.03.2015 um 12:29 schrieb Álvaro Begué :
> 
> If your PRNG is consuming 40% of your CPU time, your playouts are too light.

That's what I was going to say, too. My program isn't the fastest (5k pps on 
9x9) and the RNG never even appeared in the profiling output. 

Urban
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] fast + good RNG

2015-03-29 Thread Dave Dyer

>
>Anyway, it's very easy to make a fast PRNG these days. 

A couple words of caution about hacking PNRG.   

Back in the stone age of computing, some mavens from the triple-i movie
group cooked up a "galaxy simulator" which generated pictures of spiral
galaxies based on a numerical model.  The capability to make pictures was 
rare at the time.

The pictures sucked.  After lots of hunting for flaws in the model,
and tweaking it, the real cause for the poor quality was determined to be
that fortran's "random" numbers weren't very good.  Substitute a better
PRNG, and beautiful pictures emerged.

--

On a similar note, working with a UCT robot for a blokus clone at
boardspace.net, I found that tiny changes in the way PRNG's were used
had measurable effects on the quality of play.  Not necessarily better 
or worse, just different.

--

So if you're going to hack the PRNG, you should retain the ability
to use a gold standard PRNG instead of your faster-better-cheaper
model, and you should use it once in a while, just to be sure you're
not introducing hidden flaws.

___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] fast + good RNG

2015-03-29 Thread Kahn Jonas

I just think Go (except trivial implementation cases) should be very
insensitive to RNGs.  It is not like many Monte Carlo applications where
you just call the RNG in a tight loop in regular manner to move in the
same state space.  In a Go program, you call the RNG from playouts in
all sorts of irregular cases to pick out of available patterns
/liberties/neighbor groups, to check whether to apply a given
heuristic, and the set of moves to pick from shift-shapes continuously.
Even with a short-period RNG, you always use that number to decide
something else.

One of these times, I'll check if Pachi can still play Go with RNG
being (seed += 1313) % max.


You're right, a simple LCG is probably more than sufficient.

Jonas
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] fast + good RNG

2015-03-29 Thread Petr Baudis
On Sun, Mar 29, 2015 at 01:08:20PM +0200, Kahn Jonas wrote:
> Why not xorshift+128 ?

Because I wasn't aware of it.  Nice!

But I probably won't remember the code by heart like I do
seed * prime_near_2^14.  ;-)

> Period is $2^128 - 1$, more than sufficient for go. (If you need longer 
> periods, use longer keys, I guess). And the code is easy.

I just think Go (except trivial implementation cases) should be very
insensitive to RNGs.  It is not like many Monte Carlo applications where
you just call the RNG in a tight loop in regular manner to move in the
same state space.  In a Go program, you call the RNG from playouts in
all sorts of irregular cases to pick out of available patterns
/liberties/neighbor groups, to check whether to apply a given
heuristic, and the set of moves to pick from shift-shapes continuously.
Even with a short-period RNG, you always use that number to decide
something else.

One of these times, I'll check if Pachi can still play Go with RNG
being (seed += 1313) % max.

Petr Baudis
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] fast + good RNG

2015-03-29 Thread Kahn Jonas

Why not xorshift+128 ?

*
include 

/* The state must be seeded so that it is not everywhere zero. */
uint64_t s[2];

uint64_t xorshift128plus(void) {
uint64_t x = s[0];
uint64_t const y = s[1];
s[0] = y;
x ^= x << 23; // a
x ^= x >> 17; // b
x ^= y ^ (y >> 26); // c
s[1] = x;
return x + y;
}
**

It passes even more tests of randomness than Mersenne, according to Wikipedia (easily checkable, that's BigCrush, a standard test suite, the hardest usual one), 
and is 2.5x times faster, according to a PRNG shootout, though I don't think the author is neutral on the matter.


Period is $2^128 - 1$, more than sufficient for go. (If you need longer 
periods, use longer keys, I guess). And the code is easy.


Jonas


Hmm, I use just a super-naive LCG

   unsigned long hi, lo;
   lo = 16807 * (pmseed & 0x);
   hi = 16807 * (pmseed >> 16);
   lo += (hi & 0x7fff) << 16;
   lo += hi >> 15;
   pmseed = (lo & 0x7fff) + (lo >> 31);
   return ((pmseed & 0x) * max) >> 16;

in Pachi.  Frankly, I think I could get away with just
pmseed = pmseed * 16807 + 12345;
return pmseed % max;

Do you really need high quality RNG in your program?  I'd be interested
if someone using a sophisticated RNG would compare it with using just
the above wrt. Elo strength and performance.

(BTW, for floats, there's this neat trick to take advantage of the
internal representation

   union { unsigned long ul; floating_t f; } p;
   p.ul = (((pmseed *= 16807) & 0x007f) - 1) | 0x3f80;
   return p.f - 1.0f;

see also http://rgba.org/articles/sfrand/sfrand.htm)

On Sun, Mar 29, 2015 at 05:58:56PM +0800, remco.bloe...@singularityu.org wrote:

I switched to SFMT [0].  But that was some years ago, there might be faster 
options now.

I also generated it in megabyte batches and consume it from there, generating a 
new megabyte as needed.

Lastly, I had some code to make sure I did not consume more bits of entropy 
than required.  Two uniform choices,  one bit.  Three choices: fractional bits.

[0]

http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/

— Remco

-Original Message-
From: folkert 
To: computer-go@computer-go.org
Sent: Sun, 29 Mar 2015 17:50
Subject: [Computer-go] fast + good RNG

Hi,

I measured that std::mt19937_64 (the mersenne twister from the standard
c++ libraries) uses about 40% cpu time during playouts.

So I wonder: is there a faster prng while still generating good enough
random?


Folkert van Heusden

--
Nagios user? Check out CoffeeSaint - the versatile Nagios status
viewer! http://www.vanheusden.com/java/CoffeeSaint/
--
Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go



___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go



--
Petr Baudis
If you do not work on an important problem, it's unlikely
you'll do important work.  -- R. Hamming
http://www.cs.virginia.edu/~robins/YouAndYourResearch.html
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go


___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] fast + good RNG

2015-03-29 Thread Darren Cook
> I measured that std::mt19937_64 (the mersenne twister from the standard
> c++ libraries) uses about 40% cpu time during playouts.
> 
> So I wonder: is there a faster prng while still generating good enough
> random?

This question suggests some:
  http://stackoverflow.com/q/1640258/841830

This question is not that useful, but contains links to more information
on alternative random algorithms, and a link to a video presentation:
  http://stackoverflow.com/q/19665818/841830

Random number generation in multi-threaded programs is an interesting
topic, and worth being aware of. (E.g. you don't want to use 16 threads,
only to find all 16 generate the same random sequence, so each thread
generates the same playout as all the other threads.)
(See the example of using thread_local in
http://codereview.stackexchange.com/a/84112 )

40% sounds high. Are you re-initializing the generator each time you
need a new random number?

Darren



-- 
Darren Cook, Software Researcher/Developer
My new book: Data Push Apps with HTML5 SSE
Published by O'Reilly: (ask me for a discount code!)
  http://shop.oreilly.com/product/0636920030928.do
Also on Amazon and at all good booksellers!
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] fast + good RNG

2015-03-29 Thread Petr Baudis
Hmm, I use just a super-naive LCG

unsigned long hi, lo;
lo = 16807 * (pmseed & 0x);
hi = 16807 * (pmseed >> 16);
lo += (hi & 0x7fff) << 16;
lo += hi >> 15;
pmseed = (lo & 0x7fff) + (lo >> 31);
return ((pmseed & 0x) * max) >> 16;

in Pachi.  Frankly, I think I could get away with just
pmseed = pmseed * 16807 + 12345;
return pmseed % max;

Do you really need high quality RNG in your program?  I'd be interested
if someone using a sophisticated RNG would compare it with using just
the above wrt. Elo strength and performance.

(BTW, for floats, there's this neat trick to take advantage of the
internal representation

union { unsigned long ul; floating_t f; } p;
p.ul = (((pmseed *= 16807) & 0x007f) - 1) | 0x3f80;
return p.f - 1.0f;

see also http://rgba.org/articles/sfrand/sfrand.htm)

On Sun, Mar 29, 2015 at 05:58:56PM +0800, remco.bloe...@singularityu.org wrote:
> I switched to SFMT [0].  But that was some years ago, there might be faster 
> options now.
> 
> I also generated it in megabyte batches and consume it from there, generating 
> a new megabyte as needed.
> 
> Lastly, I had some code to make sure I did not consume more bits of entropy 
> than required.  Two uniform choices,  one bit.  Three choices: fractional 
> bits.
> 
> [0]
> 
> http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/
> 
> — Remco 
> 
> -Original Message-
> From: folkert 
> To: computer-go@computer-go.org
> Sent: Sun, 29 Mar 2015 17:50
> Subject: [Computer-go] fast + good RNG
> 
> Hi,
> 
> I measured that std::mt19937_64 (the mersenne twister from the standard
> c++ libraries) uses about 40% cpu time during playouts.
> 
> So I wonder: is there a faster prng while still generating good enough
> random?
> 
> 
> Folkert van Heusden
> 
> -- 
> Nagios user? Check out CoffeeSaint - the versatile Nagios status
> viewer! http://www.vanheusden.com/java/CoffeeSaint/
> --
> Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
> ___
> Computer-go mailing list
> Computer-go@computer-go.org
> http://computer-go.org/mailman/listinfo/computer-go

> ___
> Computer-go mailing list
> Computer-go@computer-go.org
> http://computer-go.org/mailman/listinfo/computer-go


-- 
Petr Baudis
If you do not work on an important problem, it's unlikely
you'll do important work.  -- R. Hamming
http://www.cs.virginia.edu/~robins/YouAndYourResearch.html
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] fast + good RNG

2015-03-29 Thread remco . bloemen
Powers of two are easy, just take the minimum amount of bits out of your 
entropy.

For a generic number N

Approach 1: round up to the next highest power of two, then discard and try 
again if it is >= N.

This could potentially reject up to half the samples, so I have two 
improvements I used:

Approach 2: take 3 more bits than the next highest power of two. Reject if it 
is higher than  the highest multiple of N less than this larger power of two. 
On accept return modulo N.

Approach 3: An arithmetic decoder fed with entropy. When done with 64 bit 
integers it is as good as perfect in terms of bias and entropy consumption.

— Remco

-Original Message-
From: folkert 
To: computer-go@computer-go.org
Sent: Sun, 29 Mar 2015 18:05
Subject: Re: [Computer-go] fast + good RNG

Ah!
But how do you make sure the numbers are uniformly distributed?

On Sun, Mar 29, 2015 at 05:58:56PM +0800, remco.bloe...@singularityu.org wrote:
> I switched to SFMT [0].  But that was some years ago, there might be faster 
> options now.
> 
> I also generated it in megabyte batches and consume it from there, generating 
> a new megabyte as needed.
> 
> Lastly, I had some code to make sure I did not consume more bits of entropy 
> than required.  Two uniform choices,  one bit.  Three choices: fractional 
> bits.
> 
> [0]
> 
> http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/
> 
> ??? Remco 
> 
> -Original Message-
> From: folkert 
> To: computer-go@computer-go.org
> Sent: Sun, 29 Mar 2015 17:50
> Subject: [Computer-go] fast + good RNG
> 
> Hi,
> 
> I measured that std::mt19937_64 (the mersenne twister from the standard
> c++ libraries) uses about 40% cpu time during playouts.
> 
> So I wonder: is there a faster prng while still generating good enough
> random?
> 
> 
> Folkert van Heusden
> 
> -- 
> Nagios user? Check out CoffeeSaint - the versatile Nagios status
> viewer! http://www.vanheusden.com/java/CoffeeSaint/
> --
> Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
> ___
> Computer-go mailing list
> Computer-go@computer-go.org
> http://computer-go.org/mailman/listinfo/computer-go

> ___
> Computer-go mailing list
> Computer-go@computer-go.org
> http://computer-go.org/mailman/listinfo/computer-go



Folkert van Heusden

-- 
MultiTail er et flexible tool for å kontrolere Logfiles og commandoer.
Med filtrer, farger, sammenføringer, forskeliger ansikter etc.
http://www.vanheusden.com/multitail/
--
Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] fast + good RNG

2015-03-29 Thread Álvaro Begué
If your PRNG is consuming 40% of your CPU time, your playouts are too light.

Anyway, it's very easy to make a fast PRNG these days. The first thing that
comes to mind is a 64-bit linear congruential generator of which you use
the middle bits, or you can XOR the high 32 bits and the low 32 bits
together. LCGs have well-understood limitations that don't really matter
for a go program.

If you want higher-quality PRNs you need to use a large state, but you can
still make it be very fast. Still, try the LCG first. I would be surprised
if you find any degradation in strength of your engine compared to the
Mersenne twister.

Álvaro.



On Sun, Mar 29, 2015 at 12:05 PM, folkert  wrote:

> Ah!
> But how do you make sure the numbers are uniformly distributed?
>
> On Sun, Mar 29, 2015 at 05:58:56PM +0800, remco.bloe...@singularityu.org
> wrote:
> > I switched to SFMT [0].  But that was some years ago, there might be
> faster options now.
> >
> > I also generated it in megabyte batches and consume it from there,
> generating a new megabyte as needed.
> >
> > Lastly, I had some code to make sure I did not consume more bits of
> entropy than required.  Two uniform choices,  one bit.  Three choices:
> fractional bits.
> >
> > [0]
> >
> > http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/
> >
> > ??? Remco
> >
> > -Original Message-
> > From: folkert 
> > To: computer-go@computer-go.org
> > Sent: Sun, 29 Mar 2015 17:50
> > Subject: [Computer-go] fast + good RNG
> >
> > Hi,
> >
> > I measured that std::mt19937_64 (the mersenne twister from the standard
> > c++ libraries) uses about 40% cpu time during playouts.
> >
> > So I wonder: is there a faster prng while still generating good enough
> > random?
> >
> >
> > Folkert van Heusden
> >
> > --
> > Nagios user? Check out CoffeeSaint - the versatile Nagios status
> > viewer! http://www.vanheusden.com/java/CoffeeSaint/
> > --
> > Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
> > ___
> > Computer-go mailing list
> > Computer-go@computer-go.org
> > http://computer-go.org/mailman/listinfo/computer-go
>
> > ___
> > Computer-go mailing list
> > Computer-go@computer-go.org
> > http://computer-go.org/mailman/listinfo/computer-go
>
>
>
> Folkert van Heusden
>
> --
> MultiTail er et flexible tool for å kontrolere Logfiles og commandoer.
> Med filtrer, farger, sammenføringer, forskeliger ansikter etc.
> http://www.vanheusden.com/multitail/
> --
> Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
> ___
> Computer-go mailing list
> Computer-go@computer-go.org
> http://computer-go.org/mailman/listinfo/computer-go
>
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] fast + good RNG

2015-03-29 Thread folkert
Ah!
But how do you make sure the numbers are uniformly distributed?

On Sun, Mar 29, 2015 at 05:58:56PM +0800, remco.bloe...@singularityu.org wrote:
> I switched to SFMT [0].  But that was some years ago, there might be faster 
> options now.
> 
> I also generated it in megabyte batches and consume it from there, generating 
> a new megabyte as needed.
> 
> Lastly, I had some code to make sure I did not consume more bits of entropy 
> than required.  Two uniform choices,  one bit.  Three choices: fractional 
> bits.
> 
> [0]
> 
> http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/
> 
> ??? Remco 
> 
> -Original Message-
> From: folkert 
> To: computer-go@computer-go.org
> Sent: Sun, 29 Mar 2015 17:50
> Subject: [Computer-go] fast + good RNG
> 
> Hi,
> 
> I measured that std::mt19937_64 (the mersenne twister from the standard
> c++ libraries) uses about 40% cpu time during playouts.
> 
> So I wonder: is there a faster prng while still generating good enough
> random?
> 
> 
> Folkert van Heusden
> 
> -- 
> Nagios user? Check out CoffeeSaint - the versatile Nagios status
> viewer! http://www.vanheusden.com/java/CoffeeSaint/
> --
> Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
> ___
> Computer-go mailing list
> Computer-go@computer-go.org
> http://computer-go.org/mailman/listinfo/computer-go

> ___
> Computer-go mailing list
> Computer-go@computer-go.org
> http://computer-go.org/mailman/listinfo/computer-go



Folkert van Heusden

-- 
MultiTail er et flexible tool for å kontrolere Logfiles og commandoer.
Med filtrer, farger, sammenføringer, forskeliger ansikter etc.
http://www.vanheusden.com/multitail/
--
Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] fast + good RNG

2015-03-29 Thread remco . bloemen
I switched to SFMT [0].  But that was some years ago, there might be faster 
options now.

I also generated it in megabyte batches and consume it from there, generating a 
new megabyte as needed.

Lastly, I had some code to make sure I did not consume more bits of entropy 
than required.  Two uniform choices,  one bit.  Three choices: fractional bits.

[0]

http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/

— Remco 

-Original Message-
From: folkert 
To: computer-go@computer-go.org
Sent: Sun, 29 Mar 2015 17:50
Subject: [Computer-go] fast + good RNG

Hi,

I measured that std::mt19937_64 (the mersenne twister from the standard
c++ libraries) uses about 40% cpu time during playouts.

So I wonder: is there a faster prng while still generating good enough
random?


Folkert van Heusden

-- 
Nagios user? Check out CoffeeSaint - the versatile Nagios status
viewer! http://www.vanheusden.com/java/CoffeeSaint/
--
Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

[Computer-go] fast + good RNG

2015-03-29 Thread folkert
Hi,

I measured that std::mt19937_64 (the mersenne twister from the standard
c++ libraries) uses about 40% cpu time during playouts.

So I wonder: is there a faster prng while still generating good enough
random?


Folkert van Heusden

-- 
Nagios user? Check out CoffeeSaint - the versatile Nagios status
viewer! http://www.vanheusden.com/java/CoffeeSaint/
--
Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go