Difference between revisions of "AsmFish"

From Chessprogramming wiki
Jump to: navigation, search
 
(9 intermediate revisions by the same user not shown)
Line 4: Line 4:
  
 
'''asmFish''',<br/>
 
'''asmFish''',<br/>
a [[Stockfish#ports|port]] of Stockfish in [[x86-64]] [[Assembly|assembly]] by [[Mohammed Li]], optional using [[AVX2]] and [[BMI2]] instructions, assembled with [https://en.wikipedia.org/wiki/FASM FASM] to run under [[Windows]] or [[Unix|UNIX]]/[[Linux]], first released in June 2016. The fun project is about to demonstrate how an experienced assembly programmer can optimize a program compared with [https://en.wikipedia.org/wiki/GNU_Compiler_Collection GCC] <ref>[https://groups.google.com/d/msg/fishcooking/HKIYwO6pF-s/p9t48jDZBAAJ Re: [for fun] rewrite of stockfish into asm and question on source] by [[Mohammed Li]], [[Computer Chess Forums|FishCooking]], April 18, 2016</ref>. A few structural optimizations were also applied, such as elimination of [[Piece-Lists|piece lists]] as already tried in Stockfish <ref>[https://groups.google.com/d/msg/fishcooking/aJEf-_SmpWY/TARC-1aPGzYJ removal of piece lists] by [[Mohammed Li]], [[Computer Chess Forums|FishCooking]], November 11, 2014</ref>, which were later reinstalled due to the slower but stronger '''pedantFish''' (asmFish with PEDANTIC = 1) with the same node counts as Stockfish, became default <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=7&t=69364&start=12 Re: piece lists advantage with bit-boards?] by [[Ronald de Man]], [[CCC]], December 26, 2018</ref>. Critical functions in asmFish were not conform to the x86-64 [https://en.wikipedia.org/wiki/Application_binary_interface ABI] concerning register usage and [https://en.wikipedia.org/wiki/Calling_convention calling convention] <ref>[http://www.agner.org/optimize/#manuals Agner Fog's manuals]</ref>. Some less time critical code was ported using GCC generated assembly output, such as [[Ronald de Man|Ronald de Man's]] probing code for [[Syzygy Bases]]. asmFish further supports [[Memory#HugePages|large pages]], and its [[Parallel Search|parallel search]] is [[NUMA|numa]] aware <ref>[https://github.com/tthsqe12/asm/blob/master/readme.txt asm/readme.txt at master · tthsqe12/asm · GitHub]</ref> <ref>[https://groups.google.com/d/msg/fishcooking/ezt6MrAuXqs/qIR2HEciEgAJ lets get the ball moving down the field on numa awareness] by [[Mohammed Li]], [[Computer Chess Forums|FishCooking]], August 30, 2016</ref> .  
+
a [[Stockfish#ports|port]] of Stockfish in [[x86-64]] [[Assembly|assembly]] by [[Mohammed Li]], optional using [[AVX2]] and [[BMI2]] instructions, assembled with [https://en.wikipedia.org/wiki/FASM FASM] to run under [[Windows]] or [[Unix|UNIX]]/[[Linux]], first released in June 2016. The fun project is about to demonstrate how an experienced assembly programmer can optimize a program compared with [https://en.wikipedia.org/wiki/GNU_Compiler_Collection GCC] <ref>[https://groups.google.com/d/msg/fishcooking/HKIYwO6pF-s/p9t48jDZBAAJ Re: <nowiki>[for fun]</nowiki> rewrite of stockfish into asm and question on source] by [[Mohammed Li]], [[Computer Chess Forums|FishCooking]], April 18, 2016</ref>. A few structural optimizations were also applied, such as elimination of [[Piece-Lists|piece lists]] as already tried in Stockfish <ref>[https://groups.google.com/d/msg/fishcooking/aJEf-_SmpWY/TARC-1aPGzYJ removal of piece lists] by [[Mohammed Li]], [[Computer Chess Forums|FishCooking]], November 11, 2014</ref>, which were later reinstalled due to the slower but stronger '''pedantFish''' (asmFish with PEDANTIC = 1) with the same node counts as Stockfish, became default <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=7&t=69364&start=12 Re: piece lists advantage with bit-boards?] by [[Ronald de Man]], [[CCC]], December 26, 2018</ref>. Critical functions in asmFish were not conform to the x86-64 [https://en.wikipedia.org/wiki/Application_binary_interface ABI] concerning register usage and [https://en.wikipedia.org/wiki/Calling_convention calling convention] <ref>[http://www.agner.org/optimize/#manuals Agner Fog's manuals]</ref>. Some less time critical code was ported using GCC generated assembly output, such as [[Ronald de Man|Ronald de Man's]] probing code for [[Syzygy Bases]]. asmFish further supports [[Memory#HugePages|large pages]], and its [[Parallel Search|parallel search]] is [[NUMA|numa]] aware <ref>[https://groups.google.com/d/msg/fishcooking/ezt6MrAuXqs/qIR2HEciEgAJ lets get the ball moving down the field on numa awareness] by [[Mohammed Li]], [[Computer Chess Forums|FishCooking]], August 30, 2016</ref> .  
  
 
=See also=  
 
=See also=  
Line 24: Line 24:
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=65099 Pedant And ASM] by menniepals, [[CCC]], September 07, 2017
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=65099 Pedant And ASM] by menniepals, [[CCC]], September 07, 2017
 
* [http://www.talkchess.com/forum/viewtopic.php?t=65671 asmfish_macOS_11082017] by [[Michael Byrne|Michael B]], [[CCC]], November 08, 2017  
 
* [http://www.talkchess.com/forum/viewtopic.php?t=65671 asmfish_macOS_11082017] by [[Michael Byrne|Michael B]], [[CCC]], November 08, 2017  
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=65797 asmfishX - macOS] by [[Michael Byrne|Michael B]], [[CCC]], November 23, 2017
 
==2018==
 
==2018==
 
* [http://www.talkchess.com/forum/viewtopic.php?t=66373 asmFish update - all flavors of OS] by [[Michael Byrne|Michael B]], [[CCC]], January 20, 2018
 
* [http://www.talkchess.com/forum/viewtopic.php?t=66373 asmFish update - all flavors of OS] by [[Michael Byrne|Michael B]], [[CCC]], January 20, 2018
Line 30: Line 31:
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=68546 Asmfish further development] by [[Günther Simon]], [[CCC]], October 01, 2018
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=68546 Asmfish further development] by [[Günther Simon]], [[CCC]], October 01, 2018
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=69364&start=12 Re: piece lists advantage with bit-boards?] by [[Ronald de Man]], [[CCC]], December 26, 2018 » [[Piece-Lists]]
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=69364&start=12 Re: piece lists advantage with bit-boards?] by [[Ronald de Man]], [[CCC]], December 26, 2018 » [[Piece-Lists]]
 +
==2019==
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=70614 asmFish] by [[Stephen Ham]], [[CCC]], April 28, 2019
 +
: [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=70614&start=13 Re: asmFish] by [[Ronald de Man]], [[CCC]], May 05, 2019
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=70944 in case you had not noticed ..]  by [[Michael Byrne|MikeB]], [[CCC]], June 07, 2019
  
 
=External Links=  
 
=External Links=  
 
==Chess Engine==
 
==Chess Engine==
 
* [https://github.com/lantonov/asmFish/wiki GitHub -  lantonov/asmFish Wiki]
 
* [https://github.com/lantonov/asmFish/wiki GitHub -  lantonov/asmFish Wiki]
* [https://github.com/lantonov/asmFish GitHub - lantonov/asmFish: The latest version of asmFish by Mohammed Li] hosted by [[Lyudmil Antonov]]
+
* [https://github.com/lantonov/asmFish GitHub - lantonov/asmFish] - A continuation of the nice project [[asmFish]] by [[Mohammed Li]] (07.08.2019), hosted by [[Lyudmil Antonov]]
 
* [https://github.com/Counterply/asmFish/tree/asmFish-CounterPly GitHub - Counterply/asmFish at asmFish-CounterPly] hosted by [[Justin Dehorty]]
 
* [https://github.com/Counterply/asmFish/tree/asmFish-CounterPly GitHub - Counterply/asmFish at asmFish-CounterPly] hosted by [[Justin Dehorty]]
* [https://github.com/tthsqe12/asm GitHub - tthsqe12/asm: stockfish chess engine in x86-64]
 
 
==Misc==
 
==Misc==
* [[:Category:Yes|Yes]] - [https://en.wikipedia.org/wiki/Fragile_(Yes_album) We Have Heaven], [https://en.wikipedia.org/wiki/Long_Distance_Runaround Long Distance Runaround], [https://en.wikipedia.org/wiki/The_Fish_%28Schindleria_Praematurus%29 The Fish (Schindleria Praematurus)], Album [https://en.wikipedia.org/wiki/Fragile_(Yes_album) Fragile] (1971), [https://en.wikipedia.org/wiki/YouTube YouTube] Video
+
* [[:Category:Yes|Yes]] - [https://en.wikipedia.org/wiki/Fragile_(Yes_album)#Songs The Fish (Schindleria Praematurus)], [https://en.wikipedia.org/wiki/Live_at_Montreux_2003 Live at Montreux 2003] [https://en.wikipedia.org/wiki/YouTube YouTube] Video
: {{#evu:https://www.youtube.com/watch?v=ZsHNN7dfyRw|alignment=left|valignment=top}}
+
: {{#evu:https://www.youtube.com/watch?v=iJu-AnzyQBI|alignment=left|valignment=top}}
  
 
=References=  
 
=References=  
Line 48: Line 52:
 
[[Category:Open Source]]
 
[[Category:Open Source]]
 
[[Category:UCI]]
 
[[Category:UCI]]
 +
[[Category:PC]]
 +
[[Category:X64]]
 +
[[Category:Linux]]
 +
[[Category:Mac]]
 +
[[Category:Windows]]
 
[[Category:Yes]]
 
[[Category:Yes]]
[[Category:Bill Bruford]]
 
 
[[Category:Chris Squire]]
 
[[Category:Chris Squire]]

Latest revision as of 21:29, 28 February 2021

Home * Engines * Stockfish * asmFish

Istiophorus platypterus, one of the world's fastest fish [1]

asmFish,
a port of Stockfish in x86-64 assembly by Mohammed Li, optional using AVX2 and BMI2 instructions, assembled with FASM to run under Windows or UNIX/Linux, first released in June 2016. The fun project is about to demonstrate how an experienced assembly programmer can optimize a program compared with GCC [2]. A few structural optimizations were also applied, such as elimination of piece lists as already tried in Stockfish [3], which were later reinstalled due to the slower but stronger pedantFish (asmFish with PEDANTIC = 1) with the same node counts as Stockfish, became default [4]. Critical functions in asmFish were not conform to the x86-64 ABI concerning register usage and calling convention [5]. Some less time critical code was ported using GCC generated assembly output, such as Ronald de Man's probing code for Syzygy Bases. asmFish further supports large pages, and its parallel search is numa aware [6] .

See also

Forum Posts

2015

Re: [for fun] rewrite of stockfish into asm and question on source by Mohammed Li, FishCooking, April 18, 2016

2016

2017

2018

Re: asmFish update - all flavors of OS by T. Poppins, CCC, January 23, 2018

2019

Re: asmFish by Ronald de Man, CCC, May 05, 2019

External Links

Chess Engine

Misc

References

Up one Level