Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
cd97027
Add data movement for some fields under the mpas_halo_groups
May 7, 2025
09dff98
Add a data region and acc kernels to the 2D packing code
May 7, 2025
768b174
Add the update directives that should have been part of the last commit
May 7, 2025
3ccbbcc
Comment out data present region, see if this causes an error
May 7, 2025
7273513
Expand the data managed on the GPU for the halo exchange
May 7, 2025
de48471
Remove the OpenACC management of recvBuf
May 7, 2025
00a546f
Add update host(sendBuf) back, address answer diff
May 7, 2025
c4f9c88
Expand to other packing kernels, only update sendBuf after packing fi…
May 7, 2025
8b82e1a
Change to simple integers to access the buffers and the field arrays
May 7, 2025
c43f52e
Add kernels to unpacking loops and use a data present region to try t…
May 8, 2025
ac48594
Change from data copyin regions to enter/exit directives for the r?ar…
May 8, 2025
6e04de3
Re-enable update host for sendBuf, add update device recvBuf
May 8, 2025
d5558b4
Remove update directives, use acc host_data use_device(...) near MPI …
May 8, 2025
7a5a4ca
checkpoints: acc pack + cuda aware mpi working
abishekg7 Aug 6, 2025
152770a
seems to be working
abishekg7 Aug 7, 2025
26566fb
Optimized packing and unpacking loops. Adding timers and other cleanup
abishekg7 Aug 7, 2025
5dfab19
Working savepoint
abishekg7 Aug 12, 2025
c6c2db7
u_2 and w_2 need to be copied out after dynamics + cleanup
abishekg7 Aug 13, 2025
3da3eca
using attach in a directive instead of the acc_attach library call
abishekg7 Aug 13, 2025
135552c
Using attach clause in parallel region will also auto detach at end o…
abishekg7 Aug 13, 2025
f0f5f88
Reverting the indexing in loops and comment cleanup
abishekg7 Aug 13, 2025
d5e4890
New namelist option to switch on or off GPU-Aware MPI
abishekg7 Aug 13, 2025
10656ef
Adding a dependency to mpas_timer.o in mpas_halo.o
abishekg7 Sep 25, 2025
5486740
Adding option to choose GPU-direct halo exchanges in abstract interface
abishekg7 Mar 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/core_atmosphere/Registry.xml
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,10 @@
units="-"
description="Method to use for exchanging halos"
possible_values="`mpas_dmpar', `mpas_halo'"/>
<nml_option name="config_gpu_aware_mpi" type="logical" default_value="false"
units="-"
description="Whether to use GPU-aware MPI for halo exchanges"
possible_values=".true. or .false."/>
</nml_record>

#ifdef MPAS_USE_MUSICA
Expand Down
125 changes: 65 additions & 60 deletions src/core_atmosphere/dynamics/mpas_atm_time_integration.F

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions src/core_atmosphere/mpas_atm_halos.F
Original file line number Diff line number Diff line change
Expand Up @@ -48,18 +48,23 @@ subroutine atm_build_halo_groups(domain, ierr)

! Local variables
character(len=StrKIND), pointer :: config_halo_exch_method
logical, pointer :: config_gpu_aware_mpi


!
! Determine from the namelist option config_halo_exch_method which halo exchange method to employ
!
call mpas_pool_get_config(domain % blocklist % configs, 'config_halo_exch_method', config_halo_exch_method)
call mpas_pool_get_config(domain % blocklist % configs, 'config_gpu_aware_mpi', config_gpu_aware_mpi)

if (trim(config_halo_exch_method) == 'mpas_dmpar') then
call mpas_log_write('')
call mpas_log_write('*** Using ''mpas_dmpar'' routines for exchanging halos')
call mpas_log_write('')

if (config_gpu_aware_mpi) then
call mpas_log_write('GPU-aware MPI is not presently supported with config_halo_exch_method = mpas_dmpar',MPAS_LOG_CRIT)
end if
!
! Set up halo exchange groups used during atmosphere core initialization
!
Expand Down
2 changes: 1 addition & 1 deletion src/framework/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ mpas_c_interfacing.o:
xml_stream_parser.o: xml_stream_parser.c
$(CC) $(CFLAGS) $(CPPFLAGS) $(CPPINCLUDES) -I../external/ezxml -c xml_stream_parser.c

mpas_halo.o: mpas_derived_types.o mpas_pool_routines.o mpas_log.o
mpas_halo.o: mpas_derived_types.o mpas_pool_routines.o mpas_log.o mpas_timer.o

mpas_ptscotch_interface.o : mpas_derived_types.o mpas_log.o

Expand Down
11 changes: 10 additions & 1 deletion src/framework/mpas_dmpar.F
Original file line number Diff line number Diff line change
Expand Up @@ -7448,19 +7448,28 @@ end subroutine mpas_dmpar_exch_group_end_halo_exch!}}}
!> exchange is complete.
!
!-----------------------------------------------------------------------
subroutine mpas_dmpar_exch_group_full_halo_exch(domain, groupName, iErr)!{{{
subroutine mpas_dmpar_exch_group_full_halo_exch(domain, groupName, withGPUAwareMPI, iErr)!{{{

type (domain_type), intent(inout) :: domain
character (len=*), intent(in) :: groupName
logical, optional, intent(in) :: withGPUAwareMPI
integer, optional, intent(out) :: iErr

type (mpas_exchange_group), pointer :: exchGroupPtr
integer :: nLen
logical :: useGPUAwareMPI

if ( present(iErr) ) then
iErr = MPAS_DMPAR_NOERR
end if

useGPUAwareMPI = .false.
if (present(withGPUAwareMPI)) then
if (withGPUAwareMPI) then
call mpas_log_write(' GPU-aware MPI not implemented in this module', MPAS_LOG_CRIT)
end if
end if

nLen = len_trim(groupName)
DMPAR_DEBUG_WRITE(' -- Trying to perform a full exchange for group ' // trim(groupName))

Expand Down
Loading