Irregular Mesh: OpenMP Mapping

  • There may be significant differences in data movement based on scheduling
  • The ideal:
    • Every thread runs over its own edges (static scheduling)
    • Endpoints of these edges are not shared
    • Data moves to its home on the first pass, then stays put
  • The reality:
    • Connect graph => some endpoints must be shared
    • Multi-word data moves (cache lines) => false sharing
    • OpenMP does not standardize how to resolve this
      • Best bets: Reorder data for locality or use nonstandard directives (HPF + MPI?)