Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

first step - reorder pio_init and move to ensemble_driver #305

Merged
merged 19 commits into from
Oct 7, 2022

Conversation

jedwards4b
Copy link
Collaborator

@jedwards4b jedwards4b commented Jun 15, 2022

Description of changes

Add an InitializeIO phase to the ensemble_driver, this allows ESMF to control the ASYNCIO tasks internally.

Specific notes

It requires however that components do not do IO initialization until the realize phase so the cice and mosart component PRs: ESCOMP/MOSART#55
ESCOMP/CICE#18 must be merged first.

Contributors other than yourself, if any:

CMEPS Issues Fixed (include github issue #):

Are changes expected to change answers? bfb

Any User Interface Changes

Testing performed

Testing performed if application target is CESM:

Tested CESM prealpha cheyenne against cesm2_3_alpha09c baseline

  • (recommended) CIME_DRIVER=nuopc scripts_regression_tests.py
    • machines:
    • details (e.g. failed tests):
  • (recommended) CESM testlist_drv.xml
    • machines and compilers:
    • details (e.g. failed tests):
  • (optional) CESM prealpha test
    • machines and compilers
    • details (e.g. failed tests):
  • (other) please described in detail
    • machines and compilers
    • details (e.g. failed tests):

Testing performed if application target is UFS-coupled:

  • (recommended) UFS-coupled testing
    • description:
    • details (e.g. failed tests):

Testing performed if application target is UFS-HAFS:

  • (recommended) UFS-HAFS testing
    • description:
    • details (e.g. failed tests):

Hashes used for testing:

  • CESM:
  • UFS-coupled, then umbrella repostiory to check out and associated hash:
    • repository to check out:
    • branch/hash:
  • UFS-HAFS, then umbrella repostiory to check out and associated hash:
    • repository to check out:
    • branch/hash:

@jedwards4b jedwards4b requested a review from mvertens June 15, 2022 21:01
@jedwards4b jedwards4b self-assigned this Jun 15, 2022
billsacks added a commit to billsacks/CMEPS that referenced this pull request Jul 5, 2022
This will be needed for ESCOMP#305, where
this variable is now referenced from another subroutine as well.
cesm/driver/ensemble_driver.F90 Outdated Show resolved Hide resolved
cesm/driver/ensemble_driver.F90 Outdated Show resolved Hide resolved
cesm/driver/ensemble_driver.F90 Show resolved Hide resolved
cesm/driver/esm_time_mod.F90 Outdated Show resolved Hide resolved
cesm/driver/esm_time_mod.F90 Outdated Show resolved Hide resolved
allocate(io_compid(ncomps))
allocate(io_compname(ncomps))
allocate(iosystems(ncomps))
call ESMF_LogWrite(trim(subname)//": called", ESMF_LOGMSG_INFO)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment - ' Determine if my task is an async IO task'


call NUOPC_DriverGetComp(driver, compList=gcomp, rc=rc)
if (chkerr(rc,__LINE__,u_FILE_u)) return
driverpecount = 0
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Be consistent - put in an else here like below.


total_comps = size(gcomp)
if(associated(gcomp)) then
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

call it driver_gcomps

total_comps = 0
endif

call MPI_AllReduce(MPI_IN_PLACE, total_comps, 1, MPI_INTEGER, &
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If there is an async IO component, this enables that component to know the number of driver components. If there is not an async IO component this really does not do anything.

call ESMF_LogSetError(ESMF_RC_ARG_BAD, msg=msgstr, line=__LINE__, file=__FILE__, rcToReturn=rc)
return
endif

if(pio_async_iotasks > 0 .and. .not. asyncIO_available) then
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Write a message to the driver log file saying that you are using async io
It would be helpful to have this in log output

@mvertens
Copy link
Collaborator

mvertens commented Oct 7, 2022

@jedwards4b - is this PR still relevant - if so should it be merged - or closed?

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