Σ p
Introducing PSuM

PSuM通用异构的 PIC 框架。

Particle-in-cell Skeleton using Meta-programming.

帮助研究者轻松编写具有前沿性能的 PIC 仿真程序。

已应用于等离子体电推进、空间物理等领域的前沿研究。

Reiner Gamma: 月球局地磁场与太阳风相互作用,呈现出的不均匀等离子体分布。
Reiner Gamma: 月球局地磁场与太阳风相互作用,呈现出的不均匀等离子体分布。
Technology

为现代异构硬件而生。

PSuM 让同一份 C++ 代码在 CPU 和 GPU 上运行,切换计算设备时,无需重写仿真算法。

无论使用 CPU 还是 GPU,粒子操作、场量处理和方程求解都保持各自一致的接口,让你更专注于物理模型与计算过程。

SYCL 多后端

单源 SYCL 面向 CUDA、OpenMP 等后端编译期切换,跨硬件迁移不改算法表达。

GPU 全流程

粒子遍历、推动、沉积、边界相交与场求解在设备侧执行。

模板元编程

类型、算子变体以模板实现,不引入额外性能开销;使用concept类型断言减少用户开发中的潜在误用。

双层lambda

分离资源准备与计算逻辑,以统一写法表达 CPU 与 GPU 并行计算。

插件化求解器

前端负责离散与矩阵装配,后端通过统一接口提供求解能力;针对不同硬件特性提供优化的求解器后端。

访存优化

粒子数据结构优化数据存储与空间复用,减少不必要的数据搬移,改善访存行为。

Python支持

基于pybind11提供内部序列化格式的python导出;更多python支持开发中。

MPI跨节点

通过 MPI 进行跨节点通信,结合节点内 CPU、GPU 异构计算,支持跨节点与异构设备的多层次并行。

在纯CPU运行和异构计算间切换时,代码零修改或仅调整少量配置。

my_simulation.cpp · C++ / SYCL
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");
Performance

前沿性能,来自真实计算。

从粒子计算到场求解,PSuM 先进的计算性能均经过实际测试与复核。

粒子推进 · 6-double · RTX40900.000×109 次/s
粒子沉积 · 6-double · RTX40900.000×109 次/s
粒子整步 · 6-double · RTX40900.000×109 次/s
随机增删 · 1% · RTX40900.000×1010 次/s
相交检测 · 1% · RTX40900.000×109 次/s
泊松求解 · ε≤10⁻⁶ · RTX40900.000×108 未知数/秒
自动化回归测试79
双流不稳定性算例 · 4×RTX40900亿 粒子步/s
比较

可与知名项目相较。

比较点PSuMWarpXSmilei
原生异构部分
单源多平台
网格局部加密实验性(多分块网格)✓(AMR)实验性
复杂三维粒子边界✓(支持 STL 文件)✓(嵌入式边界)实验性
守恒性 PIC部分部分部分
隐式/半隐式方案实验性实验性
静电模型支持
电磁模型支持
GPU 加速的泊松特化算法✓(多重网格+稀疏直接法)部分部分
方程一般性边界条件
复杂粒子-壁面相互作用
高阶粒子形状实验性
粒子间碰撞(MCC、DSMC、库仑碰撞)
可变粒子类型与属性标签
MPI 并行
Python 支持实验性(pypsum)
类型信息驱动的序列化✓(MAS 格式)部分部分
自动化回归测试+多平台 CI
Resources

从这里了解更多。

PIC方法What is PIC

了解 PIC 如何描述带电粒子的运动及其与电磁场的相互作用。熟悉基本概念和计算流程,为阅读算例和编写仿真程序建立基础。

PSuM文档站Docs · API

从安装环境、运行首个算例,到编写自己的仿真程序,按需查阅 PSuM 的使用与开发文档。内容涵盖依赖配置、编程指南、框架设计和代码规范。

开源开放Source · Issues

PSuM 已在 GitHub / Gitee 双站开源。阅读项目源码,了解各模块的组织方式与底层实现;反馈使用体验、提出功能建议或贡献改进。

依赖项目AdaptiveCpp · Eigen …

了解支撑 PSuM 的基础工具与库,包括负责异构编译的 AdaptiveCpp、提供线性代数能力的 Eigen,以及相关 GPU 和并行计算组件。

学术发表Research · Publications

PSuM 项目已用于等离子体物理、空间物理的前沿研究。阅读相关研究论文,了解 PSuM 中的计算技术、所服务的物理问题、仿真应用背景。

PSuM之外JLPP Laboratory

PSuM的开发团队来自JLPP实验室。我们长期致力于等离子体和空间推进交叉领域的理论及应用研究。