Irregular Mesh: OpenMP Partitioning

  • Flux computations are data-parallel
    • flux=(x(iedge(i,1)) - x(iedge(i,2)))/2
  • Node updates are nearly data-parallel
    • x(iedge(i,1)) = x(iedge(i,1)) - flux
    • Not independent if iedge(iy,1) = iedge(ix,2)
    • But ATOMIC supports associative updates
  • Error check is a reduction
    • err = err + flux(i)*flux(i)
    • REDUCTION class for variables