docs: unify algorithm explanation and update teaching video
This commit is contained in:
parent
a1e43bb679
commit
dd5fab9540
15 changed files with 1680 additions and 1050 deletions
|
|
@ -1,8 +1,12 @@
|
|||
# 史莱姆区块搜索:逐步演示
|
||||
|
||||
这里保存视频/博客草稿、按步骤编号的代码,以及本次实测结果。
|
||||
演示代码在本目录,研究实现位于 `research/`。草稿见
|
||||
[POPULAR_SCIENCE_OUTLINE.md](POPULAR_SCIENCE_OUTLINE.md)。
|
||||
这里保存视频/博客稿、按步骤编号的代码,以及已保存的实测结果。
|
||||
|
||||
统一教程见 [DOCUMENT.md](DOCUMENT.md),从 CPU/CUDA 枚举讲到当前算法的数学推导。
|
||||
视频为 15 章,保留 CPU → CUDA → 按坐标分工 → outer sum,再讲归一化、低位筛根、
|
||||
类根复用、预计算、16 候选组 mask、高位求解与各项效果。01–08 保留为教学基线;当前入口见
|
||||
[`bench/slime-bench`](../bench/README.md),共用数学位于 [`include/slime/`](../include/README.md)。
|
||||
演示代码在本目录,研究实现位于 `research/`。
|
||||
|
||||
先读 [BENCHMARK.md](BENCHMARK.md) 看实测结果;命令、原始 stdout、全部计时样本、
|
||||
编译器与源码 SHA256 保存在 [results/latest.json](results/latest.json)。
|
||||
|
|
@ -23,7 +27,7 @@ Manim 视频工程位于 [video/](video/README.md),使用 uv 管理依赖;
|
|||
| 02 | `02_cuda_seed.cuh` | 相同循环搬到 CUDA,一 thread 处理一个 seed |
|
||||
| 03 | `03_cuda_position.cuh` 的 `coordinateKernel` | 一 thread 固定坐标,先算图案的 X/Z 项,再遍历 seed 复用 |
|
||||
| 04 | `04_cuda_outer_sum.cuh` | 16×16 tile,共享扩展后的 X/Z 轴项 |
|
||||
| 性质探索 | [RANDOM_PROPERTIES.md](RANDOM_PROPERTIES.md) | 从状态空间、低位依赖与模运算结构推导搜索方法 |
|
||||
| 完整教程 | [DOCUMENT.md](DOCUMENT.md) | 从状态空间、低位依赖与模运算结构推导搜索方法 |
|
||||
| 07 | `07_residue.cu` | 固定 seed,完整低位坐标余数过滤后展开 |
|
||||
| 08 | `08_upper_compare.cu` | 相同 lower35 平面,高 13 位枚举/解析受控比较 |
|
||||
| 08 完整流程 | `08_seed_cpu.cpp`、`08_seed_cuda.cu` | 固定坐标,筛低 18 位取值 → 补上中间 17 位 → 求高 13 位 |
|
||||
|
|
@ -40,12 +44,12 @@ Manim 视频工程位于 [video/](video/README.md),使用 uv 管理依赖;
|
|||
这个对照包含多项式复用及编译期图案大小展开,两个版本先后运行;主线 02/03 则轮换顺序测量。
|
||||
01–04 都记录每一个命中的 `(world_seed,x,z)`,没有“一 seed 找到第一个位置就返回”的差异。
|
||||
|
||||
性能主线到 04 结束。随后读 [RANDOM_PROPERTIES.md](RANDOM_PROPERTIES.md),
|
||||
性能主线到 04 结束。随后读 [DOCUMENT.md](DOCUMENT.md),
|
||||
探索随机数的状态空间、低位依赖和模运算结构,再引出 07–08 的候选生成与解析求解。
|
||||
这部分用推导和例子说明性质,不把 XOR 的等价改写列作计时优化。
|
||||
|
||||
07、08 完整流程是从对应 `research/` 实现提取的教学快照,文件头注明来源,
|
||||
继续共享 `../research/slime_solver_core.hpp`。
|
||||
经 `../research/slime_solver_core.hpp` 兼容转发共享 `../include/slime/solver_core.hpp`。
|
||||
08 的单独高位比较是新写的受控实验;其他成熟算法没有重新复制一套数学核心。
|
||||
因此 `show/` 在本仓库内构建,不能只拷贝这个目录后省略 `research` 头文件。
|
||||
|
||||
|
|
@ -132,14 +136,14 @@ show/bin/08_seed_cuda --x 51069 --z 419124 -n 5 --threads 256 --max-results 1000
|
|||
只修改前四步的测试参数时,可以运行 `python3 show/benchmark.py --only-mapping --repeats 5`;
|
||||
它先检查源代码哈希,再重测 A/B/C,保留后面的已有算法实验,在报告中分别注明测量日期。
|
||||
|
||||
## 视频里必须交代的边界
|
||||
## 当前视频的范围
|
||||
|
||||
- 固定坐标线程与按 seed 线程是转置关系,哪种快取决于任务规模与循环中的算术复用。展平实现移至 `experiments/`,不属于这一阶段。
|
||||
- 低 48 位不是新加入的剪枝:JavaRandom 从第一版起就只有 48 位状态。高 16 位等价性是一条性质,不是额外实测加速比。
|
||||
- 07–08 的全局生成器仍用首次输出候选模型,可能漏掉依赖拒绝后重抽的解;最终准确验证不能补回漏掉的候选。
|
||||
- 潜在笛卡尔积规模不是实际访问次数。收益不能跨任务相乘,全 seed × 全世界目录仍未解决。
|
||||
- FFT 等失败方案的代码和数据仍在 `research` 归档,见草稿中的链接;本目录实测保留方案。
|
||||
|
||||
可直接用于叙事的结果应从本次报告取值,草稿里原有的研究数字作为历史记录保留。
|
||||
视频前半段保留 CPU/CUDA 与坐标计算复用的演进;后半段沿当前 `bench/slime-bench` 数据流讲解 Random 优化,不穿插坐标余数对或独立研究分支。
|
||||
每一步说明为什么成立、减少哪部分工作,以及留下什么候选。
|
||||
当前入口使用普通候选模型,可能漏掉依赖拒绝重抽的解;最终准确验证保证输出正确,不能补回漏掉的候选。
|
||||
各项效果页引用冻结的同任务对照,并分别标明 kernel、搜索阶段和批次墙钟,章节与讲稿入口见 [视频工程](video/README.md)。
|
||||
|
||||
独立筛轴的教学实现、测速结果和视频章节已移除,历史结论保存在 [X/Z 筛轴试错报告](../research/XZ_FILTER_TRIAL_REPORT.md)。
|
||||
|
||||
后续优化的数学、实现状态和新基准均见 [统一教程](DOCUMENT.md),
|
||||
不把历史 `BENCHMARK.md` 改写成未重新测量的当前性能报告。
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue