Difference between revisions of "AsmFish"
GerdIsenberg (talk | contribs) |
GerdIsenberg (talk | contribs) |
||
(16 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]]/[[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> . Critical functions in asmFish | + | 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 11: | Line 11: | ||
=Forum Posts= | =Forum Posts= | ||
==2015== | ==2015== | ||
− | * [https://groups.google.com/d/msg/fishcooking/HKIYwO6pF-s/-DOONSK5F-IJ [for fun] rewrite of stockfish into asm and question on source] by [[Mohammed Li]], [[Computer Chess Forums|FishCooking]], January 09, 2015 | + | * [https://groups.google.com/d/msg/fishcooking/HKIYwO6pF-s/-DOONSK5F-IJ <nowiki>[for fun]</nowiki> rewrite of stockfish into asm and question on source] by [[Mohammed Li]], [[Computer Chess Forums|FishCooking]], January 09, 2015 |
− | : [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 | + | : [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 |
==2016== | ==2016== | ||
* [https://groups.google.com/d/msg/fishcooking/z2sd39wrUvw/j5RpSXGmBAAJ new humanistic compile of SF is 108KB] by [[Mohammed Li]], [[Computer Chess Forums|FishCooking]], May 28, 2016 | * [https://groups.google.com/d/msg/fishcooking/z2sd39wrUvw/j5RpSXGmBAAJ new humanistic compile of SF is 108KB] by [[Mohammed Li]], [[Computer Chess Forums|FishCooking]], May 28, 2016 | ||
Line 20: | Line 20: | ||
* [http://www.talkchess.com/forum/viewtopic.php?t=61639 Scaling of Asmfish with large thread count] by [[Dann Corbit]], [[CCC]], October 07, 2016 » [[Parallel Search]] | * [http://www.talkchess.com/forum/viewtopic.php?t=61639 Scaling of Asmfish with large thread count] by [[Dann Corbit]], [[CCC]], October 07, 2016 » [[Parallel Search]] | ||
* [http://www.talkchess.com/forum/viewtopic.php?t=61961 New asmFish released] by [[Stefan Pohl]], [[CCC]], November 04, 2016 | * [http://www.talkchess.com/forum/viewtopic.php?t=61961 New asmFish released] by [[Stefan Pohl]], [[CCC]], November 04, 2016 | ||
− | ==2017 | + | ==2017== |
* [http://www.talkchess.com/forum/viewtopic.php?t=62906 Reaching Lyudmil Antonov] by Art Ford, [[CCC]], January 23, 2017 | * [http://www.talkchess.com/forum/viewtopic.php?t=62906 Reaching Lyudmil Antonov] by Art Ford, [[CCC]], January 23, 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== | ||
* [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 | ||
: [http://www.talkchess.com/forum/viewtopic.php?t=66373&start=14 Re: asmFish update - all flavors of OS] by T. Poppins, [[CCC]], January 23, 2018 | : [http://www.talkchess.com/forum/viewtopic.php?t=66373&start=14 Re: asmFish update - all flavors of OS] by T. Poppins, [[CCC]], January 23, 2018 | ||
* [http://www.talkchess.com/forum/viewtopic.php?t=66570 New asmfish] by [[Günther Simon]], [[CCC]], February 12, 2018 | * [http://www.talkchess.com/forum/viewtopic.php?t=66570 New asmfish] by [[Günther Simon]], [[CCC]], February 12, 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]] | ||
+ | ==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/ | + | * [https://github.com/lantonov/asmFish/wiki GitHub - lantonov/asmFish Wiki] |
− | * [https://github.com/lantonov/asmFish GitHub - lantonov/asmFish | + | * [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]] | ||
==Misc== | ==Misc== | ||
− | * [[:Category:Yes|Yes]] - [https://en.wikipedia.org/wiki/ | + | * [[: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= | + | : {{#evu:https://www.youtube.com/watch?v=iJu-AnzyQBI|alignment=left|valignment=top}} |
=References= | =References= | ||
Line 42: | 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:Chris Squire]] | [[Category:Chris Squire]] |
Latest revision as of 22:29, 28 February 2021
Home * Engines * Stockfish * asmFish
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] .
Contents
See also
Forum Posts
2015
- [for fun] rewrite of stockfish into asm and question on source by Mohammed Li, FishCooking, January 09, 2015
- Re: [for fun] rewrite of stockfish into asm and question on source by Mohammed Li, FishCooking, April 18, 2016
2016
- new humanistic compile of SF is 108KB by Mohammed Li, FishCooking, May 28, 2016
- Re: Speedup and simplicity idea by Mohammed Li, FishCooking, June 28, 2016
- ASM Fish for Linux and Windows by Norbert Raimund Leisner, CCC, July 26, 2016
- asmFish 44 cores by A. Turkoglu, FishCooking, August 28, 2016
- Scaling of Asmfish with large thread count by Dann Corbit, CCC, October 07, 2016 » Parallel Search
- New asmFish released by Stefan Pohl, CCC, November 04, 2016
2017
- Reaching Lyudmil Antonov by Art Ford, CCC, January 23, 2017
- Pedant And ASM by menniepals, CCC, September 07, 2017
- asmfish_macOS_11082017 by Michael B, CCC, November 08, 2017
- asmfishX - macOS by Michael B, CCC, November 23, 2017
2018
- asmFish update - all flavors of OS by Michael B, CCC, January 20, 2018
- Re: asmFish update - all flavors of OS by T. Poppins, CCC, January 23, 2018
- New asmfish by Günther Simon, CCC, February 12, 2018
- Asmfish further development by Günther Simon, CCC, October 01, 2018
- Re: piece lists advantage with bit-boards? by Ronald de Man, CCC, December 26, 2018 » Piece-Lists
2019
- asmFish by Stephen Ham, CCC, April 28, 2019
- Re: asmFish by Ronald de Man, CCC, May 05, 2019
- in case you had not noticed .. by MikeB, CCC, June 07, 2019
External Links
Chess Engine
- GitHub - lantonov/asmFish Wiki
- GitHub - lantonov/asmFish - A continuation of the nice project asmFish by Mohammed Li (07.08.2019), hosted by Lyudmil Antonov
- GitHub - Counterply/asmFish at asmFish-CounterPly hosted by Justin Dehorty
Misc
References
- ↑ Istiophorus platypterus, Image by Citron, March 2010, CC BY-SA 3.0, Wikimedia Commons, Sailfish from Wikipedia, Indo-Pacific sailfish from Wikipedia
- ↑ Re: [for fun] rewrite of stockfish into asm and question on source by Mohammed Li, FishCooking, April 18, 2016
- ↑ removal of piece lists by Mohammed Li, FishCooking, November 11, 2014
- ↑ Re: piece lists advantage with bit-boards? by Ronald de Man, CCC, December 26, 2018
- ↑ Agner Fog's manuals
- ↑ lets get the ball moving down the field on numa awareness by Mohammed Li, FishCooking, August 30, 2016