uxarray icon indicating copy to clipboard operation
uxarray copied to clipboard

DRAFT: Optimize Connectivity Construction

Open philipc2 opened this issue 7 months ago • 0 comments

Closes #1196 #1197

Overview

  • Optimizes the construction of the following connectivity variables
    • edge_node_connectivity
    • face_edge_connectivity
    • face_face_connectivity
  • Cleans up docstrings and setters in Grid

All timings below were taken on a single NCAR Derecho CPU node.

  • AMD EPYC™ 7763 Milan processors
  • Dual-socket nodes, 64 cores per socket
  • 256 GB DDR4 memory per node

Connectivity Timing (Before)

Resolution Nodes Faces Edges edge_node & face_edge face_face edge_face
30km 1,310,720 655,362 1,966,080 9.37s 14.81s 0.05s
15km 5,242,880 2,621,442 7,864,320 39.99s 58.22s 0.23s
7.5km 5,242,880 2,621,442 7,864,320 99.31s 223.92s 0.50s

Connectivity Timings (After)

Resolution Nodes Faces Edges edge_node & face_edge face_face edge_face (unchanged)
30km 1,310,720 655,362 1,966,080 0.54 0.032s 0.05s
15km 5,242,880 2,621,442 7,864,320 2.79 0.123s 0.23s
7.5km 5,242,880 2,621,442 7,864,320 11.41 0.293s 0.50s

Connectivity Speedup

edge_node and face_edge connectivity

  • 8.7x to 17.35x speedup

face_face

  • 462x to 764x speedup

philipc2 avatar Apr 03 '25 06:04 philipc2