[Dart-dev] DART/branches Revision: 12786

dart at ucar.edu dart at ucar.edu
Fri Aug 24 14:37:44 MDT 2018


hendric at ucar.edu
2018-08-24 14:37:44 -0600 (Fri, 24 Aug 2018)
138

was setting the window before getting group info.
everything compiles and runs but are not getting
the correct answer for group rank 1.




Modified: DART/branches/rma_distrib/developer_tests/mpi_groups/simple_test.f90
===================================================================
--- DART/branches/rma_distrib/developer_tests/mpi_groups/simple_test.f90	2018-08-24 17:30:26 UTC (rev 12785)
+++ DART/branches/rma_distrib/developer_tests/mpi_groups/simple_test.f90	2018-08-24 20:37:44 UTC (rev 12786)
@@ -130,7 +130,15 @@
 read(iunit, nml = simple_test_nml, iostat = io)
 call check_namelist_read(iunit, io, "simple_test_nml")
 
+!----------------------------------------------------------------------
+! create data array
+!----------------------------------------------------------------------
+allocate(my_array(NX/group_size))
 
+do ii = 1, NX/group_size
+   my_array(ii) = local_rank*NX/group_size + ii
+end do
+
 !----------------------------------------------------------------------
 ! create groups
 !----------------------------------------------------------------------
@@ -137,14 +145,10 @@
 call create_groups()
 
 !----------------------------------------------------------------------
-! create data array
+! create window
 !----------------------------------------------------------------------
-allocate(my_array(NX/group_size))
+call create_window()
 
-do ii = 1, NX/group_size
-   my_array(ii) = local_rank*NX/group_size + ii
-end do
-
 if (my_task_id() == 0) then
    print*, my_task_id(), '::', my_array(:)
 endif
@@ -161,10 +165,12 @@
    print*, my_task_id(), '::', my_array(:)
 endif
 
-do ii = 1,NX
-   print*, 'my_task_id() = ', my_task_id(), 'get_owner(ii)', ii, get_owner(ii, my_task_id())
+do ii = 1, NX
+   print*, 'my_task_id() = ', my_task_id(), 'get_owner(ii)', ii, get_owner(ii, my_task_id()), get_my_val(ii)
 enddo
 
+call free_window()
+
 !----------------------------------------------------------------------
 ! finalize simple_test
 !----------------------------------------------------------------------
@@ -184,11 +190,11 @@
 
 allocate(group_members(group_size)) ! this is module global
 
-call mpi_comm_group(mpi_comm_world, group_all, ierr)  ! get the word group from mpi_comm_world
-call build_my_group(my_task_id(), group_size, group_members) ! create a list of processors in the grid group
-call mpi_group_incl(group_all, group_size, group_members, subgroup, ierr)
-call mpi_comm_create(mpi_comm_world, subgroup, mpi_comm_grid, ierr)
-call mpi_comm_rank(mpi_comm_grid, local_rank, ierr) ! rank within group
+call mpi_comm_group(  mpi_comm_world, group_all,                           ierr ) ! get the word group from mpi_comm_world
+call build_my_group(  my_task_id(),   group_size, group_members )                 ! create a list of processors in the grid group
+call mpi_group_incl(  group_all,      group_size, group_members, subgroup, ierr )
+call mpi_comm_create( mpi_comm_world, subgroup,   mpi_comm_grid,           ierr )
+call mpi_comm_rank(   mpi_comm_grid,  local_rank,                          ierr ) ! rank within group
 
 print*, 'my_task_id(), local_rank, group_size, subgroup', my_task_id(), local_rank, group_size, subgroup
 
@@ -241,19 +247,19 @@
 ! datasize comes from mpi_utilities_mod
 call mpi_type_size(datasize, sizedouble, ierr)
 
-window_size = NX*sizedouble
+window_size = (NX/group_size)*sizedouble
 aa          = malloc(NX)
 
 call MPI_ALLOC_MEM(window_size, mpi_info_null, aa, ierr)
 
 ! can't do my_array assignment with a cray pointer, so you need to loop
-count = 1
-do ii = 1, NX
-   duplicate_array(count) = my_array(ii)
-   count = count + 1
-enddo
+!#! count = 1
+!#! do ii = 1, NX
+!#!    duplicate_array(count) = my_array(ii)
+!#!    count = count + 1
+!#! enddo
 
-call mpi_win_create(duplicate_array, window_size,   &
+call mpi_win_create(my_array,        window_size,   &
                     sizedouble,      MPI_INFO_NULL, &
                     mpi_comm_grid,   my_window,     ierr)
 
@@ -284,7 +290,10 @@
 
 ! caluclate who has the info
 owner = get_owner(i, my_task_id())
+target_disp = mod(i,NX/group_size)


More information about the Dart-dev mailing list