Skip to content

v1.2.0 —— 新增:机器自适应自检 修复:路径去本机化

Choose a tag to compare

@Boki-Lee Boki-Lee released this 08 Oct 14:42
· 1 commit to master since this release

✨ 新增:机器自适应自检(不再照抄别人的并行参数)

  • 新增 bench_namd.sh:首次使用本技能时跑一次,它会实测出这台机器最优的
    NAMD 并行参数 —— 线程数扫描(8/16/24/32/40/48,自动按核数裁剪)→ 绑核验证
    (+setcpuaffinity 到底快不快)→ 并发扫描(2、3 路的合计吞吐),
    用的基准体系是自带示例模型 models/cnt_crown(23045 原子),每档 5000 步,
    指标取 NAMD 日志里的 PERFORMANCE: ... ns/day。
  • 结果写进全局记忆 ~/.config/md-master/machine.conf(纯 key=value,可被 source)。
    全库脚本自动读它 —— 第一次测过之后不用再测,换项目也不用重测,换机器才需要。
  • 命令行:bash bench_namd.sh(无配置自动开测 / 有配置只打印摘要)、
    --show 看配置与推荐命令、--print single|conc 只输出可直接粘贴的命令、
    --retest 重测(旧配置自动备份)、--env 只看环境探测、
    --quick 省时间、--steps N 调精度、--cpu-only 兼容非 CUDA 版 NAMD、
    --system a.psf a.pdb 换基准体系。
  • 安全:全程在用户目录的临时目录里跑(~/.cache/md-master/bench.*),
    不写项目目录、不碰任何现存 conf;没有可用 GPU 时报错退出且不写配置。
  • 新增 machine.conf.example:全局记忆的样例与每个键的含义。

🔧 修复

  • free_energy/extract/run_extract.sh:脚本定义了 VMD= 却仍然直接调用 vmd,
    自定义路径从未生效 —— 现在真正使用 "$VMD",且找不到 VMD 时给出明确报错。
  • bench_namd.sh 自测中修掉三个坑(对使用者是"开箱即对",列在这里备查):
    NAMD 日志里性能行是全大写 PERFORMANCE:(原来的 [Pp]erformance: 只认驼峰写法)、
    墙钟兜底公式的形参取错位、进度信息误写进 stdout 污染了函数返回值。

♻️ 改造:脚本不再写死并行参数

  • free_energy/us/run_all.sh、free_energy/smd/run_smd.sh、
    free_energy/extract/run_extract.sh、free_energy/pmf/run_wham.sh、
    analysis/calCurr.sh 全部改为读 machine.conf:
    NTHREADS / MAX_JOBS / 绑核 / VMD / Python 都从全局记忆取,环境变量仍可临时覆盖。
  • 缺配置时降级为保守默认值 + 醒目提示(第三方刚克隆下来也能跑),
    设 MD_MASTER_STRICT=1 则改为硬报错。
  • us/run_all.sh 与 smd/run_smd.sh 新增 DRY_RUN=1:只打印将要执行的命令,不真跑。
  • 「并发时严禁 +setcpuaffinity」这条经验保留并在注释里加粗警示。

📦 发行化

  • 路径去本机化:文档与脚本里的 /home/dell/...、/mnt/data2/...、
    /mnt/share/free energy-Ca/... 全部换成变量、占位符或说明性文字,换机器不会撞路径。
  • 文件权限归一:消除 4 个 600 文件,脚本一律 755、其余 644。
  • 新增 VERSION(0.1.0)、LICENSE(MIT)、.gitattributes(仓库内统一 LF);
    .gitignore 增补 *.zip 与 machine.conf(机器记忆属本机,不进仓库)。
  • 示例溶剂化日志 models/cnt_crown/1model/system_solv.log 里的本机项目路径已清洗
    (-minmax 数值原样保留,盒子信息不丢)。

📖 文档

  • WORKFLOW.md §0 重写为「环境与首次自检」:0.1 自检怎么做/结果放哪/为什么必须做,
    0.2 路径自动探测顺序,0.3 NAMD 运行规矩;§4/§5/§7 命令示例与 §8 坑、
    §10 排错表(新增"未找到机器配置"一行)、§11 命令速查同步更新。
  • README.md 新增「三、怎么用 → 零、第一次用」与「五、安装与许可」,目录索引补新文件。
  • SKILL.md 新增首次自检说明与第 4 条铁律;AGENTS.md 新增 §4.1「首次自检」;
    free_energy/README.md 并发说明改指 machine.conf;示例模型 conf 的头注释不再写死 +p32。
  • new_project.sh:新项目会一并复制 bench_namd.sh 与 machine.conf.example,
    生成的 TODO.md 里命令改为读配置,第一步就是"先做机器自检"。

涉及文件

  • 新增:bench_namd.sh、machine.conf.example、VERSION、LICENSE、.gitattributes
  • 修改(本次):README.md、WORKFLOW.md、SKILL.md、AGENTS.md、ARCHIVE.md、
    new_project.sh、.gitignore、logs/README.md、logs/log_change.sh、logs/CHANGELOG.md、
    free_energy/README.md、free_energy/us/run_all.sh、free_energy/us/template.conf、
    free_energy/smd/run_smd.sh、free_energy/smd/smd.conf、
    free_energy/extract/run_extract.sh、free_energy/extract/extract.tcl、
    free_energy/pmf/run_wham.sh、analysis/calCurr.sh、
    models/cnt_crown/0build/build_us_system.tcl、models/cnt_crown/1model/system_solv.log、
    models/cnt_crown/2min/min.conf、models/cnt_crown/3eq/eq.conf
  • 未动:../WORKFLOW(参考库,只读);models/cnt_crown/1model/*.psf/pdb(结构数据);
    logs/CHANGELOG.md 的历史条目。

已做验证

  • 所有 *.sh 过 bash -n;所有 *.py 过 py_compile。
  • 文件权限检查:只有 644 / 755,无 600。
  • 隐私路径检查:grep -rn "/home/dell\|/mnt/data2\|/mnt/share" 只剩 logs/CHANGELOG.md 历史条目。
  • 参考库只读校验:diff -rq ../WORKFLOW MD-Master 的差异全部是本侧的可移植化/新增内容,
    WORKFLOW 内文件无任何新写入。
  • bench_namd.sh 用「假 NAMD」跑通了完整流程(冒烟 → 线程扫描 → 绑核 → 并发 →
    写配置 → --show/--print/--retest/--env → 换主机名提醒),生成配置可被 source 且取值正确。
  • 降级路径:用空 HOME/不存在的配置分别跑了 us/run_all.sh、smd/run_smd.sh、
    run_extract.sh、calCurr.sh 的 DRY_RUN/报错分支,行为符合预期。
  • new_project.sh 冒烟:新项目里能看到 bench_namd.sh、machine.conf.example,
    TODO.md 命令已为读配置写法。