1 ! -*- Mode: Fortran; -*-
3 ! (C) 2013 by Argonne National Laboratory.
4 ! See COPYRIGHT in top-level directory.
7 ! Based on a test written by Jim Hoekstra on behalf of Cray, Inc.
8 ! see ticket #884 https://trac.mpich.org/projects/mpich/ticket/884
14 INTEGER RANK, SIZE, IERR, COMM, errs
15 INTEGER MAX, I, K, dest
16 INTEGER STATUS(MPI_STATUS_SIZE)
18 INTEGER, PARAMETER :: nb=2
19 INTEGER :: blklen(nb)=(/1,1/)
20 INTEGER :: types(nb)=(/MPI_DOUBLE_PRECISION,MPI_CHAR/)
21 INTEGER(kind=MPI_ADDRESS_KIND) :: disp(nb)=(/0,8/)
23 INTEGER, PARAMETER :: amax=200
24 INTEGER :: type1, type2, extent
30 CALL MPI_Comm_rank(COMM,RANK,IERR)
31 CALL MPI_Comm_size(COMM,SIZE,IERR)
34 CALL MPI_Type_create_struct(nb, blklen, disp, types, type1, ierr)
35 CALL MPI_Type_commit(type1, ierr)
36 CALL MPI_Type_extent(type1, extent, ierr)
38 CALL MPI_Type_contiguous(4, Type1, Type2, ierr)
39 CALL MPI_Type_commit(Type2, ierr)
40 CALL MPI_Type_extent(Type2, extent, ierr)
46 ! send k copies of datatype Type1
47 CALL MPI_Send(a, k, Type1, dest, 0, comm, ierr)
49 ELSE IF (rank == dest) THEN
51 CALL MPI_Recv(a, 200, Type2, 0, 0, comm, status, ierr)
52 CALL MPI_Get_elements(status, Type2, i, ierr)
55 PRINT *, "k=",k," MPI_Get_elements returns", i, ", but it should be", 2*k
59 ! thix rank does not particupate
63 CALL MPI_Type_free(type1, ierr)
64 CALL MPI_Type_free(type2, ierr)
66 CALL MPI_Finalize( ierr )
68 IF(rank .EQ. 0 .AND. errs .EQ. 0) THEN
72 END PROGRAM get_elem_u