[computer-go] programming (languages) light-simulation contest
--------------------------------------------------------------------------------------------

 The reason i have been eager to make so sure my implementation was conform
 to what i had in mind (this time ..) is that i wanted to be able
 to test various (possibly a lot) of different implementations
 in different environments (machines, langages, memory etc etc ..).
 
 So far i have developed simple light simulators for those environments :
 
 (all single threaded)
  - Java 32 bits.
  - C 32 bits linux.
  - C 64 bits linux
  - Assembly 32 bits on some intel duo with no SSE
  - Assembly 32 bits on some intel duo with some SSE
  - Assembly 64 bits with and without SSE
  - NVIDIA Cuda C

I was quite dissatisfied with the results. The development cycle was just too 
long,
there was just too many things to be tuned and tried. I got lost in the 
different versions
not remembering how it had been validated, and more than often plainly loosing 
where the code
was (i used more than 5 computers, most of witch are not there anymore - with 
no clear backup strategy)
, when it had not been changed to death anyway (without backing up - so not 
much left to recover).

 So i figured out, what i had a need for to begin with, was method.
 
-------------------------------------------------------------------------------------
  I have followed loosly those "hey here is a new interesting language" 
conversations.
  My conclusion where always the same : it's just a confrontation of random 
thoughts.
  So i kinda stopped trying to follow them. I think things are started to go in 
a good
  direction now : it's mostly useless to talk about ideas, or unverifiable data
  in a list like this one.
  
   So what i like a lot about how things are going now, is that it seems that 
the community
   has got here a strong will to get something to talk-about in the first 
place. Still i hardly
   anticipate this to gives something fruitful in the end. That would be 
because everyone's goal
   seems different from everyone's else. I guess that there is a goal worth 
pursuing underlying 
   the conversation. I see such a goal for myself. Which would be to answer the 
question : "what
   does a really good version of light playout looks like". I chose "light 
playouts" because
   it's so easy now to agree on an implementation : most people seems to use 
quite exactly the
   same one. That's why i was able to just ask for other to confirm that mine 
was correct.
   
   By the way, i think that AMAF implementation based on those light-play-out, 
is straight forward
   too. That's why i chose those to try to get the most out of everybody's else 
experience.
   As for me, i'm really NOT interested in knowing "what langage is good for go 
programming". That's
   simply not a question i can ask myself, nor anyone else. This question 
doesn't make any sense for
   me. Still if someone can get the "standard light playout" right in less than 
10 code line,
   and they are very understandable lines. I would be very happy to see it. But 
it would never mean for me that,
   "this language is BEST". Even if the peformances are optimal there. I think 
90% of the 
   "this language is the best" debate gets it's root in some affective part of 
the people
   engaged with it. 
   
   So .. i'm not interested at all in a langage contest. I really don't care 
about that.
   Still i find interesting to argue over facts, rather than about random 
thoughts.
   Now, to really set the frame-rules of this "language contests" seems a 
challenge 
   really interesting in itself. I don't think it'll be easy to do. I think that
   it has to be so that most people do agree that it has been set up properly.
   And then, it has to be so, that absolutely anybody that has the slightest 
interest
   in the matter will be able, and will be willing to participate.
   
   I didn't really put a lot of thought in it, but here are what i can think of
   right now.
   
   -It should be useful. So let's make it a programming contest, rather than a 
pure
   language contest. It may be slower to get enough data to be able to compare 
different
   languages.But then it'll make it so that more people can participate and 
find values in it.
   I would never try anything for a "language contest" myself. But i may well 
want to invest 
   some time in a programming contest. So when i say "it should be useful" the 
question i really
   ask is : what information (or benefices) should we hope to get out of this 
challenge.
   That would both help us to get nice ideas about how to set it, and a base 
for discussing if what
   we proposed is right or wrong. And then later on, we can compare the real 
benefice of it, with
   what we expected to get.
   
   - It should allow a lot of freedom. Once again this is based on the 
assumption, that
   it is most probable that NOBODY will actually join the contest. So we have 
to get
   it as wide as possible, as interesting as possible for as many people as 
possible.
   And with all that, it has to looks like there is a frame easy to follow. It 
has to look
   like something valuable will come out of it. It has to be satisfying for the 
participants.
   
   
   So here is what i would hope for :
   - To get a set of data, that everybody can use to judge if it's 
implementation is conform.
   - To get a set of algorithms easy to use, and that are guaranteed to be 
conform
   - To get very efficient algorithmist propose unheard of solutions, and push 
back
   the limits of what seems to be doable. And to be able to realize for 
example, that
   it is possible to get as much as 1000 000 000 evaluations per processor and 
per second
   on the processor and machine i use everyday.
   
   - I think that anybody should be able to propose an implementation. And then
   anybody else should be able to study the black box submitted. But i disagree 
when
   we ask for every-participant to give full access to their code. I think that 
most
   people would do it anyway. But if someone really has interesting ideas, it 
could
   benefits all to allow him to submit a black-box. Maybe later on, he will 
share
   the mechanisms of it with the rest of us. AND people could wonder at how the 
thing
   work. Which could be more beneficial than to get a code that nobody 
understand
   in the first place ....
   
   Then the point i would like to be discussed are :
    - how do we make it easy that people only have to focus on what is relevant
    (ie the algorithms)
    
    I think we need both to propose an easy way the measure the behavior of the 
black box
    AND i really think we should build up tools to help iterative validation of 
the
    algorithms people are trying to make. In any cases, those are things i 
really try
    to solve for myself, because i'm trying to set-up such a programming 
contest of my own.
    With only me involved in it. I just want to know how fast a light 
simulation can be.
    It'll just take a lot of time and effort.








---------------------------------------
Stuart A. Yeates syeates at gmail.com
said :
---------------------------------------

If we, as a community, could come up with a sufficiently detailed
description of light playouts algorithm (see the current "Light
simulation : Characteristic values" thread), there is no reason that
this algorithm couldn't join them.

I suspect that detailing the algorithm sufficiently for non-go players
to implement may be surprising challenging.

cheers
stuart

---------------------------------------
darren at dcook.org 
said :
---------------------------------------
This is an excellent idea. Go for it!


---------------------------------------
Don Dailey drdailey at cox.net 
said :
---------------------------------------
I have considered the very same thing and I think it's a great idea!

In fact I implemented the same exact algorithm for a simple go program
in C and D for the exact purpose of evaluating D.   I even used the same
data representation and algorithms for doing things so that it was
mostly apples to apples.   

I think it's easy to describe and code up a simple algorithm. Uniform
random play-outs.   For the purpose of the benchmark we could avoid
using AMAF or else we would have to make sure it was carefully
specified.   We could specify the simple eye rule that almost all of us
use and make sure all of these things are precisely defined.  

And then we would need a simple test harness to verify that the program
was correct.   We could do things like measure the average game length
and average win percentage in one or more specified positions.   We
could create a couple extra GTP commands for reporting these numbers.
And we could specify that the programs are ready to play complete games
so that they could be tested in real games.   

But I would suggest that this is not just a language contest, but a
programming context too.  We should not have just one implementation per
language but users would be free to submit their own entry for any
language because no two implementations would be the same.   The only
rule is that it must conform and pass the specified tests and the source
code is published with each entry for external verification.

_________________________________________________________________
Installez gratuitement les 20 émôticones Windows Live Messenger les plus fous ! 
Cliquez ici !
http://www.emoticones-messenger.fr/_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to