20 #include <fms_platform.h> 22 use mpp_mod,
only: mpp_init, mpp_exit, mpp_pe, mpp_npes, stderr, stdout, &
23 mpp_clock_id, mpp_clock_begin, mpp_clock_end
31 integer,
parameter :: n=96
32 real,
allocatable,
dimension(:,:,:) :: a, b, cc
34 #ifdef use_CRI_pointers 37 integer(POINTER_KIND) :: ptr
38 integer :: i, j, k, ks, ke
42 type(mpp_pset_type) :: pset
45 integer :: id_full, id_alloc, id_auto
46 integer :: out_unit, errunit
53 write( out_unit,
'(a,i6)' )
'Starting MPP_PSET unit test, npes=', npes
56 id_full = mpp_clock_id(
'Full array' )
57 id_alloc = mpp_clock_id(
'Allocatable array, PSETs' )
58 id_auto = mpp_clock_id(
'Automatic array, PSETs' )
65 #ifdef use_CRI_pointers 70 #ifdef use_CRI_pointers 75 call mpp_clock_begin(id_full)
83 call mpp_clock_end(id_full)
86 write( errunit,
'(a,4i6)' )
'pe, n, ks, ke=', pe, n, ks, ke
87 call mpp_clock_begin(id_alloc)
96 call mpp_clock_end(id_alloc)
97 write( errunit,
'(a,i6,2es23.15)' )
'b, c should be equal: pe b c=', &
106 subroutine test_auto(m)
109 integer,
intent(in) :: m
112 #ifdef use_CRI_pointers 117 call mpp_clock_begin(id_auto)
121 d(i,j,k) = 2*a(i,j,k)
126 call mpp_clock_end(id_auto)
127 write( errunit,
'(a,i6,2es23.15)' )
'b, d should be equal: pe b d=', &
130 end subroutine test_auto
subroutine, public mpp_pset_segment_array(pset, ls, le, lsp, lep)
subroutine, public mpp_pset_stack_push(pset, ptr, len)
subroutine, public mpp_pset_create(npset, pset, stacksize, pelist, commID)
subroutine, public mpp_pset_delete(pset)
logical function, public mpp_pset_root(pset)
subroutine, public mpp_pset_sync(pset)