syzygy1 / Cfish

C port of Stockfish
GNU General Public License v3.0
137 stars 59 forks source link

Nodes/second output in command prompt #37

Closed ChessMan3 closed 6 years ago

ChessMan3 commented 6 years ago

Hi! I noticed that comparing speed of Cfish & Stockfish via "bench' command in Windows command promt shows only 4-5% speedup of Cfish, but in Build Tester and GUI (like Aquarium or Fritz) it shows about 10-15%. I compared your cfish_9_x64_modern_windows and official SF's popcnt versions.

MichaelB7 commented 6 years ago

Check to see if Large Pages is enabled at the command line. It appears to me that is where the big gain come from. The c code itself is worth -3- 7 % gain , depending on processor and compiler. For macOS I see a 7.5% gain on 2010 Mac Pro i7 with popcount , a 3.3% gain on 2015 iMac with bmi2. Both with clang as the compiler. My understanding is that the gain is greater on Windows with Large Pages enabled. MacOS does not have Large Pages.

ChessMan3 commented 6 years ago

Under Linux Mint 18.2 i have +10-12% for Cfish with -flto for both Gcc 5.0 and 7.2. No -march=native.

ChessMan3 commented 6 years ago

Some time before Cfish was even faster than asmFish for me (Mint 18.2)

ChessMan3 commented 6 years ago

Without LP: https://postimg.org/image/wlfxzq5g3/ https://postimg.org/image/vj5rh6ucj/

syzygy1 commented 6 years ago

I cross-compiled cfish_9_x64_modern_windows.exe on Linux for Windows with gcc-7.2.0, but it seems to be lacking in speed (e.g. compared to cfish compiled on my windows laptop with gcc-6.2.0).

ChessMan3 commented 6 years ago

Compared to my 7.2.0 gcc compilation your is only 0.5-1% slower

https://postimg.org/image/kjp5j9103/

syzygy1 commented 6 years ago

Could you try cfish_9_x64_modern_windows_gcc62.exe that I have just added? On my Sandy Bridge laptop it is clearly faster than cfish_9_x64_modern_windows.exe. But it seems the relative speed of different compiles varies from processor to processor.

ChessMan3 commented 6 years ago

Yes speed is varies. For me your cfish_9_x64_modern_windows.exe is faster than cfish_9_x64_modern_windows_gcc62.exe

https://postimg.org/image/9m1bh41yr/

syzygy1 commented 6 years ago

Interesting. The explanation might be that gcc-7.2 optimises instruction scheduling for newer processors.

Saugstrahler commented 6 years ago

Hi Ronald, here my results with Buildtester 1.4.7.0 bench 1024 12 15 under Win7 with 3930k @4GHz:

cfish_9_x64_modern_windows_gcc62.exe 18.881.975 CFish 9 own compile gcc7.3.0 18.877.075 - 0,025% cfish_9_sandybridge_modern_windows.exe 18.870.142 - 0,063% cfish_9_x64_modern_windows.exe 18.650.043 - 1,244% Stockfish 9 official.exe 16.167.427 -16,790% Stockfish 9 own compile gcc7.3.0 15.974.958 -18,197% Stockfish 9 ultimaiq 15.842.340 -19,187% Stockfish 9 abrok 14.789.929 -27,668%

So, on my machine there's no difference between gcc6.2, gcc7.3 and the sandy-compile