Skip to content

Run IPD_setup_step over individual blocks#41

Closed
climbfuji wants to merge 13 commits into
NCAR:masterfrom
climbfuji:ipd_setup_step_over_individual_blocks
Closed

Run IPD_setup_step over individual blocks#41
climbfuji wants to merge 13 commits into
NCAR:masterfrom
climbfuji:ipd_setup_step_over_individual_blocks

Conversation

@climbfuji
Copy link
Copy Markdown
Collaborator

This PR changes the way IPD_setup_step is run.

In the original code, the setup step at the beginning of each time integration step is performed over all blocks concurrently, whereas the remainder of the IPD steps (physics, radiation) are run over individual blocks. This makes it difficult - albeit not impossible - to integrate in the CCPP framework.

With the changes proposed here, IPD_setup_step is run over individual blocks. This penalizes the runtime on the small test case C96 on Cheyenne and Theia, where the model time step is large (1800s) and the time required for it is small. The reason therefore is that IPD_setup_step reads data from disk at certain intervals (6h?) and that this read is now performed nBlock times. For any realistic run on a large mesh (i.e. small grid spacing) with a small time step and the total runtime being dominated by the physics and dynamics, the increase in runtime should be small if not negligible.

The PR also addresses a few bugs inside sfcsub.F that cause crashes when using the GNU compilers.

Changes tested for BFB on Cheyenne (64bit, nh, no threading) and Theia (32bit, nh, with threading).

…ing and fix bug (wrong index for Diag(nb)%dq3dt(:,:,9))
…al blocks, add GFS type sfccycle, and update arguments to schemes called inside time_vary_step (GFS driver) and the individual IPD steps
…block-dependent data instead of 'save' variables inside the routine. This information is stored in GFS_sfccycle_type's clima_data subtype. Also: bugfixes required to run with gnu/clang compilers
… requires using a storage for block-dependent data and different block lengths
…ed different standard_names than global variables fice, hice and tisfc
@climbfuji
Copy link
Copy Markdown
Collaborator Author

This PR is no longer needed (functionality already in features/ccpp, which will become master this week).

@climbfuji climbfuji closed this Mar 19, 2018
climbfuji pushed a commit to climbfuji/ccpp-physics that referenced this pull request Jun 30, 2020
Mods to MYNN sfc and PBL for fractional/coupled for latest gsd/develop code (based on NCAR#40)
SamuelTrahanNOAA pushed a commit that referenced this pull request Jun 30, 2022
address the constant issue and use kind_phys for sfcdif4
hannahcbarnes pushed a commit to hannahcbarnes/ccpp-physics that referenced this pull request Aug 3, 2022
* netcdf parallel writing and lon/lat in netcdf file

* some changes to get it to (almost) run on hera

* lat should be in degrees - remove conversion to radians.

* import updates from jswhit/fv3atm

* more bug fixes - now works on hera

* specify collective access if compression turned on.

* use classic model

* bug fixes for parallel IO with compression

* fix calculation of max compression error

* turn off shuffle filter

* code simplification

* remove debug print

* don't use parallel IO for 2d file (since it seems to increase run time)

* allow multiple values of output_file, as long as they all start with 'netcdf'

* use default chunksize for 2d vars

* delete commented out macro ESMF_ERR_ABORT

* delete rad2dg

* add module_write_netcdf_parallel.F90

* add option to build without parallel netcdf (-DNO_PARALLEL_NETCDF)

* fix typo

* stub file for building without parallel netcdf lib

* allow chunksizes for 2d arrays to be set in model_configure (ichunk2d,jchunk2d)
Default is size of array on each write task.

* add ichunk3d,jchunk3d,kchunk3d to specify 3d chunksizes.
Default is now ichunk3d,jchunk3d same as array size on each PE, kchunk3d=nlevs
This results in the fastest writes on hera.

* fix typo

* put ifdefs in module_write_netcdf_parallel.F90 so no stub file needed

* don't need this file anymore

* remove module_write_netcdf_parallel_stub.o target

* use specified chunksizes for serial IO. If chunksize parameter negative, let netcdf library choose defaults.

* update comments

* get output_file without esmf call error

* syntax fix

* fix stub interface in module_write_netcdf_parallel.F90 for cmake build

Co-authored-by: junwang-noaa <37633869+junwang-noaa@users.noreply.github.com>
lisa-bengtsson pushed a commit to lisa-bengtsson/ccpp-physics that referenced this pull request Mar 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants