当单元格中的粒子数量变化时平衡核心负载(GPU上的PIC)

计算科学 并行计算 网格 开放式 粒子
2021-12-19 17:42:09

考虑细胞模拟中粒子的这个基本方案(只有短程相互作用):

  1. 将粒子分配给分离的单元格
  2. 用于细胞A越过相邻的单元格B
    • 对于每个粒子aiA与所有人互动biB
  3. 移动所有粒子

对于 GPU 来说,内存位置非常重要。因此,分配每个细胞-细胞相互作用是有意义的(A,B)到一个工作组,它可以共享 __local缓冲区ais。但是很可能会发生一些细胞是空的,而另一些细胞充满了数量非常不同的粒子n. => 每个工作组必须处理非常不同数量的交互N=nA.nB粒子对之间(ai,bi). 他们将无法同步。

我想这是 PIC、GPGPU 和并行计算中的一些常见问题。但是我只看到了介绍性的教程和代码,对优化没有太多关注。我很乐意参考良好而简洁的学习资源。

1个回答

您应该对这个预印本感兴趣,我们将在其中准确讨论您似乎遇到的问题:https ://arxiv.org/abs/1612.03369