Excessive data movement in extend_panel_interpolate
What happened?
The subroutine extend_panel_interpolate is written such that the compiler will generate more data movement than is necessary. This excessive data movement intensifies a computational load imbalance in the CSLAM advection. While it is impossible to eliminate the load imbalance that is caused by the special treatment of panels at the corners of the cubed sphere, it is possible to reduce the cost of this subroutine by changing the way that the subroutine is written.
What are the steps to reproduce the bug?
Any CAM configuration that uses the spectral element dynamical core with CSLAM advection will encounter this issue.
What CAM tag were you using?
cam6_4_100
What machine were you running CAM on?
CISL machine (e.g. cheyenne)
What compiler were you using?
Intel
Path to a case directory, if applicable
No response
Will you be addressing this bug yourself?
Yes, but I will need some help
Extra info
I have placed a modified version of fvm_reconstruction_mod.F90 in the directory ~dennis/CAM_mods/DataMovement/cam/src/dynamics/se/dycore
Note that this change is B4B, and it reduces the execution time of CAM in a likely CMIP configuration by ~3.5%
PR opened: https://github.com/ESCOMP/CAM/pull/1365