[computer-go] CGOS 19x19

2007-12-14 Thread Olivier Teytaud

Cgos 19x19 is back.
I hope electricity is stable :-)

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


Re: [computer-go] Hall of fame for CGOS

2007-12-14 Thread Hideki Kato
I, first, noticed that I might have readers especially Don
misleading with my previous mail.  I used "we" for the participants
of cgos not "I and Don".  I'm sorry if any.

Has "Hall of fame" with incorrect ratings any sense?  Rather, it may
wrongly leads pepole, isn't it?

I won't discuss farther as Don seems never change his mind with any
discussion but I'd like to point out that Don should have many prior
things to do than builiding such meaningless HoF.

-Hideki

Don Dailey: <[EMAIL PROTECTED]>:
>Don't worry Hideki,
>
>Nothing has changed on CGOS,  only something has been added and it has
>no affect on what is already there.  
>
>The standard current standings page also stays the same.   No change I
>promise. 
>
>Different versions of a program running on CGOS has never been an issue
>before,  and nothing has changed in that regard either.   
>
>Right now if you have 2 programs running on CGOS they might occasionally
>play each other.   They each get their own rating independent of the
>other.That's how it's always been and that has not changed nor is it
>broken.
>
>Bu that is the ONLY thing we might actually change later.   But no
>matter how you look at it, you cannot ENFORCE that change.   
>
>Also, even though we can ask people to never change their program unless
>they give it a new login name,  we can't enforce that, nor is it
>reasonable to try. I might have a program with an on-line learning
>algorithm which improves itself over time - it would be unreasonable to
>ask me not to put that on CGOS.   
>
>Are you bothered by the fact that the "all time list" will have some
>programs suffer that have improved over time but will always have the
>prior bad results go against it? Don't worry about that.I will
>probably put a time-limit on the games - perhaps I will only include the
>games of the previous 12 months.   This is going to be a list that is
>updated every month.  
>
>Also, there is no "Hall of Fame."   It's only a  list to show ALL
>players over time and it uses bayeselo instead of the standard CGOS elo
>system (which doesn't change.) 
>
>- Don
>
>
>
>
>Hideki Kato wrote:
>> Your sentences make me strongly believe it's too early.
>>
>> I won't be against your idea. Again, just claiming it's too early.  
>> Following your analogy to sports, there should be some gurantee of 
>> fairness and agreement of participants.
>>
>> Our presupposition was that only recent results were important.  Any 
>> temporal confusion of ratings would be fixed soon.  So I could ignore 
>> or didn't mind wrong scored games.  You are, however, changing it 
>> without any notification nor agreement.
>>
>> I think the problem of different versions are running with the same 
>> login names cannot be ignored.  We have to announce and make sure 
>> almost all perticipants won't do it.
>>
>> Yes, network troubles are out of our control, some other troubles 
>> and/or accidents will happen.  That's why we have to have some 
>> experiments before using the name of 'Hall of fame'.
>>
>> -Hideki
>>
>> Don Dailey: <[EMAIL PROTECTED]>:
>>   
>>> Hideki Kato wrote:
>>> 
 Why don't you mention the several versions on one login name 
 problem?
   
   
>>> I don't consider it a major problem.  The theory is that a big
>>> improvement against versions of the same program might not translate to
>>> equivalent improvements vs other programs.I want to see that proven
>>> convincingly before I buy into it,  it would take thousands of games to
>>> prove this unless the effect was quite large so I won't accept anecdotal
>>> evidence.I'm not saying this doesn't happen,   but it's a
>>> superstition until proven otherwise.  
>>>
>>> Still, I would prefer to not rate games between members of the same
>>> family just for the sake of appearance and accusations of nepotism.  
>>>(Although you can't really prevent nepotism.) 
>>>
>>> 
 And, I considered CGOS is not the Nascar type commercial races but a 
 field to help developers to improve their progrms, say, in some 
 academic sense.
   
   
>>> I think it is an appropriate analogy.   It's part of your equipment. 
>>> Every sport or field of endeavor has these variables beyond your control.
>>>
>>> But more to the point,  if I could take this variable out of the
>>> equation I would gladly do so.   But I cannot detect the difference
>>> between a network outage and cheating. 
>>>
>>> 
 What is your reason to name it as 'Hall of fame'?  I'm not Western 
 and can just estimate the value of the name but it's so heavy and 
 important, isn't it?

   
   
>>> Hall of fame is not a good name and it's not really called that.   It's
>>> the "9x9 all time ratings" but I almost called it hall of fame because
>>> originally I intended to only include the top 50 players.I chose not
>>> to for 3 reasons:
>>>
>>>   1.  Many players are represented multiple times.
>>>   2.  It's more useful to be 

Re: [computer-go] Python bindings for libego?

2007-12-14 Thread Matthew Woodcraft
Darren Cook wrote:
> I wonder if you had anything to say on how the development was? I'm
> especially interested if you think if there was some aspect of the way
> libego is written that made it either hard work for you, or made it
> inefficient to wrap?

I don't think so, beyond being written in C++ in the first place. C++
code is harder to wrap than C code just because C++ interfaces are that
much richer, and because Pyrex isn't really designed for C++.

(Well, there was one thing: I didn't find a nice way to wrap the
functions that use iostreams in their interfaces. But that's not very
interesting, because those are the text-manipulation bits that you
wouldn't write in C++ if you were making a hybrid program).

A lot of the inefficiency comes because I was aiming for a Python
extension with pretty much the same interface as libego. For real work
it would be better to start with the attitude "let's make a decent
Python extension for working with go boards, and use libego to build
it". I suppose you'd have functions for looping over each point in the
board, for example, which would avoid constructing a silly Python Vertex
object for each point.

A real hybrid program would be more efficient again, because you could
have C++ code implementing exactly what the interpreted code happens to
need, and you could do away with the expectation that you shouldn't be
able to crash the Python interpreter by passing bad parameters to an
extension module. I still suspect that Python would be too slow to use
for anything that happens as frequently as once per playout.


> In notes.txt you say the speed dropped from 70-75 kpps to 43 kpps when
> used in the wrapper (compared to 1 or 2.5 kpps in native python). And
> you say this is due to the overhead of converting and checking
> parameters? If you increase the number of playouts by a factor of 10
> does it close in to 70kpps?

That drop happens because the Python code for running the benchmark
itself is slower than the C++ code for doing so. That is, (I think) we
lose so much speed because each iteration of the Python code in this
loop

for i in xrange(playout_count):
working_board = start_board.copy()
playout = Playout_cls(working_board, first_player)
status = runner(playout)
if status == pyego.PLAYOUT_OK:
wins[working_board.winner()] += 1
elif status == pyego.PLAYOUT_MERCY:
wins[working_board.approx_winner()] += 1

takes similar time to the single 9x9 libego playout that it runs.

Increasing the number of playouts doesn't change things. But if I try it
on a 19x19 board the penalty is rather lower, because the C++ code takes
more time.


> I wondered if it might be possible that some compiler optimization got
> missed, or is just not possible, when built as an extension?

The drop from ~75 to ~70 kpps is because of poorer compiler output when
building as an extension (that is: I changed 'always_inline' to plain
'inline' everywhere to get the extension to compile; I presume it would
be possible to put always_inline back and have separate entry points for
the Python code marked plain 'inline', and I should think this would
regain that 7%).

-M-

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


Re: [computer-go] Hall of fame for CGOS

2007-12-14 Thread Don Dailey


Gunnar Farnebäck wrote:
> Don Dailey wrote:
>> Also, even though we can ask people to never change their program unless
>> they give it a new login name,  we can't enforce that, nor is it
>> reasonable to try. I might have a program with an on-line learning
>> algorithm which improves itself over time - it would be unreasonable to
>> ask me not to put that on CGOS.   
>
> MonteGNU is doing on-line learning of its fuseki database.
Excellent - that is the kind of thing I want to support on CGOS.

- Don



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


Re: [computer-go] Lisp time

2007-12-14 Thread Don Dailey
Yes,  I agree with all your points.  

FFTW works by building test cases and testing them on the specific
processor it runs on.   In other words, under program control,  many
versions are produced just to see which one actually runs fastest.I
know the inventer of FFTW (Mateo Frigo of MIT) who also contributed a
little bit  to my chess program.The code is produced in scheme or
lisp but it's produced FOR C.   This may not be the case any more, I
haven't kept up with FFTW,  but I can imagine  the same concept being
applied with other languages. 

Mateo was interested in my move generator for chess.   It was super
fast  because I was able to eliminate most of the branching and it was
based on code that produced code which caught his interest. Although
I didn't use Mateo's technology,  we talked about it.

It's my dream that something much better will replace C and I'm hopeful
that this day will come.I think it will be something like C but much
better.   I call it a better C,  but that doesn't mean it has to look
like C,  I just hope that it replaces C.To replace C it has to be
more than just fast like C,  it has to give you pretty much complete
control over your code.  

It's more fun and productive (in the code writing sense)  to program in
a much higher level language but there are conflicting goals.   It's
hard to be both a high level and low level language.A true successor
to C will probably still be a relatively low level language.My bet
is currently on D,  but it's too early to be able to predict.  

- Don



Harald Korneliussen wrote:
> Don Dailey wrote:
>
>   
>> By the way,   I am no fan of C.   I don't like C and have tried some of
>> the languages on your list of languages that are supposedly faster than
>> C.
>>
>> I think you must be getting your information from the web pages for
>> those languages.   As a general rule any reasonably fast language is
>> going to claim to be faster than C but shame on you if you believe it.
>>
>> "In theory" all languages are equal.   They can all be transformed to
>> optimized machine code.   I am not talking about the theoretical,  I'm
>> talking about the reality.And the reality is that right now C is the
>> choice, whether I like it or not I accept it and hope something better
>> will come along.
>> 
>
> You are right, but there are some cases where alternatives may make sense.
> For instance, look at the paper Ian Osgood linked to: They used Haskell to
> spit out highly optimized code for Monte Carlo-simulations. There is also
> FFTW, which makes very fast FFT code with the help of OCaml.
> Code generation is one area where using another language might be
> considered. It doesn't have to be a functional one, or even C: I know of a
> cryptographic algorithm (Serpent) that has an implementation based on
> Perl-generated Ada code.
>
> Prototyping may also be an idea. Especially if one is experimenting
> with novel approaches, wouldn't it make sense to make a prototype
> in Haskell, for instance? Then you may reimplement it in C, very carefully,
> comparing outputs regularly to check for the playing strength-killing bugs
> Chess programmers always talk about...
>
> Occasionally there may be some language feature that makes up for the
> performance cost. Like the distributed nature of Erlang, or the
> software transactional memory libraries that GHC Haskell come with.
> If you believe the hype, STM scales much better than locking-based
> shared memory.
> ___
> computer-go mailing list
> computer-go@computer-go.org
> http://www.computer-go.org/mailman/listinfo/computer-go/
>
>   
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] MC-UCT and tactical information

2007-12-14 Thread dhillismail

> -Original Message-
> From: Jason House <[EMAIL PROTECTED]>
> To: computer-go 
> Sent: Fri, 14 Dec 2007 2:23 pm
> Subject: Re: [computer-go] MC-UCT and tactical information






So, what tactical information should be calculated, how should it be used, and 
yes how should it be stored? 



> Looking only at moves, I see the following basic needs:
> 1. Forced move pairs (peeps, miai)
> 2. Equivalent move classes (semeai)
> 3. Move sequences (joseki, fuseki, tactical L&D, endgame) 

> I've wondered previously about only storing #1 for use in sims, and using #3 
> to replenish the supply > of forced exchanges as long sequences get played 
> out.

> There's also higher level strategic stuff such as ensuring groups survive.? 
> Things that encode actions > instead of literal moves.? If actions include 
> establishing a connection, forming an eye, or getting two > eyes, they may be 
> able to be treated in a similar fashion to normal moves. 

OK. Let's consider using move sequences from life and death tests and applying 
them to the external nodes.
A synopsis of the heavy playout rules from the first Mogo paper, from memory:
1. If the previous move put a friendly string in atari and there are any moves 
that would get it out of atari, pick one at random.
2. If there are any acceptable moves within a 3x3 neighborhood of the previous 
move that match a nice pattern, pick one at random.
3. If there are any moves that would capture an enemy string, pick one at 
random.
4. Make a random move.

These rules handle a lot of forced move pairs, like peeps, but they are myopic.

Maybe we should use the life and death tests at the root node to form a list of 
"moves that must be answered" together with some appropriate?answers. Then we 
could add a new playout rule #0.

0. If the previous move was a "move that must be answered," pick an answering 
move at random. (Probably, by definition, an answering move would have to be 
available.)

- Dave Hillis







_




More new features than ever.  Check out the new AIM(R) Mail ! - 
http://webmail.aim.com
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

RE: [computer-go] Hall of fame for CGOS

2007-12-14 Thread David Fotland
Many Faces does on-line learning of Fuseki, Joseki, and half-board patterns.

David

> -Original Message-
> From: [EMAIL PROTECTED] [mailto:computer-go-
> [EMAIL PROTECTED] On Behalf Of Gunnar Farnebäck
> Sent: Friday, December 14, 2007 1:28 PM
> To: computer-go
> Subject: Re: [computer-go] Hall of fame for CGOS
> 
> Don Dailey wrote:
> > Also, even though we can ask people to never change their program
> unless
> > they give it a new login name,  we can't enforce that, nor is it
> > reasonable to try. I might have a program with an on-line
> learning
> > algorithm which improves itself over time - it would be unreasonable
> to
> > ask me not to put that on CGOS.
> 
> MonteGNU is doing on-line learning of its fuseki database.
> 
> /Gunnar
> ___
> computer-go mailing list
> computer-go@computer-go.org
> http://www.computer-go.org/mailman/listinfo/computer-go/

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


Re: [computer-go] Hall of fame for CGOS

2007-12-14 Thread Gunnar Farnebäck

Don Dailey wrote:

Also, even though we can ask people to never change their program unless
they give it a new login name,  we can't enforce that, nor is it
reasonable to try. I might have a program with an on-line learning
algorithm which improves itself over time - it would be unreasonable to
ask me not to put that on CGOS.   


MonteGNU is doing on-line learning of its fuseki database.

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


RE: [computer-go] MC-UCT and tactical information

2007-12-14 Thread David Fotland
> From: Jason House <[EMAIL PROTECTED]>




> I've done some dabbling (thought experiments) with  how I'd like to cache
search results and I'm not yet happy with any of them.  Not taking into
account miai and such logic could > > lead to excessive storage bloat.  I'd
love to enter a discussion talking just about how to store cached L&D search
results. 


Many Faces does life and death search at the root before the main search.
It typically allocates a few hundred nodes to life and death search.  Since
the search is best-first, it keeps the search trees from move to move.
Later searches can extend earlier ones.  The trees are small, so it doesn't
cost much to keep them.

 

During evaluation tactical search results are cached, but the search tree is
not.  During a main search to find the move to play, Many Faces does a few
million nodes of tactical search, so it's too much to cache.

 

David

 

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

Re: [computer-go] MC-UCT and tactical information

2007-12-14 Thread Jason House
On Dec 14, 2007 12:43 PM, <[EMAIL PROTECTED]> wrote:

> For purposes of discussion, let's say the bot takes a tactical snapshot
> once at the root node and then uses that information to help pick a move. It
> can apply it at the root, at internal nodes, at external nodes, or at the
> very end (maybe it decides this is an UCT-deceptive position and calls
> another algorithm).
>

I totally agree.



> To keep a tight focus, I suggest ideas that involve calculating additional
> tactical information during the playouts themselves go into the ladder
> thread.
>

I agree with that too!


So, what tactical information should be calculated, how should it be used,
> and yes how should it be stored?
>

Looking only at moves, I see the following basic needs:
1. Forced move pairs (peeps, miai)
2. Equivalent move classes (semeai)
3. Move sequences (joseki, fuseki, tactical L&D, endgame)

I've wondered previously about only storing #1 for use in sims, and using #3
to replenish the supply of forced exchanges as long sequences get played
out.

There's also higher level strategic stuff such as ensuring groups survive.
Things that encode actions instead of literal moves.  If actions include
establishing a connection, forming an eye, or getting two eyes, they may be
able to be treated in a similar fashion to normal moves.
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] MC-UCT and tactical information

2007-12-14 Thread dhillismail



> -Original Message-
> From: Jason House <[EMAIL PROTECTED]>
> To: computer-go 
> Sent: Thu, 13 Dec 2007 6:30 pm
> Subject: Re: [computer-go] MC-UCT and tactical information




> ...

> "Change for the better" seems to imply only a one-sided analysis.? I would 
> imagine any analysis would > have to include both sides.? There's also 
> important concepts that can some into play like the number > of moves that 
> can be ignored (or must be ignored) before something happens.? This can be 
> critical?
 > info for ko fights and semeai. 

> I've done some dabbling (thought experiments) with? how I'd like to cache 
> search results and I'm not > yet happy with any of them.? Not taking into 
> account miai and such logic could lead to excessive?
 > storage bloat.? I'd love to enter a discussion talking just about how to 
 > store cached L&D search 
> results. 



> When I go down this road, I'd probably initially focus on maintaining 
> connections in playouts and then > extend it to maintaining life.? There's 
> some tricky parts about when severing a connection or giving 
> up a group is ok.? Deep in a random game, it may be ok to conservatively 
> protect stuff, giving a sort > of quiescence search. 



For purposes of discussion, let's say the bot takes a tactical snapshot once at 
the root node and then uses that information to help pick a move. It can apply 
it at the root, at internal nodes, at external nodes, or at the very end (maybe 
it decides this is an UCT-deceptive position and calls another algorithm). 

To keep a tight focus, I suggest ideas that involve calculating additional 
tactical information during the playouts themselves go into the ladder thread.

So, what tactical information should be calculated, how should it be used, and 
yes how should it be stored?

- Dave Hillis




---



More new features than ever.  Check out the new AIM(R) Mail ! - 
http://webmail.aim.com
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Lisp time

2007-12-14 Thread Harald Korneliussen
Don Dailey wrote:

>By the way,   I am no fan of C.   I don't like C and have tried some of
>the languages on your list of languages that are supposedly faster than
>C.
>
>I think you must be getting your information from the web pages for
>those languages.   As a general rule any reasonably fast language is
>going to claim to be faster than C but shame on you if you believe it.
>
>"In theory" all languages are equal.   They can all be transformed to
>optimized machine code.   I am not talking about the theoretical,  I'm
>talking about the reality.And the reality is that right now C is the
>choice, whether I like it or not I accept it and hope something better
>will come along.

You are right, but there are some cases where alternatives may make sense.
For instance, look at the paper Ian Osgood linked to: They used Haskell to
spit out highly optimized code for Monte Carlo-simulations. There is also
FFTW, which makes very fast FFT code with the help of OCaml.
Code generation is one area where using another language might be
considered. It doesn't have to be a functional one, or even C: I know of a
cryptographic algorithm (Serpent) that has an implementation based on
Perl-generated Ada code.

Prototyping may also be an idea. Especially if one is experimenting
with novel approaches, wouldn't it make sense to make a prototype
in Haskell, for instance? Then you may reimplement it in C, very carefully,
comparing outputs regularly to check for the playing strength-killing bugs
Chess programmers always talk about...

Occasionally there may be some language feature that makes up for the
performance cost. Like the distributed nature of Erlang, or the
software transactional memory libraries that GHC Haskell come with.
If you believe the hype, STM scales much better than locking-based
shared memory.
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Where and How to Test the Strong Programs?

2007-12-14 Thread Jason House
On Dec 14, 2007 10:55 AM, Nick Wedd <[EMAIL PROTECTED]> wrote:

> I'll bet that if someone ever does write a go-playing program that
> adapts its play in the light of what happens in the games it plays, I'll
> eventually be able to train it to make some _really_ bad moves.



That trick works against humans too.  I've stopped playing igowin for that
very reason...
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Where and How to Test the Strong Programs?

2007-12-14 Thread Nick Wedd
In message <[EMAIL PROTECTED]>, terry mcintyre 
<[EMAIL PROTECTED]> writes

- Original Message 
From: Rémi Coulom <[EMAIL PROTECTED]>


For instance, against computers, I estimate that Crazy Stone improved
about 3 stones between this summer and now. But it clearly did not
improve 3 stones on KGS. I vaguely remember that Sylvain also noticed
that MoGo could beat GNU go with a 4-stone handicap, but was only 2
stones stronger than GNU on KGS.


We human players have a nasty habit of adapting to the weaknesses of
programs, and patching our own. I played a program
which totally does not know the Chinese opening. I always wind up
playing five large fuseki points, as it slowly plays five stones all
on one side of the board. No matter how often I beat it, it will not
adapt. Whereas, if a human player gets hit on the head often enough,
he'll try something different.


I'll bet that if someone ever does write a go-playing program that 
adapts its play in the light of what happens in the games it plays, I'll 
eventually be able to train it to make some _really_ bad moves.


Nick


This may account for improving versus another program, but not so much
versus humans.  The weaknesses of your computer opponents are more
consistent.
Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try
it now.
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


--
Nick Wedd[EMAIL PROTECTED]
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Re: Lisp time

2007-12-14 Thread Don Dailey
By the way,   I am no fan of C.   I don't like C and have tried some of
the languages on your list of languages that are supposedly faster than
C.  

I think you must be getting your information from the web pages for
those languages.   As a general rule any reasonably fast language is
going to claim to be faster than C but shame on you if you believe it.   

"In theory" all languages are equal.   They can all be transformed to
optimized machine code.   I am not talking about the theoretical,  I'm
talking about the reality.And the reality is that right now C is the
choice, whether I like it or not I accept it and hope something better
will come along.

- Don



Don Dailey wrote:
> Stefan,
>
> Yes, in special cases you can outperform C.   
>
> I don't claim that it might not  be possible with better compiler
> technology to outperform C.   I'm keeping my eye on D because it
> promises to be one of those languages.
>
> But the truth of the matter, despite the promises, C is the best
> performing compiler right now.   I would feel silly trying to sit here
> and convince you of this if you don't already know it. Look at any
> objective benchmark.
>
> Fortran  does outperform C in some code and is no slouch in general -
> but it's still going to be slower than C in most things such as Chess
> and Go programs.   
>
> - Don
>
>
> Stefan Nobis wrote:
>   
>> Don Dailey <[EMAIL PROTECTED]> writes:
>>
>>   
>> 
>>> I thinks it's very difficult to outperform C since C really is just
>>> about at the level of assembly language.
>>> 
>>>   
>> No, in special cases it's not that hard to outperform C, because the
>> language spec dictates some not so efficient details. C has an ABI and
>> it's specification is optimized for the general case. Nearly every
>> design decision has advantages and disadvantages. So if you look at
>> the spec it's clearly possible to construct cases that are
>> exceptionally bad for this specific spec. If you have a language
>> without these restriction it's quite possible to get better results in
>> this constructed case.
>>
>> So yes, it may be difficult and maybe most or even all cases in which
>> it's possible to outperform C with Lisp are unimportant for any
>> practical purposes, but nevertheless it's possible.
>>
>> And by the way I don't think C is really the best language for maximum
>> performance. Just think about Fortran. AFAIK in it's main domain it
>> easily outperforms C. There are also languages like OCAML, Ada, Forth
>> and quite some others with really capable compilers und language specs
>> that leave more freedom to compiler writers and such leave more room
>> for different kind of optimizations.
>>
>> So the claim that C is the single one high level language with which
>> you can get the maximum performance is quite an urban legend and
>> completly unjustified.
>>
>>   
>> 
>>> I think the right approach to a language faster than C is to simply
>>> write a better C that is specifically designed to have more
>>> opportunities for optimization.
>>> 
>>>   
>> C is a really crappy language, especially from the performace point of
>> view. It's so low level that you are able to get really good
>> performance despite all the odds of the language. You have to program
>> around all the performace pitfalls, you have to do all performance
>> optimizations yourself. C is no help here. So why should C be a good
>> starting point for a language striving to make high performance
>> computing easy?
>>
>> BTW: No, Lisp is also not a very good starting point for this special
>> goal, but I would say Lisp would make a much better start than C,
>> because Lisp shows you how much a good language and compiler can easy
>> the pain for the developer while in C he is all alone.
>>
>>   
>> 
>>> I really don't think a truly higher level language will ever beat C
>>> or a performance improved C.
>>> 
>>>   
>> Have you really any hints, done any scientific benchmarks with
>> languages like OCAML, Oz, Forth, Fortran, Ada, Scheme, and many others
>> to make your claim any more than pure guesswork?
>>
>>   
>> 
>>> There is some hope that a JIT can do some optimizations not possible
>>> with a static compiler - but even if this is the case C could follow
>>> this path too.
>>> 
>>>   
>> It's not easy and maybe not even possible for C to follow this route
>> because C code (source and object) don't have very much
>> information. Higher level languages provide much more information
>> about what's going on, what data is in the game and the like. Or they
>> set much more restrictions (like restrictive type systems). All these
>> additional informations and/or restrictions make some algorithms
>> for inference tractrable or even fast. Without these you are lost. So
>> no, there are no hints that C would ever get such optimizations.
>>
>>   
>> 
>>
>> 

Re: [computer-go] Re: Lisp time

2007-12-14 Thread Don Dailey
Stefan,

Yes, in special cases you can outperform C.   

I don't claim that it might not  be possible with better compiler
technology to outperform C.   I'm keeping my eye on D because it
promises to be one of those languages.

But the truth of the matter, despite the promises, C is the best
performing compiler right now.   I would feel silly trying to sit here
and convince you of this if you don't already know it. Look at any
objective benchmark.

Fortran  does outperform C in some code and is no slouch in general -
but it's still going to be slower than C in most things such as Chess
and Go programs.   

- Don


Stefan Nobis wrote:
> Don Dailey <[EMAIL PROTECTED]> writes:
>
>   
>> I thinks it's very difficult to outperform C since C really is just
>> about at the level of assembly language.
>> 
>
> No, in special cases it's not that hard to outperform C, because the
> language spec dictates some not so efficient details. C has an ABI and
> it's specification is optimized for the general case. Nearly every
> design decision has advantages and disadvantages. So if you look at
> the spec it's clearly possible to construct cases that are
> exceptionally bad for this specific spec. If you have a language
> without these restriction it's quite possible to get better results in
> this constructed case.
>
> So yes, it may be difficult and maybe most or even all cases in which
> it's possible to outperform C with Lisp are unimportant for any
> practical purposes, but nevertheless it's possible.
>
> And by the way I don't think C is really the best language for maximum
> performance. Just think about Fortran. AFAIK in it's main domain it
> easily outperforms C. There are also languages like OCAML, Ada, Forth
> and quite some others with really capable compilers und language specs
> that leave more freedom to compiler writers and such leave more room
> for different kind of optimizations.
>
> So the claim that C is the single one high level language with which
> you can get the maximum performance is quite an urban legend and
> completly unjustified.
>
>   
>> I think the right approach to a language faster than C is to simply
>> write a better C that is specifically designed to have more
>> opportunities for optimization.
>> 
>
> C is a really crappy language, especially from the performace point of
> view. It's so low level that you are able to get really good
> performance despite all the odds of the language. You have to program
> around all the performace pitfalls, you have to do all performance
> optimizations yourself. C is no help here. So why should C be a good
> starting point for a language striving to make high performance
> computing easy?
>
> BTW: No, Lisp is also not a very good starting point for this special
> goal, but I would say Lisp would make a much better start than C,
> because Lisp shows you how much a good language and compiler can easy
> the pain for the developer while in C he is all alone.
>
>   
>> I really don't think a truly higher level language will ever beat C
>> or a performance improved C.
>> 
>
> Have you really any hints, done any scientific benchmarks with
> languages like OCAML, Oz, Forth, Fortran, Ada, Scheme, and many others
> to make your claim any more than pure guesswork?
>
>   
>> There is some hope that a JIT can do some optimizations not possible
>> with a static compiler - but even if this is the case C could follow
>> this path too.
>> 
>
> It's not easy and maybe not even possible for C to follow this route
> because C code (source and object) don't have very much
> information. Higher level languages provide much more information
> about what's going on, what data is in the game and the like. Or they
> set much more restrictions (like restrictive type systems). All these
> additional informations and/or restrictions make some algorithms
> for inference tractrable or even fast. Without these you are lost. So
> no, there are no hints that C would ever get such optimizations.
>
>   
> 
>
> ___
> computer-go mailing list
> computer-go@computer-go.org
> http://www.computer-go.org/mailman/listinfo/computer-go/
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Re: Lisp time

2007-12-14 Thread Jim O'Flaherty, Jr.
Darren,

Thank you for posting the links.  Very nice. It could be my lack of 
understanding the intention of each of the tests, but it looks like most of 
them are micro-benchmarks, meaning there is single or very few methods calls 
and a very well defined micro-space. I can understand how doing something more 
sophisticated might cause it to remain an apples to apples comparison.


Jim


- Original Message 
From: Darren Cook <[EMAIL PROTECTED]>
To: computer-go 
Sent: Friday, December 14, 2007 2:44:56 AM
Subject: Re: [computer-go] Re: Lisp time


>> I thinks it's very difficult to outperform C since C really is just
>> about at the level of assembly language.
> 
> No, in special cases it's not that hard to outperform C, because the
> language spec dictates some not so efficient details. C has an ABI
 and
> it's specification is optimized for the general case. 

Stefan, judging by this site (which I posted some links from yesterday)
your intuition is correct:
  http://shootout.alioth.debian.org/

Overall C comes in 2nd, 10% slower than C++ (due to extra hints to the
compiler I assume). But C/C++ are not the top of every benchmark. E.g.
http://shootout.alioth.debian.org/gp4/benchmark.php?test=sumcol〈=all

Darren


-- 
Darren Cook
http://dcook.org/mlsn/ (English-Japanese-German-Chinese free
 dictionary)
http://dcook.org/work/ (About me and my work)
http://dcook.org/work/charts/  (My flash charting demos)
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/



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

Re: [computer-go] Cgos 19x19

2007-12-14 Thread Olivier Teytaud
Due to electricity shutdowns in our university, I will wait a few 
consecutive hours

with constant electricity before starting the 19x19 cgos server again.

Sorry for that. Be sure I am in bigger trouble
than you with these electricity shutdowns :-)
Olivier
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Re: Lisp time

2007-12-14 Thread Stefan Nobis
Darren Cook <[EMAIL PROTECTED]> writes:

> Stefan, judging by this site (which I posted some links from
> yesterday) your intuition is correct:
>   http://shootout.alioth.debian.org/

To clarify: I don't really like these non-scientific benchmarks (in
many cases I assume no one or only really few people (not including
me) really understand what each micro-benchmark is really measuring).

And I don't hate C. :)

C is a nice language with quite some disadvantages but also quite some
advantages. I just don't like unjustified guesswork about language
characteristics and I'm overall very disappointed by so many
programmers knowing nearly nothing about their tools and alternatives
(no personal offends especially to people here meant, it's just an
overall disappointment about the IT industry as a whole).

So I get easily upset by these things (like "you get best performance
only with C"). Sorry for any overreaction.

-- 
Until the next mail...,
Stefan.


pgp0PesesvEi7.pgp
Description: PGP signature
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Re: Lisp time

2007-12-14 Thread Stuart A. Yeates
On 14/12/2007, Nick Apperson <[EMAIL PROTECTED]> wrote:

> C++ is "faster" than C because the STL (and other generic code) allows the
> programmer to spend their precious time optimizing the bottleneck and using
> a very fast default for less critical places.  For a sufficiently small
> program however I will wager that given enough time, C will be exactly the
> same speed as C++ if the programmers involved are both good.

The C++ generics are also on the surface faster than (for example) the
Java generics (which I use). This is because whereas C++ compiles and
optimises a class for every instantiated generic, Java uses a single
class and is thus unable optimise for specific cases.

This makes C++ generics faster, except in the case where the
bottleneck is how much can be fitted in the cache, which the fact that
Java hasn't multiplied it's generic classes may give it the advantage.

Yes, as you can tell, I'm bitter about this particular design decision.

cheers
stuart
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Re: Lisp time

2007-12-14 Thread Nick Apperson
Look,

 I love C++ and I'd love to say look I told you all, C++ is the fastest,
but frankly it just doesn't work like that.  When we come to a point where
every programmer writes the fastest possible code their language could
create then we have some kind of a comparison.

C++ has a philosophy that you don't pay for what you don't use, but there is
not a single construct in C++ that can't be built in C with enough code
(virtual functions are a grey area since the compiler can better optimizer
them over direct function pointers... but that is irrelevant anyway).
Sometimes the amount of code is rediculous and frequently to obtain the same
speeds one has to sacrifice portability and reusability.

In theory, and ONLY in theory, assembly is the fastest programming
language.  The fact is, in a sufficiently complex program, there will always
be parts of the program left to further optimize.  I would assert that for a
complex program, an assembly programmer and a C++ programmer both writing
the same program and spending the same amount of time will leave the
assembly version slower always.  It is not because assembly is a slower
language, it is because if the assembly guy spends another 1000 hours
optimizing, so will the C++ guy and certainly their are exceptions, but in
general, for most problems and for reasonable amounts of time spent, the C++
code will be faster.

C++ is "faster" than C because the STL (and other generic code) allows the
programmer to spend their precious time optimizing the bottleneck and using
a very fast default for less critical places.  For a sufficiently small
program however I will wager that given enough time, C will be exactly the
same speed as C++ if the programmers involved are both good.

When will you people learn the limits of benchmarks?  They are only useful
for showing how worthless Java is... nothing else.  Got it?

- Nick

On Dec 15, 2007 2:44 AM, Darren Cook <[EMAIL PROTECTED]> wrote:

> >> I thinks it's very difficult to outperform C since C really is just
> >> about at the level of assembly language.
> >
> > No, in special cases it's not that hard to outperform C, because the
> > language spec dictates some not so efficient details. C has an ABI and
> > it's specification is optimized for the general case.
>
> Stefan, judging by this site (which I posted some links from yesterday)
> your intuition is correct:
>  http://shootout.alioth.debian.org/
>
> Overall C comes in 2nd, 10% slower than C++ (due to extra hints to the
> compiler I assume). But C/C++ are not the top of every benchmark. E.g.
> http://shootout.alioth.debian.org/gp4/benchmark.php?test=sumcol&lang=all
>
> Darren
>
>
> --
> Darren Cook
> http://dcook.org/mlsn/ (English-Japanese-German-Chinese free dictionary)
> http://dcook.org/work/ (About me and my work)
> http://dcook.org/work/charts/  (My flash charting demos)
> ___
> computer-go mailing list
> computer-go@computer-go.org
> http://www.computer-go.org/mailman/listinfo/computer-go/
>
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Re: Lisp time

2007-12-14 Thread Darren Cook
>> I thinks it's very difficult to outperform C since C really is just
>> about at the level of assembly language.
> 
> No, in special cases it's not that hard to outperform C, because the
> language spec dictates some not so efficient details. C has an ABI and
> it's specification is optimized for the general case. 

Stefan, judging by this site (which I posted some links from yesterday)
your intuition is correct:
  http://shootout.alioth.debian.org/

Overall C comes in 2nd, 10% slower than C++ (due to extra hints to the
compiler I assume). But C/C++ are not the top of every benchmark. E.g.
http://shootout.alioth.debian.org/gp4/benchmark.php?test=sumcol&lang=all

Darren


-- 
Darren Cook
http://dcook.org/mlsn/ (English-Japanese-German-Chinese free dictionary)
http://dcook.org/work/ (About me and my work)
http://dcook.org/work/charts/  (My flash charting demos)
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/