考虑细胞模拟中粒子的这个基本方案(只有短程相互作用):
- 将粒子分配给分离的单元格
- 用于细胞越过相邻的单元格
- 对于每个粒子在与所有人互动在
- 移动所有粒子
对于 GPU 来说,内存位置非常重要。因此,分配每个细胞-细胞相互作用是有意义的到一个工作组,它可以共享 __local缓冲区s。但是很可能会发生一些细胞是空的,而另一些细胞充满了数量非常不同的粒子. => 每个工作组必须处理非常不同数量的交互粒子对之间. 他们将无法同步。
我想这是 PIC、GPGPU 和并行计算中的一些常见问题。但是我只看到了介绍性的教程和代码,对优化没有太多关注。我很乐意参考良好而简洁的学习资源。