PSuM:通用异构的 PIC 框架。
Particle-in-cell Skeleton using Meta-programming.
帮助研究者轻松编写具有前沿性能的 PIC 仿真程序。
已应用于等离子体电推进、空间物理等领域的前沿研究。
为现代异构硬件而生。
PSuM 让同一份 C++ 代码在 CPU 和 GPU 上运行,切换计算设备时,无需重写仿真算法。
无论使用 CPU 还是 GPU,粒子操作、场量处理和方程求解都保持各自一致的接口,让你更专注于物理模型与计算过程。
SYCL 多后端
单源 SYCL 面向 CUDA、OpenMP 等后端编译期切换,跨硬件迁移不改算法表达。
GPU 全流程
粒子遍历、推动、沉积、边界相交与场求解在设备侧执行。
模板元编程
类型、算子变体以模板实现,不引入额外性能开销;使用concept类型断言减少用户开发中的潜在误用。
双层lambda
分离资源准备与计算逻辑,以统一写法表达 CPU 与 GPU 并行计算。
插件化求解器
前端负责离散与矩阵装配,后端通过统一接口提供求解能力;针对不同硬件特性提供优化的求解器后端。
访存优化
粒子数据结构优化数据存储与空间复用,减少不必要的数据搬移,改善访存行为。
Python支持
基于pybind11提供内部序列化格式的python导出;更多python支持开发中。
MPI跨节点
通过 MPI 进行跨节点通信,结合节点内 CPU、GPU 异构计算,支持跨节点与异构设备的多层次并行。
在纯CPU运行和异构计算间切换时,代码零修改或仅调整少量配置。
sycl::queue q{};
grid2D grid({-1.0, -1.0}, {1.0, 1.0}, {256, 256});
using ParticleGroup = particle_group<Particle, pos_x_nan_is_invalid>;
ParticleGroup particles(q);
node_field2D<double> phi(q, grid), rho(q, grid);
solver_backend backend("cuda_sparselu_gpu");
前沿性能,来自真实计算。
从粒子计算到场求解,PSuM 先进的计算性能均经过实际测试与复核。
多样、不断增长的物理应用。
从经典算例到前沿研究,PSuM 已用于等离子体电推进、空间物理等领域的诸多问题。
PSuM 丰富的建模功能和优化的计算性能,让更复杂、更大规模的物理仿真成为可能。
这里汇集了部分应用中的仿真图像与动态演示。
可与知名项目相较。
| 比较点 | PSuM | WarpX | Smilei |
|---|---|---|---|
| 原生异构 | ✓ | ✓ | 部分 |
| 单源多平台 | ✓ | ✓ | ✓ |
| 网格局部加密 | 实验性(多分块网格) | ✓(AMR) | 实验性 |
| 复杂三维粒子边界 | ✓(支持 STL 文件) | ✓(嵌入式边界) | 实验性 |
| 守恒性 PIC | 部分 | 部分 | 部分 |
| 隐式/半隐式方案 | 实验性 | ✓ | 实验性 |
| 静电模型支持 | ✓ | ✓ | ✓ |
| 电磁模型支持 | — | ✓ | ✓ |
| GPU 加速的泊松特化算法 | ✓(多重网格+稀疏直接法) | 部分 | 部分 |
| 方程一般性边界条件 | ✓ | ✓ | ✓ |
| 复杂粒子-壁面相互作用 | ✓ | ✓ | ✓ |
| 高阶粒子形状 | 实验性 | ✓ | ✓ |
| 粒子间碰撞(MCC、DSMC、库仑碰撞) | ✓ | ✓ | ✓ |
| 可变粒子类型与属性标签 | ✓ | ✓ | ✓ |
| MPI 并行 | ✓ | ✓ | ✓ |
| Python 支持 | 实验性(pypsum) | ✓ | ✓ |
| 类型信息驱动的序列化 | ✓(MAS 格式) | 部分 | 部分 |
| 自动化回归测试+多平台 CI | ✓ | ✓ | ✓ |
从这里了解更多。
了解 PIC 如何描述带电粒子的运动及其与电磁场的相互作用。熟悉基本概念和计算流程,为阅读算例和编写仿真程序建立基础。
从安装环境、运行首个算例,到编写自己的仿真程序,按需查阅 PSuM 的使用与开发文档。内容涵盖依赖配置、编程指南、框架设计和代码规范。
PSuM 已在 GitHub / Gitee 双站开源。阅读项目源码,了解各模块的组织方式与底层实现;反馈使用体验、提出功能建议或贡献改进。
了解支撑 PSuM 的基础工具与库,包括负责异构编译的 AdaptiveCpp、提供线性代数能力的 Eigen,以及相关 GPU 和并行计算组件。
PSuM 项目已用于等离子体物理、空间物理的前沿研究。阅读相关研究论文,了解 PSuM 中的计算技术、所服务的物理问题、仿真应用背景。
PSuM的开发团队来自JLPP实验室。我们长期致力于等离子体和空间推进交叉领域的理论及应用研究。