网格划分与负载均衡
MFIX-Exa在将计算域分解为各个矩形网格,以及如何将这些网格分配给MPI等级方面具有很大的灵活性。可以存在不同大小的网格,每个MPI等级可以有多个网格,以及不同的策略来将网格分配给MPI等级。
我们在此使用“负载均衡”一词来指代网格创建(以及再网格化时的重新创建)和网格分配给MPI等级的综合过程。
请参阅 网格创建 了解网格如何创建,即如何在每个层级定义构建 MultiFabs
的 BoxArray
。
请参阅 负载均衡 了解AMReX支持的将网格分配给MPI等级的策略,即定义该层级上构建 MultiFabs
的 DistributionMapping
。
MFIX-Exa还允许使用“双网格方法”,其中网格和粒子数据被分配在不同的盒布局上,并映射到不同的MPI等级。通过在输入文件中设置 mfix.dual_grid = 1
启用此选项。有关此方法的更多信息,请参阅 双网格方法。
在使用OpenMP的多核机器上运行时,我们还可以通过设置网格块大小(通过定义 fabarray.mfiter_tile_size
)以及(如相关)粒子块大小(通过定义 particle.tile_size
)来控制工作分布。我们还可以指定将块分配给OpenMP线程的策略。有关块划分的更多信息,请参阅
MFIter with Tiling
在AMReX文档中。