4.5 KiB
阶段结论与部署前摘要
更新日期:2026-10-11。本文汇总当前保留的有意义优化,作为下一阶段部署的交接记录。 数据来自已有实验记录,本次没有重新运行性能测试。详细测量、基线与复现命令见 BENCHMARK.md,程序使用方式见 README.md。
总体结论
最值得部署的是两个独立入口:固定坐标反查种子、固定种子搜索世界坐标。 X/Z 独立筛轴联合搜索路线已移除,历史测量见 试错报告。
全种子 × 全世界搜索仍未解决。现有固定坐标流程仍枚举中间 17 位。
后续独立实验已验证输出差过滤+区间求交的 CUDA 搜索 kernel 提速约 197~292 倍, 并实现完整拒绝重抽补扫。65536 随机坐标的同批完整流程吞吐外推全世界仍约 16 年, 所以仍不建议启动全量目录生成。实验没有替换正式入口,数据和边界见 全流程实验报告。
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 筛轴试错报告。FFT 的独立试验见 FFT_EXPERIMENT.md。
保留求解器仍使用首次输出候选模型,可能漏掉依赖 Java nextInt(10) 拒绝后重抽的解。
最终验证能排除误报,不能恢复漏解,不应称为严格穷尽目录生成器。
普通分支后续实验:16 候选成组筛选(2026-10-11)
实验报告:利用中间位异或常量的四个连续零位, 每根将 131,072 个逐候选筛选改为 8,192 个组 mask。两个独立 65,536 坐标批次 搜索阶段(含新增预计算)相对上一轮最佳实现加速 6.51× / 6.56×,完整结果一致。 若仍逐坐标生成低位根,根生成加搜索的 kernel 时间之和仅改善约 1.38×。 只按搜索吞吐、乐观复用根的全世界外推约 50 天,未实测完整全局调度,未包含补扫。 独立实验已实现,正式入口未替换。
普通分支调度实验:复用坐标类根(2026-10-11)
批次流程报告:已实现每类生成一次根、 GPU 展开具体根任务,以及只为有根类构造/传输具体位置。全部展开根列表和命中列表一致。 512 随机类 / 32768 位置批次相对上一轮逐位置根生成+成组筛选,从 141.138 ms 降至 9.586 ms(14.72×),包含分组、展开、必要传输和回传,排除一次初始化。 全部有根类的压力批次只改善约 1.35×,没有重复类的散点反而慢约 8.9%。 之前约 50 天外推已假设复用根,不能再乘本轮加速倍数。正式入口仍未替换。