research: preserve solver experiments and reproducible benchmarks

This commit is contained in:
Yaossg 2026-10-11 12:28:02 +08:00
parent 12e4266950
commit e93bc20b0a
85 changed files with 518443 additions and 0 deletions

View file

@ -0,0 +1,77 @@
# 阶段结论与部署前摘要
更新日期:2026-10-11。本文汇总当前保留的有意义优化,作为下一阶段部署的交接记录。
数据来自已有实验记录,本次没有重新运行性能测试。详细测量、基线与复现命令见
[BENCHMARK.md](BENCHMARK.md),程序使用方式见 [README.md](README.md)。
## 总体结论
最值得部署的是两个独立入口:**固定坐标反查种子**、**固定种子搜索世界坐标**。
X/Z 独立筛轴联合搜索路线已移除,历史测量见 [试错报告](XZ_FILTER_TRIAL_REPORT.md)。
全种子 × 全世界搜索仍未解决。现有固定坐标流程仍枚举中间 17 位。
后续独立实验已验证输出差过滤+区间求交的 CUDA 搜索 kernel 提速约 197~292 倍,
并实现完整拒绝重抽补扫。65536 随机坐标的同批完整流程吞吐外推全世界仍约 16 年,
所以仍不建议启动全量目录生成。实验没有替换正式入口,数据和边界见
[全流程实验报告](experiments/full_search_feasibility/REPORT.md)。
## 1. 固定坐标反查种子:主要算法收益
实现:`slime_pattern_cpp.cpp`、`slime_pattern_cuda.cu`,共享
`slime_solver_core.hpp`。
- 低 18 位必要条件过滤。已知 5×5 样例保留 84 个 roots。
- 每个 root 仍枚举中间 17 位,样例合计 11,010,048 个 lower35。
- 上 13 位使用阈值与模 5 约束解析求解,不逐个枚举 8192 个值。
- C++ 多线程和 CUDA 均已实现;最终候选执行准确的 Java 验证。
已知样例 CPU 约 0.61 秒;RTX 3060 Laptop 上 CUDA kernel 约 59.6 毫秒,
包含启动、分配、传输等开销约 0.36 秒。相对旧式 CUDA 暴力扫描,kernel
约快 86,300 倍,端到端约快 14,300 倍。旧算法完整 `2^48` 耗时是根据
大规模实测吞吐量外推,并非实际跑完。另有 64 个坐标的 CPU/CUDA 对照实验。
这些结果只属于固定坐标任务,不代表全种子、全世界联合搜索的加速比。
所谓遍历固定坐标搜索空间,仍受下文拒绝尾部候选覆盖限制。
## 2. 固定种子搜索世界坐标:主要 CUDA 收益
实现:`slime_position_residue_cuda.cu`。
先搜索低位坐标余数对,展开通过的具体坐标,再做精确 Java 验证。
已知种子实验展开 36,937,048 个具体位置,全流程约 2.5 秒。
相对直接扫描完整范围的外推时间约快 170 倍;四个种子已有实验记录。
这是目前坐标侧最值得保留的 CUDA 优化。
## 3. 较小但仍保留的收益
`slime_position_cuda.cu` 的 tiled outer-sum 共享 X/Z 坐标项,减少重复计算。
67,125,249 个位置的实验中,直接扫描 1.608 毫秒,outer-sum 1.332 毫秒,
约改善 1.21 倍。它适合作为直接扫描基线,优先级低于余数过滤,不解决全局规模。
## 4. 已停止的路线与边界
X/Z 独立筛轴、坐标类、联合诊断及中间位索引代码已删除,原因与历史验证汇总于
[X/Z 筛轴试错报告](XZ_FILTER_TRIAL_REPORT.md)。FFT 的独立试验见
[FFT_EXPERIMENT.md](FFT_EXPERIMENT.md)。
保留求解器仍使用首次输出候选模型,可能漏掉依赖 Java `nextInt(10)` 拒绝后重抽的解。
最终验证能排除误报,不能恢复漏解,不应称为严格穷尽目录生成器。
## 普通分支后续实验:16 候选成组筛选(2026-10-11)
[实验报告](experiments/normal_search/REPORT.md):利用中间位异或常量的四个连续零位,
每根将 131,072 个逐候选筛选改为 8,192 个组 mask。两个独立 65,536 坐标批次
搜索阶段(含新增预计算)相对上一轮最佳实现加速 6.51× / 6.56×,完整结果一致。
若仍逐坐标生成低位根,根生成加搜索的 kernel 时间之和仅改善约 1.38×。
只按搜索吞吐、乐观复用根的全世界外推约 50 天,未实测完整全局调度,未包含补扫。
独立实验已实现,正式入口未替换。
## 普通分支调度实验:复用坐标类根(2026-10-11)
[批次流程报告](experiments/normal_search/PIPELINE_REPORT.md):已实现每类生成一次根、
GPU 展开具体根任务,以及只为有根类构造/传输具体位置。全部展开根列表和命中列表一致。
512 随机类 / 32768 位置批次相对上一轮逐位置根生成+成组筛选,从 141.138 ms 降至
9.586 ms(14.72×),包含分组、展开、必要传输和回传,排除一次初始化。
全部有根类的压力批次只改善约 1.35×,没有重复类的散点反而慢约 8.9%。
之前约 50 天外推已假设复用根,不能再乘本轮加速倍数。正式入口仍未替换。