NCAR / ccpp-framework

Common Community Physics Package (CCPP)
http://www.dtcenter.org/community-code/common-community-physics-package-ccpp/
Other
26 stars 63 forks source link

ccpp-prebuild: add blocked data tests and run prebuild tests in CI #515

Closed climbfuji closed 8 months ago

climbfuji commented 8 months ago

Add a testing framework for blocked data structures in ccpp-prebuild, and run ccpp-prebuild tests in CI

The purpose of this PR is to prepare for upcoming changes to ccpp-prebuild to facilitate the transition to capgen. In a nutshell, we are going to add support for chunked data arrays and the use of horizontal_loop_begin / horizontal_loop_end to ccpp-prebuild. With that, we can switch the UFS and other models that use blocked data structures (SCM, NEPTUNE) over to contiguous arrays that get chunked up for parallel processing using OpenMP threading.

The expectation is that we'll be able to demonstrate similar or better performance and that we'll be able to remove support for blocked data structures afterwards (and in doing so won't have to add it to capgen).

This PR will be followed by a PR that adds ccpp-prebuild capabilities for contiguous data arrays, together with a test for the new functionality. After that, we can start working on the ufs-weather-model/SCM/NEPTUNE interface.

User interface changes?: No

Fixes https://github.com/NCAR/ccpp-framework/issues/500

Testing: test removed: n/a tests added: ccpp-prebuild test for blocked data structures, added all ccpp-prebuild tests to CI unit tests: n/a system tests: n/a manual testing: Ran existing and new ccpp-prebuild tests locally on my macOS