基于八叉树网格的GPU感知自适应网格细化及同步相量测量算法性能与能效分析
1. 基于八叉树网格的GPU感知自适应网格细化
在基于八叉树的网格上进行GPU感知的自适应网格细化(AMR)时,需要考虑多方面的因素以确保算法的高效执行。
1.1 内存操作与线程同步
在更新操作后,线程需要通过CUDA中的 threadfence()
或icpc编译器中的 sync synchronize()
内置函数执行内存栅栏操作,以保证内存访问的一致性。为避免死锁,在OpenMP版本中,对基础单元的循环使用 pragma
进行静态调度,块大小设为1;在CUDA版本中,每个线程束仅使用一个线程。
1.2 性能测试
为评估所实现算法的性能,使用了特定的测试方法。将一个由基础单元组成的8×8×8立方体的一半划分为(8×8×4)×8 = 2048个物理单元,另一半对应8×8×4 = 256个物理单元。在这样的网格上,按以下顺序迭代执行一系列操作:
1. 细化阶段 :将每个物理单元细化为8个子单元。
2. 碎片整理 :对物理单元进行碎片整理。
3. 邻居搜索 :为每个物理单元搜索邻居。
之后,再按以下顺序迭代变换得到的网格:
1. 粗化阶段 :将具有共同父单元的8个物理单元合并为1个单元。
2. 碎片整理 :再次对物理单