This source file includes following definitions.
- MPI_Graph_neighbors
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/memchecker.h"
32
33 #if OMPI_BUILD_MPI_PROFILING
34 #if OPAL_HAVE_WEAK_SYMBOLS
35 #pragma weak MPI_Graph_neighbors = PMPI_Graph_neighbors
36 #endif
37 #define MPI_Graph_neighbors PMPI_Graph_neighbors
38 #endif
39
40 static const char FUNC_NAME[] = "MPI_Graph_neighbors";
41
42
43 int MPI_Graph_neighbors(MPI_Comm comm, int rank, int maxneighbors,
44 int neighbors[])
45 {
46 int err;
47
48 MEMCHECKER(
49 memchecker_comm(comm);
50 );
51
52
53 if (MPI_PARAM_CHECK) {
54 OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
55 if (ompi_comm_invalid(comm)) {
56 return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD, MPI_ERR_COMM,
57 FUNC_NAME);
58 }
59 if (OMPI_COMM_IS_INTER(comm)) {
60 return OMPI_ERRHANDLER_INVOKE (comm, MPI_ERR_COMM,
61 FUNC_NAME);
62 }
63 if ((0 > maxneighbors) || ((0 < maxneighbors) && NULL == neighbors)) {
64 return OMPI_ERRHANDLER_INVOKE (comm, MPI_ERR_ARG,
65 FUNC_NAME);
66 }
67 if ((0 > rank) || (rank > ompi_group_size(comm->c_local_group))) {
68 return OMPI_ERRHANDLER_INVOKE (comm, MPI_ERR_RANK,
69 FUNC_NAME);
70 }
71 }
72
73 if (!OMPI_COMM_IS_GRAPH(comm)) {
74 return OMPI_ERRHANDLER_INVOKE (comm, MPI_ERR_TOPOLOGY,
75 FUNC_NAME);
76 }
77 OPAL_CR_ENTER_LIBRARY();
78
79
80 err = comm->c_topo->topo.graph.graph_neighbors(comm, rank, maxneighbors, neighbors);
81 OPAL_CR_EXIT_LIBRARY();
82
83 OMPI_ERRHANDLER_RETURN(err, comm, err, FUNC_NAME);
84 }