Cfish, shiny and new...

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

Moderators: hgm, Rebel, chrisw

User avatar
MikeB
Posts: 4889
Joined: Thu Mar 09, 2006 6:34 am
Location: Pen Argyl, Pennsylvania

Re: Cfish, shiny and new...

Post by MikeB »

Dann Corbit wrote: Thu Jun 06, 2019 1:40 am Standard SF:
===========================
Total time (ms) : 13317
Nodes searched : 113678565
Nodes/second : 8536349

So, 12170705/8536349 = 1.4257506341411298905421978412551
forty two percent faster, give or take.

On the other hand, I make some changes to the SF source, not all of which I can take back by UCI options.
macOS binaries are available - just modern for now -both gcc and clang versions.

https://github.com/MichaelB7/Cfish/tree ... S-binaries

official source:

https://github.com/syzygy1/Cfish

I have made some modest changes ( non functional/source related) to facilitate compiling for my personal setup:

https://github.com/MichaelB7/Cfish

likewise with Dann , I see about 40% pickup in speed over standard macOS SF binaries ( using 11 threads)
Image
JohnWoe
Posts: 498
Joined: Sat Mar 02, 2013 11:31 pm

Re: Cfish, shiny and new...

Post by JohnWoe »

Stephen Ham wrote: Thu Jun 06, 2019 2:12 am Thanks, Dann!

Since I'm the resident dummy here, please tell me what the clang and gcc suffixes mean. Also, what is the "vanilla" label?

Back when I tested Cfish in tactical battles, I saw something strange. Although Cfish was always faster than other engines, its search depth was sometimes less deep. Why is that? After all, Stockfish has radical pruning to enable a very deep search per unit of time. And Cfish IS Stockfish, but coded in C for greater speed. So...why the faster but sometimes shallower searches?

Thanks in advance.

-Steve-
A program coded in C or C++ has no impact in speed. Both generate ASM. For example I have totally different C program ( to chess engines ) which compiles in both C and C++. And there is absolutely no speed difference. I have benchmarked a lot. It is 100% same source code. The reason Cfish is faster than Stockfish is because it is coded differently.
Dann Corbit
Posts: 12550
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Cfish, shiny and new...

Post by Dann Corbit »

Yes and no.
If you use some of the advanced C++ techniques, it will definitely change the speed.
RTTI, try/catch, virtual functions, etc.
If you have code that compiles as C and as C++ without changing, the speed will be very nearly identical.

See also:
https://chrismdp.com/2015/04/how-i-doub ... plus-plus/
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
Dann Corbit
Posts: 12550
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Cfish, shiny and new...

Post by Dann Corbit »

For reference here is the Asmfish speed:

Code: Select all

F:\chess\asmfish>asmFishW_2019-05-18_popcnt.exe
asmFishW_2019-05-19_popcnt
bench 8192 11 17
*** bench hash 8192 threads 11 depth 17 ***
info string hash set to 8192 MB no large pages
info string node 0 has threads 0 1 2 3 4 5 6 7 8 9 10
1:      nodes: 3048450          12292 knps      248 ms
2:      nodes: 3360110          13658 knps      246 ms
3:      nodes: 1041973          21707 knps      48 ms
4:      nodes: 2824782          14945 knps      189 ms
5:      nodes: 2042302          13348 knps      153 ms
6:      nodes: 2796025          13188 knps      212 ms
7:      nodes: 4454706          13179 knps      338 ms
8:      nodes: 5731090          14081 knps      407 ms
9:      nodes: 5326060          13315 knps      400 ms
10:     nodes: 1781334          14844 knps      120 ms
11:     nodes: 2705996          12299 knps      220 ms
12:     nodes: 5479514          11137 knps      492 ms
13:     nodes: 3608815          13415 knps      269 ms
14:     nodes: 5696230          12771 knps      446 ms
15:     nodes: 2665085          15229 knps      175 ms
16:     nodes: 1041946          16029 knps      65 ms
17:     nodes: 770420           18343 knps      42 ms
18:     nodes: 236172           21470 knps      11 ms
19:     nodes: 1389670          23161 knps      60 ms
20:     nodes: 2342171          20018 knps      117 ms
21:     nodes: 201665           22407 knps      9 ms
22:     nodes: 203946           29135 knps      7 ms
23:     nodes: 518510           30500 knps      17 ms
24:     nodes: 672032           19765 knps      34 ms
25:     nodes: 265412           20416 knps      13 ms
26:     nodes: 626897           18438 knps      34 ms
27:     nodes: 1489737          18621 knps      80 ms
28:     nodes: 2684687          15699 knps      171 ms
29:     nodes: 894937           17547 knps      51 ms
30:     nodes: 547524           21900 knps      25 ms
31:     nodes: 390917           24432 knps      16 ms
32:     nodes: 868746           23479 knps      37 ms
33:     nodes: 280309           23359 knps      12 ms
34:     nodes: 1267259          22629 knps      56 ms
35:     nodes: 1502220          20578 knps      73 ms
36:     nodes: 1585819          26430 knps      60 ms
37:     nodes: 875142           19024 knps      46 ms
38:     nodes: 35825            11941 knps      3 ms
39:     nodes: 63658            15914 knps      4 ms
40:     nodes: 0                0 knps          0 ms
41:     nodes: 0                0 knps          0 ms
42:     nodes: 2473461          11722 knps      211 ms
===========================
Total time (ms) : 5217
Nodes searched  : 75791554
Nodes/second    : 14527804
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.