E5 验收记录#

学习首页 · PhysX 目录

任务:PhysX Atlas #6。交付:批量、学习接口与数据、原生 C++ 批量边界片段、中英文入口、课程/roadmap、源码地图和身份清单。

开始时已 fetch 核实实际 main 为 ed5ccdb30266ef0a0a5f1457297de827783f577b;E2 的 810f7b2361a97dafb3d4eb9db2643d316ec900c2 和 E4 均为实际祖先,工作树干净,#6 OPEN、无评论、无进行中 PR。从该基线创建 docs/e5-batch-learning-data,恢复时保留同分支来源清单与缓存。本记录对应包含它的提交;后续发布/合入状态须以实际远端读回为准。

对照验收#

要求

对应交付

结论

A8 批量隔离

第 1 节独立 Scene/同 Scene/进程边界、aggregate 与四类隔离

原生对象及应用责任课程完成;未运行批量环境

B6 CPU 调度与同步

第 2 节 dispatcher/task、reference、scratch、check/fetch、split simulation/fetch

API 与实现核对;无并行执行或吞吐实测

CPU/GPU/Direct GPU

第 3–4 节不可变选项、首步初始化、context/events、GPU buffer/索引、scene-wide padding、typed 读写

数据与同步契约交付;GPU 内核及特色能力留 E6,未执行 GPU

A8 reset/学习语义

第 5、7 节 CPU/GPU reset、持续输入、局部环境重置、宿主 RL、decimation、terminal/truncated/invalid

没有伪造 SDK 环境类或将自动 reset 后观测当 terminal observation

A9 随机化与复现

第 6 节参数/共享资产、RNG 流、增强 determinism 的范围

分布为应用假设;无 bitwise 或统计运行验收

A9 数据/回放/sim-to-real

第 8 节 schema/time/validity、三种回放、Collection 与 backing memory、模型/执行器/传感/时序差距

对象图、应用记录与完整 checkpoint 分开;无实物标定/迁移结论

B6 扩展/性能口径

第 9 节 scheduler/filter/DirectGPU/extensions/serializer、wall time 边界和计数公式

接口课程交付;完整自定义约束/几何/内核待 E6,不含性能数字

示例/练习/导航

两个原生 C++ 阅读函数、8 条易错点、10 道附答案练习、双语入口与课程状态

无新框架、运行入口或评分器;保留 Sim Atlas 总仓链接

源码与公式由作者自审;独立主审/发布由后续流程完成,本记录不将预读或自审写成最终批准。特别核对:

  • env_id 是应用 filter data 约定;共享静态 world 是有意的例外,aggregate/空间平移不构成完整隔离。query 与 simulation filter 仍独立。

  • task.run 不得阻塞,零 worker dispatcher 会同步 run/release;checkResults/completion task 不替代 fetch。每个在途 scene 的 scratch 不能被另一 scene 同时覆盖。

  • Direct GPU 需要首个真实物理步初始化,并会改变常规 CPU readback/sleeping 契约;GPU broad phase 与 dynamics 是不同设置。

  • articulation 请求子集仍以全 Scene maxDofs/maxLinks 分块;GPU index 与请求 row 分开。JOINT_FORCE/target 的 get 读回输入值,不是求解器测量。

  • CUDA context 锁、scene 锁、start/finish event 和 D→H readback 是不同边界;bool 可能不含异步错误,借用 contact 内部指针会在下一 simulate 失效。

  • zeroCache/eALL 不等于完整 reset;Direct GPU UPDATE_KINEMATIC 会清掉相关加速度/传力输出。控制输入、引擎状态与应用历史均需明确重置策略。

  • mass=0 的原生特殊语义、setMass 不更新惯量,以及 enhanced determinism 不支持 GPU 的范围已保留。

  • Binary reader 验证 header/GUID/platform,并在提供内存内构造对象;collection.release 只销毁容器,backing memory 需晚于对象释放。XML serialization 在固定头文件已 deprecated。

  • RL bootstrap 式明确持续任务/外部时间截断假设;并未声称 PhysX 实现奖励、终止、优化器或迁移学习。

实际静态检查#

环境:Linux、Python 3.12.12、g++ 11.4.0。固定源码 da950a3537927784951853c66618036f332ca0ce,SDK 头文件 5.11.0。manifest 累计 126 个源码文件,本项新增 23 个;全部按 Git blob 算法核对缓存内容,并独立逐项与官方相同提交的完整 Git tree 对照。新片段公开头文件依赖闭包 18 个文件,同样核对官方 blob。闭包含条件平台引用;Linux 预处理不需要未公开 Switch 平台头,不声称 18 是实际 Linux 展开数量。

补充的 Isaac Lab 官方 task-workflow 页面只证明 RL 任务组织属于宿主;其可变 URL、2026-10-09 查阅日期和用途已单独记入 sources.json。它不进入 PhysX 固定 blob 计数,也不证明任何宿主版本匹配或运行能力。

仓库根目录检查(PHYSX_SOURCE 指向核验后的固定树/缓存,内部包含 physx/include):

git diff --check
git diff --cached --check
python scripts/check_docs.py
python scripts/check_source_links.py --source-root "$PHYSX_SOURCE"
g++ -std=c++17 -DNDEBUG -fsyntax-only -Wall -Wextra \
  -I "$PHYSX_SOURCE/physx/include" examples/e5_batch_boundaries.cpp

结果:本地 Markdown 文件链接、126 个源码 blob 和 472 处源码链接路径/行号检查通过,staged 新文件的空白检查通过。C++ 语法/类型检查退出码 0、无诊断;不链接、不生成或执行 SDK 程序。块公式使用 $$,未将检查称为浏览器视觉验收。未修改/放宽检查脚本或 CI。

源码工具只验证路径、行存在及身份,语义仍由实际阅读核对。静态编译无法验证 shader 的隔离效果、GPU 指针/容量真实性、device/context 配对、事件时序、实际 batch 输出、reset 或 replay 行为。

未决与下一步#

没有运行 native SDK、物理步、GPU、查询、渲染、serialization round trip、训练、基准、实物标定或 sim-to-real 实验。示例调用者仍负责初始化和生命周期、全部 shape 的 env 标记、单独 query filter、GPU 索引/缓冲/同步与实际容量;两个函数不组成一个学习框架。

历史 Isaac Sim 5.1 / UniSim 1.7.10 的内置 PhysX 与配置继续保留 DexLab #126 的未知项,不能从当前 SDK/宿主文档补齐。Isaac Lab 页面只作职责参考,没有核实其当前安装或绑定的 PhysX binary。

下一项建议 E6:GPU 内核/后端、特色几何与自定义扩展,依赖实际合入的 E3;E7 再审校两条路线与 DexLab 证据入口。开始前重查 main、Issue/PR 和依赖。本项只做本地提交后待主审,不自行开始下一阶段;后续实验继续复用 DexLab。

课程来源 · GitHub · 许可