This source file includes following definitions.
- MPI_Type_create_resized
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include "ompi_config.h"
22
23 #include "ompi/mpi/c/bindings.h"
24 #include "ompi/runtime/params.h"
25 #include "ompi/communicator/communicator.h"
26 #include "ompi/errhandler/errhandler.h"
27 #include "ompi/datatype/ompi_datatype.h"
28 #include "ompi/memchecker.h"
29
30 #if OMPI_BUILD_MPI_PROFILING
31 #if OPAL_HAVE_WEAK_SYMBOLS
32 #pragma weak MPI_Type_create_resized = PMPI_Type_create_resized
33 #endif
34 #define MPI_Type_create_resized PMPI_Type_create_resized
35 #endif
36
37 static const char FUNC_NAME[] = "MPI_Type_create_resized";
38
39
40 int MPI_Type_create_resized(MPI_Datatype oldtype,
41 MPI_Aint lb,
42 MPI_Aint extent,
43 MPI_Datatype *newtype)
44 {
45 int rc;
46
47 MEMCHECKER(
48 memchecker_datatype(oldtype);
49 );
50
51 if( MPI_PARAM_CHECK ) {
52 OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
53 if (NULL == oldtype || MPI_DATATYPE_NULL == oldtype ||
54 NULL == newtype) {
55 return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_TYPE,
56 FUNC_NAME );
57 }
58 }
59
60 OPAL_CR_ENTER_LIBRARY();
61
62 rc = ompi_datatype_create_resized( oldtype, lb, extent, newtype );
63 if( rc != MPI_SUCCESS ) {
64 ompi_datatype_destroy( newtype );
65 OMPI_ERRHANDLER_RETURN( rc, MPI_COMM_WORLD, rc, FUNC_NAME );
66 }
67
68 {
69 MPI_Aint a_a[2];
70 a_a[0] = lb;
71 a_a[1] = extent;
72 ompi_datatype_set_args( *newtype, 0, NULL, 2, a_a, 1, &oldtype, MPI_COMBINER_RESIZED );
73 }
74
75 OPAL_CR_EXIT_LIBRARY();
76 return MPI_SUCCESS;
77 }
78
79