uxarray
uxarray copied to clipboard
DRAFT: Optimize Connectivity Construction
Closes #1196 #1197
Overview
- Optimizes the construction of the following connectivity variables
edge_node_connectivityface_edge_connectivityface_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.7xto17.35xspeedup
face_face
462xto764xspeedup