-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
128 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
# 胖蒂兹 | ||
这是一个**免费** UCI 兼容的国际象棋引擎。它是 [cfish](https://github.com/syzygy1/Cfish) 的一个分支。 | ||
|
||
感谢 Norman Schidt 和 Albert Sliver 在创建我自己的 Stockfish 叉时提供的灵感。也非常感谢 Robert Houdart 的出色优化想法,总体上使引擎速度提高了近 20%! | ||
|
||
该引擎使用 HalfKAv2-2048x2-64-64-1 评估网络,其中包含高达 **4 倍**的 Stockfish 14 知识。它在 Lc0 数据上进行了部分训练,使其具有独特的位置风格,同时仍然保留Stockfish 的战术敏锐度。使用公开可用的数据集 [1](https://drive.google.com/file/d/1VlhnHL8f-20AXhGkILujnNXHwy9T-MQw/view?usp=sharing),[2](https://drive.google.com/file/d/1seGNOqcVdvK_vPNq98j-zV3XPE5zWAeq/view?usp=sharing), [3](https://drive.google.com/file/d/1RFkQES3DpsiJqsOtUshENTzPfFgUmEff/view?usp=sharing) | ||
|
||
由于尺寸较大,该版本仅在谷歌驱动器上可用 [此处](https://drive.google.com/drive/folders/1hthWck-5UsXBToDduJ0REB_ZdXvN0r6X?usp=sharing)。它包括适用于所有受支持架构的 Windows 和 Linux 二进制文件以及网络。这是唯一可以找到网络的地方。 | ||
|
||
## 附加的功能 | ||
|
||
- 多语言支持 | ||
- 无政府状态模式 | ||
- `setoption name Anarchy value true` | ||
- 使过路人被迫 | ||
- 64 位哈希键 | ||
- 减少哈希冲突的数量,并允许更强大的长分析 | ||
- 调整换位表的大小尽可能地保留内容 | ||
- 持久换位表 | ||
- `setoption name PersistentTTMinDepth value 4`(最小 0,最大 255)。存储/加载的最小入口深度。 | ||
- `setoption name PersistentTTFileName value filename.ptt`。包含持久化 TT 的文件。对自己没有任何作用。 | ||
- `setoption name PersistentTTSerialize`。根据上面的选项序列化当前的换位表。文件被覆盖。 | ||
- `setoption name PersistentTTDeserialize`。根据上面的选项反序列化当前的换位表。只有更糟糕的条目才会被替换。 | ||
|
||
## 编译 Fat Titz | ||
编译 Fat Titz 需要一个可用的 gcc 或 clang 环境。建议使用 [MSYS2](https://www.msys2.org/) 环境在 Windows 上编译 Fat Titz(有关如何设置 MSYS2,请参见下文)。 | ||
|
||
要编译,请键入: | ||
|
||
make target [ARCH=arch] [COMP=compiler] [COMPCC=gcc-4.8] [更多选项] | ||
|
||
从`src`目录。可以通过键入 `make` 或 `make help` 来查看支持的目标、架构和编译器的列表。 | ||
|
||
如果 `ARCH` 变量未设置或设置为 `auto`,Makefile 将尝试为您的系统确定并使用最佳设置。如果此操作失败并出现错误或给出不令人满意的结果,您应该手动设置所需的架构。支持以下 `ARCH` 值:`x86-86-modern`、`x86-64-avx2`、`x86-64-bmi2`、`x86-64-avx512`、`x86-64-avx2-vnni` 、`x86-64-bmi2-vnni`、`x86-64-avx512-vnni`。需要 SSSE3 支持,如果您的 CPU 不支持 SSSE3,请参阅 [此处](https://www.timeanddate.com/)。 | ||
|
||
请注意,专门为您的机器编译的 Fat Titz 二进制文件可能无法在其他(较旧的)机器上运行。如果二进制文件必须在多台机器上运行,请将 `ARCH` 设置为与最旧/最弱机器对应的架构。 | ||
|
||
更多选项: | ||
|
||
<table> | ||
<tr><td><code>pure=yes</code></td><td>仅 NNUE 纯(无混合或经典模式)</td></tr> | ||
<tr><td><code>numa=no</code></td><td>禁用 NUMA 支持</td></tr> | ||
<tr><td><code>lto=yes</code></td><td>编译链接时优化</td></tr> | ||
<tr><td><code>extra=yes</code></td><td>使用额外的优化选项(gcc-7.x 及更高版本)编译</td></tr> | ||
</table> | ||
|
||
如果编译失败并显示 `numa.h: No such file or directory` 或 `cannot find -lnuma`,请添加 `numa=no`。 | ||
|
||
由于添加了 NNUE 代码,当前使用“extra=yes”启用的优化选项似乎不太有效。 | ||
|
||
## UCI 设置 | ||
|
||
#### Anarchy | ||
启用/禁用无政府状态模式。在无政府状态下,en-passant 是强制的。默认禁用 | ||
|
||
#### PersistentTTMinDepth | ||
控制序列化 TT 条目的最小深度 | ||
|
||
#### PersistentTTFileName | ||
持久 TT 操作的路径。 | ||
|
||
#### PersistentTTSerialize | ||
序列化 TT,请参阅“附加功能”了解更多信息。 | ||
|
||
#### PersistentTTDeserialize | ||
反序列化 TT,请参阅“附加功能”了解更多信息。 | ||
|
||
#### Analysis Contempt | ||
默认情况下,在分析过程中将蔑视设置为零以确保分析无偏见。将此选项设置为“白色”或“黑色”,以蔑视那一方进行分析。 | ||
|
||
#### Threads | ||
用于搜索位置的 CPU 线程数。 | ||
|
||
#### Hash | ||
哈希表的大小(以 MB 为单位)。 | ||
|
||
#### Clear Hash | ||
清除哈希表。 | ||
|
||
#### Ponder | ||
让胖蒂兹在对手思考的同时思考下一步的行动。 | ||
|
||
#### MultiPV | ||
搜索时输出N个最佳行。保留 1 以获得最佳性能。 | ||
|
||
#### Move Overhead | ||
对网络和 GUI 延迟的补偿(以毫秒为单位)。 | ||
|
||
#### Slow Mover | ||
增加使 Fat Titz 使用更多时间,减少使 Fat Titz 使用更少时间。 | ||
|
||
#### SyzygyPath | ||
存储 Syzygy 表库文件的文件夹/目录的路径。多个目录用“;”分隔 在 Windows 上,在基于 Unix 的操作系统上通过“:”。不要在“;”周围使用空格 或者 ”:”。 | ||
|
||
示例:`C:\tablebases\wdl345;C:\tablebases\wdl6;D:\tablebases\dtz345;D:\tablebases\dtz6` | ||
|
||
#### SyzygyProbeDepth | ||
探测位置的最小剩余搜索深度。增加此值以降低探测的积极性。 | ||
|
||
#### Syzygy50MoveRule | ||
禁用让 Syzygy 表库探测器检测到的 50 个移动规则绘制算作赢或输。这对于 ICCF 通信游戏很有用。 | ||
|
||
#### SyzygyProbeLimit | ||
将 Syzygy tablebase 探测限制在最多剩下这么多棋子的位置(包括国王和棋子)。 | ||
|
||
#### SyzygyUseDTM | ||
使用 Syzygy DTM 表库(尚未发布)。 | ||
|
||
#### BookFile/BestBookMove/BookDepth | ||
控制 PolyGlot 书籍的使用。 | ||
|
||
#### EvalFile | ||
NNUE 网络文件的名称。 | ||
|
||
#### Use NNUE | ||
默认情况下,Fat Titz 在 Stockfish 的 Hybrid 模式下使用 NNUE,其中某些位置使用旧的手工评估进行评估。其他模式是 Pure(仅限 NNUE)和 Classical(仅限手工评估)。 | ||
|
||
#### LargePages | ||
控制哈希表作为大页面 (LP) 的分配。在 Windows 上,如果操作系统缺乏 LP 支持或 LP 没有正确设置,则不会出现此选项。 | ||
|
||
#### NUMA | ||
此选项仅出现在 NUMA 机器上,即具有两个或更多 CPU 的机器。如果此选项设置为“on”或“all”,Fat Titz 会将其搜索线程分布到所有节点。如果该选项设置为“关闭”,Fat Titz 将忽略机器的 NUMA 架构。在 Linux 上,可以指定运行搜索线程的节点子集(例如,“0-1”或“0,1”将搜索线程限制为节点 0-3 中的节点 0 和 1)。 | ||
|
||
## 如何设置MSYS2 | ||
1.从[MSYS2](https://www.msys2.org/)网站下载并安装MSYS2。 | ||
2. 打开 MSYS2 MinGW 64 位终端(例如通过 Windows 开始菜单)。 | ||
3. 通过输入`pacman -S mingw-w64-x86_64-toolchain`来安装MinGW 64位工具链。 | ||
4. 关闭 MSYS2 MinGW 64 位终端并打开另一个。 |