Difference between revisions of "Titboards"

From Chessprogramming wiki
Jump to: navigation, search
(Added a reference to new titboard engine (TDFA), as well as some new data on speed comparison between titboards and magic bitboards. Clarified the explanation for why titboards are not commonly used.)
 
(One intermediate revision by one other user not shown)
Line 2: Line 2:
  
 
'''Titboards''',<br/>
 
'''Titboards''',<br/>
a bitboard-based [[Move Generation|move generation]] technique invented by [[Zach Wegner]] <ref>[http://www.open-aurec.com/wbforum/viewtopic.php?f=4&t=5623&p=27838 Yet another new bitboard move generation method] by [[Zach Wegner]], [[Computer Chess Forums|Winboard Forum]], September 22, 2006</ref>. Titboards are based on an extension of bitboards to ternary boards, hence the name ("bit" means binary digit, "tit" mean [https://en.wikipedia.org/wiki/Ternary_numeral_system  ternary digit]). Titboards are only used for move generation, not for any other purposes that typical bitboard attack-getters will be used for.
+
a bitboard-based [[Move Generation|move generation]] technique invented by [[Zach Wegner]] <ref>[http://www.open-aurec.com/wbforum/viewtopic.php?f=4&t=5623&p=27838 Yet another new bitboard move generation method] by [[Zach Wegner]], [[Computer Chess Forums|Winboard Forum]], September 22, 2006</ref> and first implemented by Malik Tremain <ref name="TDFA">[https://github.com/TiltedDFA/TDFA TDFA - Titboard Engine] by Malik Tremain, January 22, 2024</ref>. Titboards are based on an extension of bitboards to ternary boards, hence the name ("bit" means binary digit, "tit" mean [https://en.wikipedia.org/wiki/Ternary_numeral_system  ternary digit]). Titboards are only used for move generation, not for any other purposes that typical bitboard attack-getters will be used for.
  
 
The idea of titboards is to eliminate [[BitScan|bitscans]]. Typical bitboard move generation techniques generate a bitboard, intersect it with the set of allowable [[Squares|squares]] (empty or enemy-occupied), and then [[Bitboard Serialization|serialize]] that into a list of moves. Titboards take a bitboard occupancy for each side for just one rank, file, or diagonal, and convert them to ternary representations and add them together. This index can determine which squares can actually be moved to, instead of just attacked. It is used in a lookup table of 3^7=2187 entries per [[Direction|direction]] per square.
 
The idea of titboards is to eliminate [[BitScan|bitscans]]. Typical bitboard move generation techniques generate a bitboard, intersect it with the set of allowable [[Squares|squares]] (empty or enemy-occupied), and then [[Bitboard Serialization|serialize]] that into a list of moves. Titboards take a bitboard occupancy for each side for just one rank, file, or diagonal, and convert them to ternary representations and add them together. This index can determine which squares can actually be moved to, instead of just attacked. It is used in a lookup table of 3^7=2187 entries per [[Direction|direction]] per square.
  
Titboards are not typically used (there is no known engine that implements them). The reasons behind this are that they use a large amount of memory (more than [[Magic Bitboards]]), and they must keep another attack generation method beside them due to their inflexibility. Modern cpus also have built-in bitscan instructions, further obsoleting ternary boards.
+
Titboards are not typically used (there is one known engine that implements them <ref name="TDFA"/>). This is because they are currently slower than modern alternatives while being harder to implement. They require a large look-up table (~8.9 MB) and they work very differently from modern generation techniques likes [[Magic Bitboards]], where they require each direction to be calculated individually {File, Rank, Diagonal, Anti-Diagonal}. For each direction they require the input of (square, us, them), as a pose to (square, occupied) which is more commonly used.
  
 
=Speed=
 
=Speed=
  
Testing shows that titboards have no speed advantage over magic bitboards.
+
Testing shows that titboards have no speed advantage over magic bitboards on modern hardware, however, the gap seemingly narrows on older CPUs that offer less efficient bitscan operations. A full array of results can be found here<ref>[https://github.com/TiltedDFA/TDFA/blob/3c4110f860f9c98b619a3f2565d139c92fe606c8/RunResults.txt TDFA - Perft result comparison]</ref>.
  
 
<pre>
 
<pre>
 +
CPU: AMD Ryzen 9 5950X 16-Core Processor
 +
 +
Titboard perft group:
 +
All tests completed with mean nps: 22290500
 +
 +
Pext perft group:
 +
All tests completed with mean nps: 40633688
 +
 +
Magic Bitboard perft group:
 +
All tests completed with mean nps: 37989088
 +
</pre>
 +
 +
<pre>
 +
CPU: Ryzen 5 5600x
 
Titboard perft group:
 
Titboard perft group:
Run 1 completed with 18652876 nps.
+
All tests completed with mean nps: 21250050
Run 2 completed with 19684211 nps.
 
Run 3 completed with 36981116 nps.
 
Run 4 completed with 19180560 nps.
 
Run 5 completed with 19103484 nps.
 
Run 6 completed with 20140754 nps.
 
All tests completed with means nps: 22290500
 
  
 
Pext perft group:
 
Pext perft group:
Run 1 completed with 39392460 nps.
+
All tests completed with mean nps: 36773955
Run 2 completed with 40452566 nps.
 
Run 3 completed with 48139295 nps.
 
Run 4 completed with 38508901 nps.
 
Run 5 completed with 36894349 nps.
 
Run 6 completed with 40414558 nps.
 
All tests completed with means nps: 40633688
 
  
 
Magic Bitboard perft group:
 
Magic Bitboard perft group:
Run 1 completed with 36586293 nps.
+
All tests completed with mean nps: 34421651
Run 2 completed with 37227627 nps.
 
Run 3 completed with 45869401 nps.
 
Run 4 completed with 35909201 nps.
 
Run 5 completed with 35063617 nps.
 
Run 6 completed with 37278392 nps.
 
All tests completed with means nps: 37989088
 
 
</pre>
 
</pre>
  

Latest revision as of 13:35, 20 September 2024

Home * Board Representation * Bitboards * Sliding Piece Attacks * Titboards

Titboards,
a bitboard-based move generation technique invented by Zach Wegner [1] and first implemented by Malik Tremain [2]. Titboards are based on an extension of bitboards to ternary boards, hence the name ("bit" means binary digit, "tit" mean ternary digit). Titboards are only used for move generation, not for any other purposes that typical bitboard attack-getters will be used for.

The idea of titboards is to eliminate bitscans. Typical bitboard move generation techniques generate a bitboard, intersect it with the set of allowable squares (empty or enemy-occupied), and then serialize that into a list of moves. Titboards take a bitboard occupancy for each side for just one rank, file, or diagonal, and convert them to ternary representations and add them together. This index can determine which squares can actually be moved to, instead of just attacked. It is used in a lookup table of 3^7=2187 entries per direction per square.

Titboards are not typically used (there is one known engine that implements them [2]). This is because they are currently slower than modern alternatives while being harder to implement. They require a large look-up table (~8.9 MB) and they work very differently from modern generation techniques likes Magic Bitboards, where they require each direction to be calculated individually {File, Rank, Diagonal, Anti-Diagonal}. For each direction they require the input of (square, us, them), as a pose to (square, occupied) which is more commonly used.

Speed

Testing shows that titboards have no speed advantage over magic bitboards on modern hardware, however, the gap seemingly narrows on older CPUs that offer less efficient bitscan operations. A full array of results can be found here[3].

CPU: AMD Ryzen 9 5950X 16-Core Processor

Titboard perft group:
All tests completed with mean nps: 22290500

Pext perft group:
All tests completed with mean nps: 40633688

Magic Bitboard perft group:
All tests completed with mean nps: 37989088
CPU: Ryzen 5 5600x
Titboard perft group:
All tests completed with mean nps: 21250050

Pext perft group:
All tests completed with mean nps: 36773955

Magic Bitboard perft group:
All tests completed with mean nps: 34421651

Forum Posts

Re: Yet another new bitboard move generation method by Harm Geert Muller, Winboard Forum, October 01, 2006 [4]

References

Up one level