[ANN] Donna v1.0 chess engine

361 views
Skip to first unread message

Michael Dvorkin

unread,
Dec 14, 2014, 4:26:47 PM12/14/14
to golan...@googlegroups.com
Hi,

Donna is modern day chess engine implemented in Go. Its long list of technical features includes magic bitboards, iterative deepening, futility pruning and razoring, UCI protocol support, interactive REPL etc. Donna comes with 300+ Go tests and large suite of benchmark positions. On short time controls Donna's estimated strength is around ELO 2500.

Please give it a shot: https://github.com/michaeldv/donna

Enjoy ;-)

Michael


Filip Zaludek

unread,
Dec 16, 2014, 8:01:42 AM12/16/14
to golan...@googlegroups.com

Do you have nps comparison, bounds checking enabled/disabled, gccgo?

minux

unread,
Dec 17, 2014, 2:26:17 AM12/17/14
to Michael Dvorkin, golang-nuts
I took a look at the README, and I'm surprised to see that you recommend
-gcflags -B.

I highly discourage any Go user from using that option in a regular basis. It
should only only used during benchmarking and seeing if the performance
problem is due to bound checking. It should NOT be your usual way of building
Go programs. Otherwise, you lost a lot of safety guarantee from using Go in
return for some performance gain.

To put it another way, if everyone is using -B, there won't be any incentives
for the Go authors to improve on bound checking performance.

Michael Dvorkin

unread,
Dec 18, 2014, 10:41:29 PM12/18/14
to golan...@googlegroups.com
In my tests bounds checking reduces raw performance by around 5%.

-M-

Michael Dvorkin

unread,
Dec 18, 2014, 10:48:13 PM12/18/14
to golan...@googlegroups.com, mi...@dvorkin.net
No doubt bounds checking is extremely valuable and I am using it all the time in development. In chess programming, however, every bit counts as raw speed translates into competitive advantage. Making the engine 5% faster by disabling runtime checks seems like no brainer.

-M-

minux

unread,
Dec 18, 2014, 11:00:07 PM12/18/14
to Michael Dvorkin, golang-nuts


On Dec 18, 2014 10:48 PM, "Michael Dvorkin" <mi...@dvorkin.net> wrote:
> No doubt bounds checking is extremely valuable and I am using it all the time in development. In chess programming, however, every bit counts as raw speed translates into competitive advantage. Making the engine 5% faster by disabling runtime checks seems like no brainer.

Are you sure that you have optimized the program to such extend that removing bound checking is the last thing you can do? Have you profiled your package?

Even people doing numeric work in Go don't write -gcflags -B in their READMEs.

Reply all
Reply to author
Forward
0 new messages