E3SM-Project / E3SM-Project/scream
Remaining issues in the ACI code
- Dominant language
- No language data
- Stars
- 79
- Forks
- 54
- PR merge metrics
- No merged PRs in 30d
Description
Here is the list of issues that must be fixed in the ACI code after the PR #2794 is merged:
1. Only eddy diffusivity of heat should be an additional added output from SHOC. We should remove `w_variance` and `cldfrac_liq_prev` from the SHOC interface.
2. Combine kernels (if possible) and create lambda functions for the inner parallel_for loops.
@bartgol's comment:
```
I see you have plenty of functions that have 2 versions, one to dispatch the outer loop, and one to be called
from inside the loop. If the inner one is only used in the outer one, you could consider just using a lambda in
the outer one, to keep the code smaller.
OTOH, dispatching lots of kernels is not great. If in all outer loops you just do
const int icol = team.league_rank();
inner_function_name(...);
you could consider merging all these kernels together, and doing all these calculations at once,
if possible (it may not be, if they must happen at different times during the ACI step).
```
3. Change the assignment of qqcw (and other arrays) so that memory access is coalesced
@bartgol's comment:
```
These for loops will deteriorate performance on GPU, due to non-coalesced access. You should try to rework the code,
with multiple TeamVectorRange loops (that's fine, especially if there are no deps among them, so no barriers needed).
E.g., this for loop could be a TVR over nlevs*num_aero_mods, where inside you do modulo arithmetic to recover
ilev/imode (in a way that still ensures coalesced access)
```
4. Currently `top_lev` is a namelist variable. We should add code to compute it based on pressure levels.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.