SPPARKS 人工事件网络与group求解器
理解test/group的事件数、依赖数和速率区间,区分算法教学网络与真实化学反应。
阅读本篇目录
下载模型实操包。包含46个真实原生条件、完整输入、原始统计/轨迹、独立提取脚本和16张结构与数据图。使用SPPARKS08Oct25、Intel oneAPI C++2024.2.1 / IntelMPI2021.13;CPU入口要求兼容AVX512。可选模块 spparks/08Oct25-appfix-8173m 支持本组特殊模型,原默认模块仍保留。
1. 这个例子不代表材料#
test/group用于人工事件网络与求解器演示。100个事件,每次事件影响10个依赖项;速率范围1e-6到1,变动参数5,采用低内存模式。它没有空间坐标、没有物种浓度,也没有可以绘成真实结构的粒子。
因此这里不画虚构分子图。需要真实反应物种和化学计量守恒时,使用反应KMC的chemistry模型;要理解group求解器怎样面对变化的事件列表,可以从本例开始。
按顺序运行#
在申请到的CPU资源内,从新的解压目录执行。每个条件只运行一次,程序会保护已有结果目录。下面的短命令实际调用原生SPPARKS,每个条件1个MPI进程、1线程。
module purge
module load spparks/08Oct25-appfix-8173m
bash run.sh group-network-s81001
bash run.sh group-network-s81002
tail -n 16 work/group-network-s81001/stdout.log
inputs/group-network-s81001/in.mc:
seed 81001
app_style test/group 100 10 1.0 1.e-6 5 lomem yes
solve_style group 1.0 1.e-6
run 10000
2. 实际结果#
rg 'Number of reactions, events|Loop time' work/group-network-s81001/stdout.log
rg 'Number of reactions, events|Loop time' work/group-network-s81002/stdout.log
两次原生输出均为Number of reactions, events = 100 10000:网络中100项,每次执行10000次选择。run 10000在这个测试app中按事件选择次数理解,不是10000秒,也不产生通用模型的Time统计表。
改变事件数或依赖数后可以观察算法执行,但本页没有控制硬件、计时重复、负载与误差的性能实验,不宣称group一定比tree快。实际科学模型还需自行定义正确事件及其对其他事件速率的影响。
提取数据和画图#
若只希望先看实际参考结果,在另一份新解压目录执行:
bash analyze.sh
head -n 12 analysis-reference/case-summary.csv
ls figures-reference
这一步读取包内原始 reference/work/,重新提取并绘图。若要分析自己完整重算的数据,在新目录内运行 bash run-all.sh;全部46个条件完成后生成 analysis/ 和 figures/。只单独跑一项时,先阅读该项 stdout.log 与 dump.sites,不要将少数目录冒充整包分析输入。
相关入口:SPPARKS专题、原生命令手册。人工网络。完整输入以下载包的08Oct25版本为准;不同模型的时间、能量与状态定义分别解释,不能直接套用为某种材料的秒、电子伏或微米。