Stockfish 1.6 - strange behavior in this position

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

royb
Posts: 536
Joined: Thu Mar 09, 2006 12:53 am

Stockfish 1.6 - strange behavior in this position

Post by royb »

The position below is from an engine-vs-engine match I am currently running. I happened to be watching this game as it was played. The position below was reached and is a win for white, but look at what Stockfish-1.6 plays. The game was 5 min + 1 sec but even with 30 secs of analysis (also shown below), Stockfish-1.6 thinks that it's rook "sac" is a draw??

[D] 2r3k1/1p4p1/8/4n3/P2p4/8/6PP/RR4K1 b - - 0 38

Stockfish-1.6 in infinite analysis mode:

1 +0.00 38.... Rc1+ (0.75)
2 +0.00 38.... Rc1+ 39.Rxc1 Nf7 (0.75)
3 +0.00 38.... Rc1+ 39.Rxc1 Nf7 40.Re1 (0.75)
4 +0.00 38.... Rc1+ 39.Rxc1 Nf7 40.Re1 Kh7 (0.75)
5 +0.00 38.... Rc1+ 39.Rxc1 Nf7 40.Re1 Kh7 41.Rab1 (0.75)
6 +0.00 38.... Rc1+ 39.Rxc1 Nf7 40.Re1 Kh7 41.Rab1 Kg6 (0.75)
7 +0.00 38.... Rc1+ 39.Rxc1 Nf7 40.Re1 Kh7 41.Rab1 Kg6 42.Rxb7 (0.75)
8 +0.00 38.... Rc1+ 39.Rxc1 Nf7 40.Re1 Kh7 41.Rab1 Kg6 42.Rxb7 Kh7 (0.76)
9 +0.00 38.... Rc1+ 39.Rxc1 Nf7 40.Re1 Kh7 41.Rab1 Kg6 42.Rxb7 Kh7 43.Rxf7 Kg6 (0.76)
10 +0.00 38.... Rc1+ 39.Rxc1 Nf7 40.Re1 Kh7 41.Rab1 Kg6 42.Rxb7 Kh7 43.Rxf7 Kg6 44.Kf2 (0.83)
11 +0.00 38.... Rc1+ 39.Rxc1 Nf7 40.Re1 Kh7 41.Rab1 Kg6 42.Rxb7 Kh7 43.Rxf7 Kg6 44.Kf2 Kxf7 (0.91)
12 +0.00 38.... Rc1+ 39.Rxc1 Nf7 40.Re1 Kh7 41.Rab1 Kg6 42.Rxb7 Kh7 43.Rxf7 Kg6 44.Kf2 Kxf7 45.Ke2 (1.02)
13 +0.00 38.... Rc1+ 39.Rxc1 Nf7 40.Re1 Kh7 41.Rab1 Kg6 42.Rxb7 Kh7 43.Rxf7 Kg6 44.Kf2 Kxf7 45.Ke2 Kg6 (1.45)
14 +0.00 38.... Rc1+ 39.Rxc1 Nf7 40.Re1 Kh7 41.Rab1 Kg6 42.Rxb7 d3 43.Kf2 d2 44.Ke2 dxe1=Q+ 45.Kxe1 Kh7 46.Rxf7 Kg6 47.Kf2 Kxf7 48.Ke2 Kg6 (2.36)
15 +0.00 38.... Rc1+ 39.Rxc1 Nf7 40.Re1 Kh7 41.Rab1 Kg6 42.Rxb7 d3 43.Kf2 d2 44.Ke2 dxe1=Q+ 45.Kxe1 Kh7 46.Rxf7 Kg6 47.Kf2 Kxf7 48.Ke2 Kg6 (4.23)
16 +0.00 38.... Rc1+ 39.Rxc1 Nf7 40.Re1 Kh7 41.Rab1 Kg6 42.Rxb7 d3 43.Kf2 d2 44.Ke2 dxe1=Q+ 45.Kxe1 Kh7 46.Rxf7 Kg6 47.Kf2 Kxf7 48.Ke2 Kg6 49.Kf2 Kh7 (8.69)
17 +0.00 38.... Rc1+ 39.Rxc1 Kh7 40.Kf2 Kg6 41.a5 Kh7 42.a6 bxa6 43.Rxa6 d3 44.Rb6 d2 45.Rb5 dxc1=Q 46.Rxe5 Kg6 47.Rb5 Kh7 48.Rb6 Kg8 49.Ke2 (31.19)

Of course a move like ...Rc7 is still bound to lose, but not nearly as quickly as ...Rc1 will.

Roy
Hart

Re: Stockfish 1.6 - strange behavior in this position

Post by Hart »

Code: Select all

Stockfish-16-x64-ja:
   6	00:00	       9.274	98.659	+3.55	38. ... Kf7 39.Rxb7+ Ke6 40.Re1 Rc5 41.Rb5 Rxb5 42.axb5
   6	00:00	      10.295	93.590	+2.90	38. ... Rc7 39.Rb5 Nf7 40.Rd5 Rc4 41.Kf2
   7	00:00	      22.252	202.290	+3.51	38. ... Rc7 39.Rb5 Nd3 40.Rab1 Nc5 41.Rc1 b6 42.Rxb6 Nxa4 43.Rxc7 Nxb6
   8	00:00	      44.611	316.390	+3.11	38. ... Rc7 39.Rb5 Nc4 40.Rd1 Na3 41.Re5 Nc2 42.Kf2 Kf7
   9	00:00	      86.975	462.632	+3.19	38. ... Rc7 39.Rb5 Ng4 40.Rab1 Ne3 41.R5b2 Kf7 42.Rxb7 Rxb7 43.Rxb7+ Kf6
  10	00:00	     281.373	721.469	+3.11	38. ... Rc7 39.Rb5 Nd3 40.Rab1 Rc4 41.Rxb7 Rxa4 42.Rc7 Nf4 43.Kf2 Ra2+ 44.Kf3 Nxg2
  11+	00:00	     414.086	758.399	+3.35	38. ... Rc7 39.Rb5 Nd3 40.g3 Nc1 41.Rab1 Ne2+ 42.Kf1 Nc3 43.Rxb7 Rf7+ 44.Rxf7 Kxf7 45.Rb7+
  12	00:01	     973.481	866.086	+3.63	38. ... Rc7 39.Rb5 Nd3 40.g3 Rc2 41.Rxb7 Nc5 42.Rb8+ Kh7 43.a5 d3 44.Rd8 Nb3 45.Rd1 Kg6 46.R1xd3 Nxa5
  13	00:02	   1.901.454	916.363	+3.71	38. ... Rc7 39.Rb5 Nd3 40.g3 Nc1 41.Rab1 d3 42.Kf1 Kh7 43.Ke1 Rc2 44.Rxb7 Na2 45.R1b3 Nc3
  14	00:03	   3.628.054	941.373	+3.75	38. ... Rc7 39.Rb5 Nd3 40.g3 Nc1 41.Rab1 d3 42.Kf1 d2 43.Rd5 Nd3 44.Rd1 Nb2 45.R1xd2 Nxa4 46.Rd7 Rxd7 47.Rxd7 b5 48.Rc7 Kh7 49.Ke2 Kg6
  15	00:06	   6.134.693	963.816	+3.67	38. ... Rc7 39.Rb5 Nd3 40.g3 Nc1 41.Rab1 d3 42.Kf1 d2 43.Rd5 Nd3 44.Rd1 Nb2 45.R1xd2 Nxa4 46.Rd7 Rc1+ 47.Ke2 b5 48.Rb7 Nc3+ 49.Ke3 Kh7 50.Rd3 Nd1+ 51.Kd2 Nf2 52.Kxc1 Nxd3+ 53.Kd2
  16+	00:11	  10.860.517	977.720	+3.87	38. ... Rc7 39.Rb5 Ng4 40.Rd1 Rc2 41.h3 Ne3 42.Rxd4 Rxg2+ 43.Kh1 Ra2 44.Rxb7 Ra1+ 45.Kh2 Ra2+ 46.Kg1 Rg2+ 47.Kh1 Ra2 48.Rd8+ Kh7 49.Re8
  17	00:28	  28.328.658	991.760	+3.71	38. ... Rc7 39.Rb5 Nd3 40.g3 Nc1 41.Rab1 d3 42.Kf1 d2 43.Rd5 Nd3 44.Rd1 Nb2 45.R1xd2 Nxa4 46.Rd7 Rc1+ 47.Ke2 b5 48.Rb7 Nc3+ 49.Ke3 Kh7 50.h3 Nb1
  18	00:41	  41.037.667	991.176	+3.83	38. ... Rc7 39.Rb5 Nd3 40.g3 Nc1 41.Rab1 d3 42.Kf1 d2 43.Rd5 Nd3 44.Rd1 Nb2 45.R1xd2 Nxa4 46.Rd7 Rc1+ 47.Ke2 b5 48.Rb7 Kh7 49.Rd4 Rc2+ 50.Kd3 Rb2 51.Rd5 Kg6 52.Rdxb5 Rxh2
  19	01:08	  68.083.963	988.070	+3.91	38. ... Rc7 39.Rb5 Nd3 40.g3 Rc5 41.Rxb7 Rc2 42.a5 Ne5 43.Rf1 Ra2 44.Rb8+ Kh7 45.Rb5 Nc6 46.Rd1 Kg8 47.h4 Kf7 48.Rb6 Nxa5 49.Rxd4 Ke7 50.Rb5

Maybe it's a horizon issue. The scores I am seeing indicate White winning, not a draw.
royb
Posts: 536
Joined: Thu Mar 09, 2006 12:53 am

Re: Stockfish 1.6 - strange behavior in this position

Post by royb »

I am beginning to wonder if the 'make gcc' that I did to compile it is somehow botched. It produced an executable just fine, but this behavior seems very odd for an engine that is supposed to be noticeably stronger than Stockfish-1.5. Perhaps my configuration is somehow mangled?

Roy
ernst
Posts: 352
Joined: Thu Mar 09, 2006 6:00 pm

Re: Stockfish 1.6 - strange behavior in this position

Post by ernst »

The engine might behave different when inputing a game or a position. Does the draw score happen after sending the FEN, the PGN or both? For the record, I get Rc7 as well.

New game
2r3k1/1p4p1/8/4n3/P2p4/8/6PP/RR4K1 b - - 0 1

Analysis by Stockfish 1.6 JA 64bit:

38...Kf7 39.Rxb7+ Ke6 40.Re1 Kf6 41.Rf1+ Ke6 42.Rxg7 Ra8 43.Ra1
+- (3.63) Depth: 6 00:00:01 9kN
38...Rc7 39.Rb5 Ng4 40.Rab1 Kf7 41.Rxb7
+- (3.23) Depth: 6 00:00:01 9kN
38...Rc7 39.Rb5 Re7 40.Rab1 Kf7 41.Rxb7 Rxb7 42.Rxb7+ Kf6
+- (3.39) Depth: 7 00:00:01 22kN
38...Rc7 39.Rb5 Nc6 40.Rab1 Nd8 41.Rd1 Ne6
+- (2.98 !) Depth: 8 00:00:01 50kN
38...Rc7 39.Rb5 Nc6 40.Rab1 Nd8 41.R5b4 Rd7 42.Kf2 Kf7 43.Ke2 Ke6
+- (3.35) Depth: 9 00:00:01 79kN
38...Rc7 39.Rb5 Nd3 40.Rab1 Rc4 41.Rxb7 Rxa4 42.Rd1 Nc5 43.Rc7
+- (3.11) Depth: 10 00:00:01 163kN
38...Rc7 39.Rb5 Nd3 40.Rab1 Rc4 41.Rxb7 Rxa4 42.Rd1 Ne5 43.h3 d3 44.Kf2 Ra2+ 45.Ke3 Rxg2
+- (2.94) Depth: 11 00:00:01 407kN
38...Rc7 39.Rb5 Nd3 40.Rab1 Rc4 41.Rxb7 Rxa4 42.Rd1 Nc5 43.Re7 Kh7 44.Re5 Rc4 45.Kf2 Nd7
+- (2.90) Depth: 12 00:00:01 771kN
38...Rc7 39.Rb5 Ng4 40.Rd1 Rc4 41.Rd5 Rxa4 42.R5xd4 Rxd4 43.Rxd4 Ne3 44.Kf2
+- (3.15 --) Depth: 13 00:00:01 907kN
38...Rc7 39.Rb5 Ng4 40.Rd1 Rc2 41.h3 Ne3 42.Rxd4 Rxg2+ 43.Kh1 Ra2 44.Rxb7 Nf5 45.Rd5 Ng3+ 46.Kg1 Rxa4
+- (3.91) Depth: 14 00:00:02 2325kN
38...Rc7 39.Rb5 Nc6 40.Rab1 Nd8 41.R5b4 Rd7 42.Kf2 Kf7 43.Ke2 Ke7 44.Kd3 Ne6 45.Re1 Kf6 46.Rf1+ Kg5 47.Rb5+ Kg4
+- (3.79) Depth: 15 00:00:03 10617kN
38...Rc7 39.Rb5 Nc6 40.Rab1 Nd8 41.R5b4 Rd7 42.Kf2 Kf7 43.Ke2 Ke7 44.Rb5 Kd6 45.Kd3 Ne6 46.Ke4 Nc5+ 47.Kxd4 Kc6+ 48.Ke3 Nxa4
+- (3.75) Depth: 16 00:00:03 13740kN
38...Rc7 39.Rb5 Re7 40.Rab1 Kf7 41.Rxb7 Rxb7 42.Rxb7+ Ke6 43.a5 Kd5 44.Rxg7
+- (3.95 --) Depth: 17 00:00:04 20136kN
38...Rc7 39.Rb5 Nc6 40.Rab1 Nd8 41.R5b4 Rd7 42.Kf2 Kf7 43.Ke2 Ke7 44.Kd2 Kf6 45.Rb5 Rc7 46.Rb6+ Kf7 47.Rf1+ Ke7 48.Re1+ Kf7 49.Kd3 Rc6 50.Rb5
+- (3.95) Depth: 18 00:00:08 47320kN
38...Rc7 39.Rb5 Nd3 40.g3 Nc1 41.Rab1 d3 42.Kf1 d2 43.Rd5 Nd3 44.Rd1 Nb2 45.R1xd2 Nxa4 46.Rd7 Rc1+ 47.Ke2 b5 48.Rb7 Nc3+ 49.Ke3 Re1+ 50.Kf3 Kh7 51.Rd3 Rf1+ 52.Ke3
+- (3.63) Depth: 19 00:00:13 79931kN
38...Rc7 39.Rb5 Nc6 40.Rab1 Nd8 41.R5b4 Rd7 42.Kf2 Kf7 43.Ke2 Ke7 44.Kd2 Kf7 45.Rb6 Rd5 46.Rf1+ Ke8 47.Re1+ Kf7 48.Rc1 Rd7 49.Kd3 Nc6 50.Rb5 Ke6
+- (4.04) Depth: 20 00:00:21 132mN
38...Rc7 39.Rb5 Nc6 40.Rab1 Nd8 41.R5b4 Rd7 42.Kf2 Kf7 43.Ke2 Re7+ 44.Kd3 Ne6 45.Kd2 Nc5 46.Rxd4 Re6 47.a5 Ra6 48.Rb5 Rxa5 49.Rxa5 Nb3+ 50.Ke3 Nxa5 51.Rd7+ Kf6 52.Ke4
+- (4.24) Depth: 21 00:00:33 215mN
38...Rc7 39.Rb5 Nc6 40.Rab1 Nd8 41.R5b4 Rd7 42.Kf2 Kf7 43.Ke2 g6 44.Rb6 Re7+ 45.Kd3 Ne6 46.Rf1+ Kg7 47.a5 g5 48.g3 Nd8 49.Rf5 g4 50.Rg5+ Kf7 51.Rxg4 Nc6 52.Rf4+ Kg7 53.Re4 Rxe4 54.Kxe4
+- (4.40) Depth: 22 00:01:13 483mN
38...Rc7 39.Rb5 Nc6 40.Rab1 Nd8 41.R5b4 Rd7 42.Kf2 Kf7 43.Ke2 g6 44.Rb6 Re7+ 45.Kd3 Ne6 46.Rf1+ Kg7 47.a5 g5 48.g3 Kg6 49.Kd2 Kg7 50.Rf5 g4 51.Rfb5 Nd8 52.Kd3 Kf7 53.Rh5 Ne6 54.Rh7+ Ng7 55.Kxd4
+- (4.52) Depth: 23 00:02:28 985mN
38...d3 39.Rxb7 Rc2 40.a5 d2 41.Rbb1 Nd3 42.Rf1 Ne1 43.Rd1 Nd3 44.a6 Ra2 45.Rf3 Ne5 46.Rf4 Rxa6 47.Rxd2 Ra5 48.h4 Ng6 49.Rfd4 Ne5 50.Kf2 Kf7 51.Ke3
+- (4.44) Depth: 23 00:02:57 1176mN
38...d3 39.Rxb7 Rc2 40.a5 d2 41.Rbb1 Nd3 42.Rf1 Ne1 43.Rd1 Nd3 44.a6 Ra2 45.Rf5 Rxa6 46.Rxd2 Ra1+ 47.Rf1 Ra3 48.Re2 Ra5 49.Re3 Nb4 50.Kf2 Nd5 51.Re5 Kf7 52.Kf3 Kg6 53.Ke4
+- (4.52) Depth: 24 00:04:20 1731mN
38...d3 39.Rxb7 Rc2 40.a5 d2 41.Rbb1 Nd3 42.Rf1 Ne1 43.Rd1 Nd3 44.a6 Ra2 45.Rf5 Rxa6 46.Rxd2 Ra1+ 47.Rf1 Ra3 48.Re2 Ra5 49.Re3 Nb4 50.Kf2 Kh7 51.Rh3+ Kg6 52.Rg3+ Kh6 53.Ke3 Ra3+ 54.Ke4 Rxg3 55.hxg3 Kg5 56.Rf7
+- (4.56) Depth: 25 00:06:54 2751mN
royb
Posts: 536
Joined: Thu Mar 09, 2006 12:53 am

Re: Stockfish 1.6 - strange behavior in this position

Post by royb »

During the game it thought it had a draw and also after inputting the FEN it says draw. Stockfish-1.5 does not want to play ...Rc1.

I'm beginning to think the binary that my system produced is somehow flawed.

Anyone else see this behavior with a 64-bit compile on their Ubuntu system?

Roy
UncombedCoconut
Posts: 319
Joined: Fri Dec 18, 2009 11:40 am
Location: Naperville, IL

Re: Stockfish 1.6 - strange behavior in this position

Post by UncombedCoconut »

Hi, I'm also on 64-bit Linux and seeing Stockfish 1.6 throw itself on a sword when it approaches the endgame in an inferior position. (The OP's position is hardly the weirdest I've seen; I typically see it hang all its pieces and, unless it needs to delay mate, push its pawns in sequence to the back rank to get them captured.) I've been busy lately so I hadn't determined whether this was a bug or aggressive aspiration. It sort of makes sense -- search deeper to find a forced draw if one exists; if not, an engine strong enough to reach this position against SF is strong enough to find the forced win...
royb
Posts: 536
Joined: Thu Mar 09, 2006 12:53 am

Re: Stockfish 1.6 - strange behavior in this position

Post by royb »

UncombedCoconut wrote:Hi, I'm also on 64-bit Linux and seeing Stockfish 1.6 throw itself on a sword when it approaches the endgame in an inferior position. (The OP's position is hardly the weirdest I've seen; I typically see it hang all its pieces and, unless it needs to delay mate, push its pawns in sequence to the back rank to get them captured.) I've been busy lately so I hadn't determined whether this was a bug or aggressive aspiration. It sort of makes sense -- search deeper to find a forced draw if one exists; if not, an engine strong enough to reach this position against SF is strong enough to find the forced win...
I think the problem is in the Makefile. I used the Makefile from the Stockfish-1.5 build to make the 1.6 version and this behavior is now gone (...Rc1 not preferred EVER -- and that's a good thing).

Roy
UncombedCoconut
Posts: 319
Joined: Fri Dec 18, 2009 11:40 am
Location: Naperville, IL

Re: Stockfish 1.6 - strange behavior in this position

Post by UncombedCoconut »

I'll check for unresolved strict-aliasing issues then!

Edit: Have you tried removing the -DNDEBUG flag? (This may also require commenting out the movegen.cpp:593...) Some assertion does seem to be failing in real games. :cry:
royb
Posts: 536
Joined: Thu Mar 09, 2006 12:53 am

Re: Stockfish 1.6 - strange behavior in this position

Post by royb »

Well, that seemed to help for *that position*. However here is another position where Stockfish-1.6 makes a rather unusual move:

[D] rnq1kbnr/1pp1p2R/3p4/p3P3/3P1pP1/2NQ1N2/PPP2PP1/R3KB2 b Qkq - 0 10

Here, SF-1.6 plays ...Qxg4 instead of ...Rxh7 (again, a lousy position for black anyway, but Qxg4 seems much worse than ...Rxh7 which SF-1.5 plays as well as many other engines.

1 +0.00 10.... Kd8 (0.84)
2 +0.00 10.... Qxg4 11.Rxh8 (0.84)
3 +0.00 10.... Qxg4 11.Rxh8 dxe5 (0.84)
4 +0.00 10.... Qxg4 11.Rxh8 dxe5 12.dxe5 (0.84)
5 +0.00 10.... Qxg4 11.Rxh8 dxe5 12.dxe5 a4 (0.84)
6 +0.00 10.... Qxg4 11.Rxh8 dxe5 12.dxe5 a4 13.O-O-O (0.87)
7 +0.00 10.... Qxg4 11.Rxh8 dxe5 12.dxe5 a4 13.O-O-O a3 (0.88)
8 +0.00 10.... Qxg4 11.Rxh8 dxe5 12.dxe5 a4 13.O-O-O a3 14.bxa3 (0.92)
9 +0.00 10.... Qxg4 11.Rxh8 dxe5 12.dxe5 a4 13.O-O-O Nd7 14.Nd5 Kf7 (0.99)
10 +0.00 10.... Qxg4 11.Rxh8 dxe5 12.dxe5 a4 13.O-O-O Nd7 14.Nd5 Kf7 15.Nxc7 (1.15)
11 +0.00 10.... Qxg4 11.Rxh8 Nd7 12.exd6 cxd6 13.Qg6+ Qxg6 14.Bb5 Qxc2 15.Rxg8 Qxb2 16.Kd1 Qxa1+ 17.Kc2 (1.92)
12 +0.00 10.... Qxg4 11.Rxh8 Nd7 12.exd6 cxd6 13.Qg6+ Qxg6 14.Bb5 Qxc2 15.Rxg8 Qxb2 16.Kd1 Qxa1+ 17.Kc2 Kd8 (3.16)
13 +0.00 10.... Qxg4 11.Rxh8 Nd7 12.exd6 cxd6 13.Qg6+ Qxg6 14.Bb5 Qxc2 15.Rxg8 Qxb2 16.Kd1 Qxa1+ 17.Kc2 Kd8 18.Nd5 Qxa2+ 19.Kc1 (6.81)
14 +0.20 10.... Qxg4 11.Rxh8 b6 12.exd6 cxd6 13.Qh7 Kd8 14.Rxg8 Qe6+ 15.Ne4 (48.34)
14 +0.00 10.... Rxh7 11.Qxh7 Qxg4 12.exd6 Kd8 13.dxe7+ Nxe7 14.Kd2 Nd7 15.Qf7 c6 16.Qe8+ Kxe8 17.Nd5 cxd5 18.Bb5 Qxg2 19.Ng5 (51.82)
15 +0.00 10.... Rxh7 11.Qxh7 Qxg4 12.exd6 Kd8 13.dxe7+ Nxe7 14.Kd2 Nd7 15.Qf7 c6 16.Qe8+ Kxe8 17.Nd5 cxd5 18.Bb5 Qxg2 19.Ng5 Qxg5 (56.47)

You can see that SF-1.6 eventually switches to ...Rxh7 but the 0.00 eval is just crazy as White is still winning by a bunch.

Roy
mcostalba
Posts: 2684
Joined: Sat Jun 14, 2008 9:17 pm

Re: Stockfish 1.6 - strange behavior in this position

Post by mcostalba »

royb wrote: I think the problem is in the Makefile. I used the Makefile from the Stockfish-1.5 build to make the 1.6 version and this behavior is now gone (...Rc1 not preferred EVER -- and that's a good thing).

Roy
Hi Roy,

could you pelase verify if the following patch fixes the problem for you ?

Code: Select all

--- a/src/Makefile
+++ b/src/Makefile
@@ -106,6 +106,7 @@ gcc:
 	$(MAKE) \
 	CXX='g++' \
 	CXXFLAGS="$(GCCFLAGS)" \
+	CXXFLAGS+='-fno-strict-aliasing' \	
 	all


Thanks
Marco


P.S: BTW I strongly suggest Intel compiler for Linux, binary are way faster. Use 'make icc-profile' or 'make icc-profile-popcnt' if you have a CPU with POPCNT support and the make will do all the steps to build up a pgo binary in a fully automatic fashion.