Skip to content

parallel/VALIDATION.md ​

配套源码,运行方法见同目录 README。返回实验总览。

md
# 并行计算验证记录

日期:2026-10-04;平台:macOS arm64;编译器:Apple LLVM 21.0.0 (clang-2100.3.34.2)。`std::thread::hardware_concurrency()` 返回提示值 10;不是已核实的物理核心数量。沙箱拒绝读取 `sysctl` 的硬件型号与缓存行数据,因此不声明具体芯片型号、性能/能效核数量或缓存行大小。

普通构建:`-std=c++17 -O3 -g -Wall -Wextra -Wpedantic -Werror -pthread`。

执行 `make -C labs/parallel test`:通过。包括 N=1003、4 线程、grain=17 的非整除尾部;N=3、8 线程、grain=1 的任务少于线程数;4 个线程各自 20000 次计数。每方案先热身一次,正式运行 3 次,逐元素或逐计数检查均通过。

执行 `make -C labs/parallel sanitize`:通过。ASan/UBSan、`-O1`、严格警告;相同功能测试。检测构建的时间不用于性能结论。没有执行 ThreadSanitizer。

性能测试使用前述普通构建,每方案热身一次,测量 5 次;结果文件保存原始摘要。

| 工作负载 | 方案 | min ms | median ms | max ms |
| --- | --- | --- | --- | --- |
| 200000 项,重任务集中前 1/4 | serial | 66.810459 | 67.217417 | 72.752791 |
| 同上,4 线程,连续分块 | static | 65.200833 | 65.369875 | 65.687500 |
| 同上,4 线程,grain=64 | dynamic | 17.767375 | 17.845458 | 18.098209 |
| 每线程 1000000 次原子加,4 线程 | packed,stride=8 | 64.991750 | 65.655875 | 66.205791 |
| 同上 | padded128,stride=128 | 2.092792 | 2.141041 | 2.211959 |

三种调度逐元素完全一致,checksum=11481154863628559085。布局实验每线程计数精确等于 1000000,总计 4000000。

时间包含线程创建/回收;初始化和正确性比较不计时。未固定线程亲和性、未关闭系统后台工作、未锁频;方案按固定顺序运行。本次样本支持“该输入的动态分块比连续静态分块快”和“该布局调整在本次原子工作负载上降低时间”,不能推广成普遍加速承诺,也不能单凭时间证明硬件瓶颈。

CUDA `reduction.cu` 未编译、未运行、没有 GPU 性能结论。官方 asst1–asst5 评分器、ISPC 和 Trainium2 实验也未运行。