From 10a2eec85edee94df5add6ee356ca0e833134e3d Mon Sep 17 00:00:00 2001 From: Rusty Benson Date: Wed, 5 Jul 2023 13:37:51 -0400 Subject: [PATCH 1/2] minor performance updates for mpp::get_peset function --- mpp/include/mpp_util_mpi.inc | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/mpp/include/mpp_util_mpi.inc b/mpp/include/mpp_util_mpi.inc index ef9443783a..fdcf4f1a0c 100644 --- a/mpp/include/mpp_util_mpi.inc +++ b/mpp/include/mpp_util_mpi.inc @@ -106,17 +106,14 @@ function get_peset(pelist) enddo endif - allocate( sorted(size(pelist(:))) ) - sorted = pelist errunit = stderr() if( debug )write( errunit,* )'pelist=', pelist !find if this array matches any existing peset do i = 1,peset_num if( debug )write( errunit,'(a,3i6)' )'pe, i, peset_num=', pe, i, peset_num - if( size(sorted(:)).EQ.size(peset(i)%list(:)) )then - if( ALL(sorted.EQ.peset(i)%list) )then - deallocate(sorted) + if( size(pelist(:)).EQ.size(peset(i)%list(:)) )then + if( ALL(pelist.EQ.peset(i)%list) )then get_peset = i; return end if end if @@ -126,14 +123,13 @@ function get_peset(pelist) if( peset_num > current_peset_max ) call expand_peset() i = peset_num !shorthand !create list - allocate( peset(i)%list(size(sorted(:))) ) - peset(i)%list(:) = sorted(:) - peset(i)%count = size(sorted(:)) + allocate( peset(i)%list(size(pelist(:))) ) + peset(i)%list(:) = pelist(:) + peset(i)%count = size(pelist(:)) - call MPI_GROUP_INCL( peset(current_peset_num)%group, size(sorted(:)), sorted-mpp_root_pe(), peset(i)%group, error ) + call MPI_GROUP_INCL( peset(current_peset_num)%group, size(pelist(:)), pelist-mpp_root_pe(), peset(i)%group, error ) call MPI_COMM_CREATE_GROUP(peset(current_peset_num)%id, peset(i)%group, & DEFAULT_TAG, peset(i)%id, error ) - deallocate(sorted) get_peset = i return From 07b04daae68322920088247b4af9b9e0115c8507 Mon Sep 17 00:00:00 2001 From: Rusty Benson Date: Wed, 5 Jul 2023 13:42:29 -0400 Subject: [PATCH 2/2] remove sorted declaration from mpp::get_peset --- mpp/include/mpp_util_mpi.inc | 1 - 1 file changed, 1 deletion(-) diff --git a/mpp/include/mpp_util_mpi.inc b/mpp/include/mpp_util_mpi.inc index fdcf4f1a0c..7d235be83b 100644 --- a/mpp/include/mpp_util_mpi.inc +++ b/mpp/include/mpp_util_mpi.inc @@ -93,7 +93,6 @@ function get_peset(pelist) integer, intent(in), optional :: pelist(:) integer :: errunit integer :: i, n - integer, allocatable :: sorted(:) if( .NOT.PRESENT(pelist) )then !set it to current_peset_num get_peset = current_peset_num; return