This source file includes following definitions.
- MPI_Cart_coords
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include "ompi_config.h"
24 #include <stdio.h>
25
26 #include "ompi/mpi/c/bindings.h"
27 #include "ompi/runtime/params.h"
28 #include "ompi/communicator/communicator.h"
29 #include "ompi/errhandler/errhandler.h"
30 #include "ompi/mca/topo/topo.h"
31 #include "ompi/group/group.h"
32 #include "ompi/memchecker.h"
33
34 #if OMPI_BUILD_MPI_PROFILING
35 #if OPAL_HAVE_WEAK_SYMBOLS
36 #pragma weak MPI_Cart_coords = PMPI_Cart_coords
37 #endif
38 #define MPI_Cart_coords PMPI_Cart_coords
39 #endif
40
41 static const char FUNC_NAME[] = "MPI_Cart_coords";
42
43 int MPI_Cart_coords(MPI_Comm comm, int rank, int maxdims, int coords[])
44 {
45 int err;
46
47 MEMCHECKER(
48 memchecker_comm(comm);
49 );
50
51
52 if (MPI_PARAM_CHECK) {
53 OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
54 if (ompi_comm_invalid(comm)) {
55 return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD, MPI_ERR_COMM,
56 FUNC_NAME);
57 }
58 if (OMPI_COMM_IS_INTER(comm)) {
59 return OMPI_ERRHANDLER_INVOKE (comm, MPI_ERR_COMM,
60 FUNC_NAME);
61 }
62 if ( (0 > maxdims) || ((0 < maxdims) && (NULL == coords))) {
63 return OMPI_ERRHANDLER_INVOKE (comm, MPI_ERR_ARG,
64 FUNC_NAME);
65 }
66 if ((0 > rank) || (rank > ompi_group_size(comm->c_local_group))) {
67 return OMPI_ERRHANDLER_INVOKE (comm, MPI_ERR_RANK,
68 FUNC_NAME);
69 }
70 }
71
72 if (!OMPI_COMM_IS_CART(comm)) {
73 return OMPI_ERRHANDLER_INVOKE (comm, MPI_ERR_TOPOLOGY,
74 FUNC_NAME);
75 }
76 OPAL_CR_ENTER_LIBRARY();
77
78 err = comm->c_topo->topo.cart.cart_coords(comm, rank, maxdims, coords);
79 OPAL_CR_EXIT_LIBRARY();
80
81 OMPI_ERRHANDLER_RETURN(err, comm, err, FUNC_NAME);
82 }