-
Notifications
You must be signed in to change notification settings - Fork 79
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
Conversation
This will be needed for ESCOMP#305, where this variable is now referenced from another subroutine as well.
cesm/nuopc_cap_share/shr_pio_mod.F90
Outdated
allocate(io_compid(ncomps)) | ||
allocate(io_compname(ncomps)) | ||
allocate(iosystems(ncomps)) | ||
call ESMF_LogWrite(trim(subname)//": called", ESMF_LOGMSG_INFO) |
There was a problem hiding this comment.
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'
cesm/nuopc_cap_share/shr_pio_mod.F90
Outdated
|
||
call NUOPC_DriverGetComp(driver, compList=gcomp, rc=rc) | ||
if (chkerr(rc,__LINE__,u_FILE_u)) return | ||
driverpecount = 0 |
There was a problem hiding this comment.
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.
cesm/nuopc_cap_share/shr_pio_mod.F90
Outdated
|
||
total_comps = size(gcomp) | ||
if(associated(gcomp)) then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
call it driver_gcomps
cesm/nuopc_cap_share/shr_pio_mod.F90
Outdated
total_comps = 0 | ||
endif | ||
|
||
call MPI_AllReduce(MPI_IN_PLACE, total_comps, 1, MPI_INTEGER, & |
There was a problem hiding this comment.
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.
cesm/driver/ensemble_driver.F90
Outdated
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 |
There was a problem hiding this comment.
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
@jedwards4b - is this PR still relevant - if so should it be merged - or closed? |
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
Testing performed if application target is UFS-coupled:
Testing performed if application target is UFS-HAFS:
Hashes used for testing: