slime/research/OPTIMIZATION_SUMMARY.md

77 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 阶段结论与部署前摘要
更新日期: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 天外推已假设复用根,不能再乘本轮加速倍数。正式入口仍未替换。