Difference between revisions of "AsmFish"

From Chessprogramming wiki
Jump to: navigation, search
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>, 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: [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> .  
  
 
=See also=  
 
=See also=  

Revision as of 21:32, 27 December 2018

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] [7] .

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

External Links

Chess Engine

Misc

References

Up one Level