Hi all,
an overview of the tournament from Deep Sjeng's point of view.
In the months before the tournament I worked on the clustering code to be more efficient on bandwidth/latency and to be more robust in some corner cases. Small bugs have a way of coming to the surface anyway if you run on so many cores, so this matters. I also added some more ambitious features to the clustering to improve scaling on even larger machines, but primary test results suggested this was not working properly yet, so we ran with an algorithm that was very close to CCT12. Sujay and Jens both spent lots of time optimizing the cluster settings in the months before. This takes pretty long as normally you test on multiple machines simultaneously, whereas when testing the cluster all machines are busy playing a single game, so it takes ages to get a statistically significant result. We got confirmation that some defaults were good and slightly better values for some tunables, but we also know we don't have the perfect setup yet as some still need further testing. So on the clustering side, there is still quite some room for improvement.
Given these constraints, Suj figured that less, but fatter nodes were better than more, less powerful nodes and upgraded us to 5 24-core AMD 2.4Ghz machines, and one additional 8x4Ghz Intel box, for a total of 128 cores. On this hardware, Deep Sjeng searches about 95Mnps in the opening up to 155Mnps in the late endgame. Older versions would have ran even faster, but I've added some more knowledge to the program in the meantime and the raw speed has dropped a bit as a result. Funnily, the Rybka Cluster had exactly the same amount of cores, although I believe their individual processors are actually faster.
I spent time attempting to prove the base engine in the months before the tournament, but wasn't very happy with the results. I tried hundreds of ideas and some felt really good, but in the end maybe only 2 or 3 worked. This is one of the frustrating things about chess programming: the improvement of the engine has sometimes no relation to the amount of effort put into it. Nevertheless, Deep Sjeng did gain some ELO compared to the previous outing, so there was some sense of satisfaction.
The tournament in Leiden was really nice this year both because of the number of participants, the quality of the field, and the actual presence of many programmers. I got to meet some people I had heard a lot about in the past but never met in person, such as Don Dailey and Larry Kaufman. I have discussed a lot with Don in the past, as we are both, besides chess, active in go programming. Larry told me there were several Monte Carlo related things he wanted to discuss with both of us together, but unfortunately he was rushed to the hospital before Don and I played our game. So this was a missed opportunity upon which we can hopefully follow up next time.
1) In the first round, we drew RedQueen. I had not heard about this program nor the programmer before. It turned out to be a fairly new engine running on Linux under xboard, on a laptop. This should have been an easy game but we did have a small mishap and panic with Erdogans book. In tournaments before, we have used the Convekta book adapter, but it had issues with the move selection not being correct compared to the ChessBase GUI, such as red moves being played. In this tournament, we were using the ChessBase GUI, so this shouldn't have been a problem, if it weren't for the annoying behavior of the GUI to keep resetting the book settings. As a result, we played the wrong opening and ended up in a very committal position that is quite OK for white.
[d]r1bqr1k1/1p4bp/p2p4/P1pP3n/2B1Ppp1/R1N5/1PQB1PPP/4R1K1 w - - 0 19
Deep Sjeng had no problem locking onto the correct strategy: right for the throat, in this case, whites king. RedQueen did not have enough kingsafety yet and didn't see deep enough to understand the problems. It proceeded on the queenside while Deep Sjeng's attack crashed through much faster on the kingside. Then, something funny happened: RedQueen missed a mate in 1 and was summarily mated. It looks like RedQueens author still has some debugging to do.
After this round, I worried a bit about the seeding. Because the field was pretty tight and well filled, it was reasonable to expect there would be ties for the first places. My opponent would obviously have problems winning games if he was missing mates in one, so he would not contribute any resistance points to my tiebreakers, which put me in a bad position if there would be a tie. The reason I had to play him was that Deep Sjeng, despite finishing second last time in Leiden and winning CCT12 ahead of a strong field, and having some of the best hardware, was seeded only 5th. I have been seeded much lower than would be reasonable many times, and often had to hear "just prove us wrong!" from the organizers. But at some point you wonder how many times you have to prove yourself before you are no longer discriminated in this manner.
2) Round 2 already saw a grudge match against the Hiarcs team. We played a solid opening upon which GM Kaufman commented: this is strategically wrong for white and hence out of favor in human play. Obviously Erdogan has a different opinion! In fact Deep Sjeng played it positionally well and improved its position step by step while denying Hiarcs any counter-play.
[d]1b1r2k1/1p2qpp1/r1p1pnb1/p6p/N1PP1P2/1P2QBPP/PB2R1K1/3R4 w - - 0 34
At move 34, but engines agreed that white has a winning break-through with d5! Except that, well, it wasn't! Halfway through the forced variation the cluster failed low to a draw score, and there wasn't enough play left to continue. We agreed to a draw when it petered out to an equal endgame.
This was a frustrating experience because we played well, had a better position, and played a shot that both engines agreed was winning, yet we still only ended up with half a point. Even the cluster cannot see all lines completely through. Suj was very disappointed and wanted to switch back to settings that were successfully used for past tournaments, but I was able to talk him out of it. You cannot ignore thousands of testgames because one other game didn't go as you wish...even if it was an important game.
It seems that in the diagrammed position g4! may still win. Ironically, this is what Deep Sjeng would have played on slower hardware.
3) Due to a scheduling conflict I had to leave for round 3, but Willem Oudheusden volunteered to operate Deep Sjeng. Deep Shredder with white played a very dull opening, and black had easy equality. Unfortunately for us, this meant that the game was a draw before it had really started and we were not able to try to win it. Avoiding these book draws with black is a problem - those half points can get expensive when you want to win the tournament.
4) In round 4 we had black again and this time against Junior. Junior played a closed Spanish, but the line was not particularly difficult for black and Junior made some mistakes almost directly out of book. Deep Sjeng gained control of the open files and pressure against white's weak b pawn. Deep Sjeng went on to win a pawn and a space advantage, but had to accept some holes in its position in return. When Deep Sjeng won a second pawn, this also meant some more lines were opened and the cluster suddenly realized it had gone too far (and like against Hiarcs, just too late...).
[d]3b1r2/3b2k1/1r1p2pp/1q2p3/4Bp2/1P5P/2R1NPPK/2RQ4 b - - 0 45
Junior had no problems maneuvering its pieces to exploit the new holes and went on to press for an advantage. The cluster had to escape to a drawn endgame. Some frustration on my side as for the second time we had a very good position, and when attempting to push through in a long forced variation, we don't get further than a draw.
5) Against Spark we played a fairly offbeat line in the Sicilian. Deep Sjeng gave up the bishop pair and a doubled pawn for a space advantage and a bind on the black position.
[d]r1q1r1k1/pp2bppp/8/n1pR4/2P1NBb1/1P3N2/P1P1Q1PP/5RK1 b - - 0 16
We maneuvered piece by piece and were able to force some positional concessions from black, who was kept firmly in the bind. Eventually, Deep Sjeng was able to deal a killing blow in the following position:
[d]2qb4/5rkp/ppn1bp2/2pN2p1/2P3P1/1PP1N2P/P3Q2B/4R1K1 w - - 0 38
Where it played Nf1! and went on to win easily. Finally a satisfying game, where we played well and our push to win turned out not to have some 30 ply deep refutation.
6) The critical game against Rybka. We had black, which did obviously not help. Nevertheless, our preparation appeared superior, the opening went well and after some 20 moves black had effectively already equalized.
[d]r1r2nk1/p4ppp/2p5/3p4/N2P1Pqn/1P4Pb/P2Q1B1P/3RR1KB w - - 0 26
Rybka doesn't look so though now
[d]r1r3k1/5ppp/2p1nq2/p2pN3/1P1n1P2/6P1/P2B1Q1P/2R1R2K w - a6 0 35
It believed white would still have no more than a draw, while Rybka believed white had a small plus. Rybka continued by making an incorrect exchange sacrifice, likely caused by flaws in the clustered search (the Rybka team apparently updated to a version believed to be stronger for the game against Deep Sjeng). Using the material advantage, the weak passers were cleaned up and black went on to win easily.
When asked when they last lost a game, some Rybka teammembers could not even reply!
After this game, I was hopeful for a possible tournament victory, but it turns out that the draws against the other strong programs were very costly as Rybka had ripped through this part of the field.
7) White against Komodo in a game we had to win to keep some hope of a tournament victory. Although the opening, a Sicilian Marcozy bind was perhaps objectively OK, Deep Sjeng did not seem to know how to proceed. We timed out several times trying to search for the next ply or resolving a better move (16.e5?!), showing that even the search was having problems grasping the position. When it played 21. f5 to weaken the kingside but giving black some (too) good squares, Erdogan immediately commented that this would not end well. White did not manage to get anything resembling an attack going, and black retorted with 28. .. Qb7! giving up a pawn for great piece activity.
[d]3rr1k1/pq3p2/2b2pp1/2p5/2PbP3/1P3BBP/P2QR1P1/5R1K b - - 0 31
White could do little but sit back and wait to see how black was now controlling the board and we were expecting lose.
However, Komodo was just a bit too greedy a snatched an exchange when it could also have won a simple pawn.
[d]q2r4/5pk1/2b1rpp1/8/p1P1Pb2/P1R2B1P/1Q4P1/4BR1K b - - 0 45
This allowed some deep tactics making use of the weaked black king position, and Komodo had to escape to a draw. We had mixed feelings after this game. This felt more like a good game from the opponent than a bad game on our side, particularly as the strategical mistake in the opening is very hard to avoid for a computer.
8) We did not really expect problems in the Joker game, but just to be sure we threw ourselves out of book early (note that Joker has no book). One of the more remarkable things in this game was the following:
[d]r1b1r1k1/p1p1nppp/1bpp1q2/8/3NP3/P1P1B3/1P1N1PPP/R2Q1RK1 w - - 0 12
White played a4! here, forcing the following position:
[d]r1b1r1k1/2p1nppp/1b1p1q2/p1p5/P3P3/2P1BN2/1P1N1PPP/R2Q1RK1 w - a6 0 14
Which would certainly have been avoided by a human player. Another remarkable thing was that Joker missed a simple tactic (takes 6 ply in Deep Sjeng) that left it a piece down in a sequence of trades. It must be a clone of Rybka as the problem was similar to game 6.
9) The last game was a sort of Belgium vs Belgium as the operator for Almond, Hans Secelle, is from my country too. We played a very double-edged French where black gets queenside play and a space advantage, but where he must be careful as white can be fast on the kingside.
[d]3r1rk1/2n1bpp1/pp2b2p/1qp1P3/3pN3/P4BB1/1PPQ1PPP/3RR1K1 w - - 0 21
Black went for the weak pawn on b2, and got hit in the face with Nf6! After Kh8 the cool followup Re4 made it clear that it was already "game over" for black.
Overall, a cool, fun tournament. We are happy with our second place, but not so happy with the play and or outcome of some games. There is always work to do...

