[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