Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Index: topol.tex
===================================================================
--- topol.tex (revision 1806)
+++ topol.tex (working copy)
@@ -216,7 +216,7 @@
\mpibind{MPI\_Cart\_create(MPI\_Comm~comm\_old, int~ndims, const int~dims[], const int~periods[], int~reorder, MPI\_Comm~*comm\_cart)}
-\mpifnewbind{MPI\_Cart\_create(comm\_old, ndims, dims, periods, reorder, comm\_cart, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm\_old \\ INTEGER, INTENT(IN) :: ndims, dims(ndims) \\ LOGICAL, INTENT(IN) :: periods(ndims), reorder \\ TYPE(MPI\_Comm), INTENT(OUT) :: comm\_cart \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Cart\_create(comm\_old, ndims, dims, periods, reorder, comm\_cart, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm\_old \\ INTEGER, INTENT(IN) :: ndims, dims(ndims) \\ LOGICAL, INTENT(IN) :: periods(ndims), reorder \\ TYPE(MPI\_Comm), INTENT(OUT) :: comm\_cart \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_CART\_CREATE(COMM\_OLD, NDIMS, DIMS, PERIODS, REORDER, COMM\_CART, IERROR)\fargs INTEGER COMM\_OLD, NDIMS, DIMS(*), COMM\_CART, IERROR \\ LOGICAL PERIODS(*), REORDER}
\mpicppemptybind{MPI::Intracomm::Create\_cart(int~ndims, const~int~dims[], const~bool~periods[], bool~reorder) const}{MPI::Cartcomm}
@@ -251,7 +251,7 @@
\mpibind{MPI\_Dims\_create(int~nnodes, int~ndims, int~dims[])}
-\mpifnewbind{MPI\_Dims\_create(nnodes, ndims, dims, ierror) BIND(C) \fargs INTEGER, INTENT(IN) :: nnodes, ndims \\ INTEGER, INTENT(INOUT) :: dims(ndims) \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Dims\_create(nnodes, ndims, dims, ierror) \fargs INTEGER, INTENT(IN) :: nnodes, ndims \\ INTEGER, INTENT(INOUT) :: dims(ndims) \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_DIMS\_CREATE(NNODES, NDIMS, DIMS, IERROR)\fargs INTEGER NNODES, NDIMS, DIMS(*), IERROR}
\mpicppemptybind{MPI::Compute\_dims(int~nnodes, int~ndims, int~dims[])}{void}
@@ -303,7 +303,7 @@
\mpibind{MPI\_Graph\_create(MPI\_Comm~comm\_old, int~nnodes, const int~index[], const int~edges[], int~reorder, MPI\_Comm~*comm\_graph)}
-\mpifnewbind{MPI\_Graph\_create(comm\_old, nnodes, index, edges, reorder, comm\_graph, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm\_old \\ INTEGER, INTENT(IN) :: nnodes, index(nnodes), edges(*) \\ LOGICAL, INTENT(IN) :: reorder \\ TYPE(MPI\_Comm), INTENT(OUT) :: comm\_graph \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Graph\_create(comm\_old, nnodes, index, edges, reorder, comm\_graph, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm\_old \\ INTEGER, INTENT(IN) :: nnodes, index(nnodes), edges(*) \\ LOGICAL, INTENT(IN) :: reorder \\ TYPE(MPI\_Comm), INTENT(OUT) :: comm\_graph \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_GRAPH\_CREATE(COMM\_OLD, NNODES, INDEX, EDGES, REORDER, COMM\_GRAPH, IERROR)\fargs INTEGER COMM\_OLD, NNODES, INDEX(*), EDGES(*), COMM\_GRAPH, IERROR \\ LOGICAL REORDER}
\mpicppemptybind{MPI::Intracomm::Create\_graph(int~nnodes, const~int~index[], const~int~edges[], bool~reorder) const}{MPI::Graphcomm}
@@ -471,7 +471,7 @@
\mpibind{MPI\_Dist\_graph\_create\_adjacent(MPI\_Comm~comm\_old, int~indegree, const int~sources[], const int~sourceweights[], int~outdegree, const int~destinations[], const int destweights[], MPI\_Info~info, int~reorder, MPI\_Comm~*comm\_dist\_graph)}
-\mpifnewbind{MPI\_Dist\_graph\_create\_adjacent(comm\_old, indegree, sources, sourceweights, outdegree, destinations, destweights, info, reorder, comm\_dist\_graph, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm\_old \\ INTEGER, INTENT(IN) :: indegree, sources(indegree), outdegree, destinations(outdegree) \\ INTEGER, INTENT(IN) :: sourceweights(*), destweights(*) \\ TYPE(MPI\_Info), INTENT(IN) :: info \\ LOGICAL, INTENT(IN) :: reorder \\ TYPE(MPI\_Comm), INTENT(OUT) :: comm\_dist\_graph \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Dist\_graph\_create\_adjacent(comm\_old, indegree, sources, sourceweights, outdegree, destinations, destweights, info, reorder, comm\_dist\_graph, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm\_old \\ INTEGER, INTENT(IN) :: indegree, sources(indegree), outdegree, destinations(outdegree) \\ INTEGER, INTENT(IN) :: sourceweights(*), destweights(*) \\ TYPE(MPI\_Info), INTENT(IN) :: info \\ LOGICAL, INTENT(IN) :: reorder \\ TYPE(MPI\_Comm), INTENT(OUT) :: comm\_dist\_graph \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_DIST\_GRAPH\_CREATE\_ADJACENT(COMM\_OLD, INDEGREE, SOURCES, SOURCEWEIGHTS, OUTDEGREE, DESTINATIONS, DESTWEIGHTS, INFO, REORDER, COMM\_DIST\_GRAPH, IERROR)\fargs INTEGER COMM\_OLD, INDEGREE, SOURCES(*), SOURCEWEIGHTS(*), OUTDEGREE, \\ \ \ \ \ DESTINATIONS(*), DESTWEIGHTS(*), INFO, COMM\_DIST\_GRAPH, IERROR \\ LOGICAL REORDER}
\mpicppemptybind{MPI::Intracomm::Dist\_graph\_create\_adjacent(int indegree, const~int~sources[], const~int~sourceweights[], int~outdegree, const~int~destinations[], const~int~destweights[], const~MPI::Info\&~info, bool~reorder) const}{MPI::Distgraphcomm}
@@ -567,7 +567,7 @@
\mpibind{MPI\_Dist\_graph\_create(MPI\_Comm~comm\_old, int~n, const int~sources[], const int~degrees[], const int~destinations[], const int~weights[], MPI\_Info~info, int~reorder, MPI\_Comm~*comm\_dist\_graph)}
-\mpifnewbind{MPI\_Dist\_graph\_create(comm\_old, n, sources, degrees, destinations, weights, info, reorder, comm\_dist\_graph, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm\_old \\ INTEGER, INTENT(IN) :: n, sources(n), degrees(n), destinations(*) \\ INTEGER, INTENT(IN) :: weights(*) \\ TYPE(MPI\_Info), INTENT(IN) :: info \\ LOGICAL, INTENT(IN) :: reorder \\ TYPE(MPI\_Comm), INTENT(OUT) :: comm\_dist\_graph \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Dist\_graph\_create(comm\_old, n, sources, degrees, destinations, weights, info, reorder, comm\_dist\_graph, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm\_old \\ INTEGER, INTENT(IN) :: n, sources(n), degrees(n), destinations(*) \\ INTEGER, INTENT(IN) :: weights(*) \\ TYPE(MPI\_Info), INTENT(IN) :: info \\ LOGICAL, INTENT(IN) :: reorder \\ TYPE(MPI\_Comm), INTENT(OUT) :: comm\_dist\_graph \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_DIST\_GRAPH\_CREATE(COMM\_OLD, N, SOURCES, DEGREES, DESTINATIONS, WEIGHTS, INFO, REORDER, COMM\_DIST\_GRAPH, IERROR)\fargs INTEGER COMM\_OLD, N, SOURCES(*), DEGREES(*), DESTINATIONS(*), WEIGHTS(*), INFO, COMM\_DIST\_GRAPH, IERROR \\ LOGICAL REORDER}
\mpicppemptybind{MPI::Intracomm::Dist\_graph\_create(int~n, const~int~sources[], const~int~degrees[], const~int destinations[], const~int~weights[], const~MPI::Info\&~info, bool~reorder) const}{MPI::Distgraphcomm}
@@ -822,7 +822,7 @@
\mpibind{MPI\_Topo\_test(MPI\_Comm~comm, int~*status)}
-\mpifnewbind{MPI\_Topo\_test(comm, status, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(OUT) :: status \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Topo\_test(comm, status, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(OUT) :: status \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_TOPO\_TEST(COMM, STATUS, IERROR)\fargs INTEGER COMM, STATUS, IERROR}
\mpicppemptybind{MPI::Comm::Get\_topology() const}{int}
@@ -845,7 +845,7 @@
\mpibind{MPI\_Graphdims\_get(MPI\_Comm~comm, int~*nnodes, int~*nedges)}
-\mpifnewbind{MPI\_Graphdims\_get(comm, nnodes, nedges, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(OUT) :: nnodes, nedges \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Graphdims\_get(comm, nnodes, nedges, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(OUT) :: nnodes, nedges \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_GRAPHDIMS\_GET(COMM, NNODES, NEDGES, IERROR)\fargs INTEGER COMM, NNODES, NEDGES, IERROR}
\mpicppemptybind{MPI::Graphcomm::Get\_dims(int~nnodes[], int~nedges[]) const}{void}
@@ -869,7 +869,7 @@
\mpibind{MPI\_Graph\_get(MPI\_Comm~comm, int~maxindex, int~maxedges, int~index[], int~edges[])}
-\mpifnewbind{MPI\_Graph\_get(comm, maxindex, maxedges, index, edges, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: maxindex, maxedges \\ INTEGER, INTENT(OUT) :: index(maxindex), edges(maxedges) \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Graph\_get(comm, maxindex, maxedges, index, edges, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: maxindex, maxedges \\ INTEGER, INTENT(OUT) :: index(maxindex), edges(maxedges) \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_GRAPH\_GET(COMM, MAXINDEX, MAXEDGES, INDEX, EDGES, IERROR)\fargs INTEGER COMM, MAXINDEX, MAXEDGES, INDEX(*), EDGES(*), IERROR}
\mpicppemptybind{MPI::Graphcomm::Get\_topo(int~maxindex, int~maxedges, int~index[], int~edges[]) const}{void}
@@ -880,7 +880,7 @@
\mpibind{MPI\_Cartdim\_get(MPI\_Comm~comm, int~*ndims)}
-\mpifnewbind{MPI\_Cartdim\_get(comm, ndims, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(OUT) :: ndims \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Cartdim\_get(comm, ndims, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(OUT) :: ndims \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_CARTDIM\_GET(COMM, NDIMS, IERROR)\fargs INTEGER COMM, NDIMS, IERROR}
\mpicppemptybind{MPI::Cartcomm::Get\_dim() const}{int}
@@ -902,7 +902,7 @@
\mpibind{MPI\_Cart\_get(MPI\_Comm~comm, int~maxdims, int~dims[], int~periods[], int~coords[])}
-\mpifnewbind{MPI\_Cart\_get(comm, maxdims, dims, periods, coords, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: maxdims \\ INTEGER, INTENT(OUT) :: dims(maxdims), coords(maxdims) \\ LOGICAL, INTENT(OUT) :: periods(maxdims) \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Cart\_get(comm, maxdims, dims, periods, coords, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: maxdims \\ INTEGER, INTENT(OUT) :: dims(maxdims), coords(maxdims) \\ LOGICAL, INTENT(OUT) :: periods(maxdims) \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_CART\_GET(COMM, MAXDIMS, DIMS, PERIODS, COORDS, IERROR)\fargs INTEGER COMM, MAXDIMS, DIMS(*), COORDS(*), IERROR \\ LOGICAL PERIODS(*)}
\mpicppemptybind{MPI::Cartcomm::Get\_topo(int~maxdims, int~dims[], bool~periods[], int~coords[]) const}{void}
@@ -914,7 +914,7 @@
\mpibind{MPI\_Cart\_rank(MPI\_Comm~comm, const int~coords[], int~*rank)}
-\mpifnewbind{MPI\_Cart\_rank(comm, coords, rank, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: coords(*) \\ INTEGER, INTENT(OUT) :: rank \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Cart\_rank(comm, coords, rank, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: coords(*) \\ INTEGER, INTENT(OUT) :: rank \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_CART\_RANK(COMM, COORDS, RANK, IERROR)\fargs INTEGER COMM, COORDS(*), RANK, IERROR}
\mpicppemptybind{MPI::Cartcomm::Get\_cart\_rank(const~int~coords[]) const}{int}
@@ -942,7 +942,7 @@
\mpibind{MPI\_Cart\_coords(MPI\_Comm~comm, int~rank, int~maxdims, int~coords[])}
-\mpifnewbind{MPI\_Cart\_coords(comm, rank, maxdims, coords, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: rank, maxdims \\ INTEGER, INTENT(OUT) :: coords(maxdims) \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Cart\_coords(comm, rank, maxdims, coords, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: rank, maxdims \\ INTEGER, INTENT(OUT) :: coords(maxdims) \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_CART\_COORDS(COMM, RANK, MAXDIMS, COORDS, IERROR)\fargs INTEGER COMM, RANK, MAXDIMS, COORDS(*), IERROR}
\mpicppemptybind{MPI::Cartcomm::Get\_coords(int~rank, int~maxdims, int~coords[]) const}{void}
@@ -960,7 +960,7 @@
\mpibind{MPI\_Graph\_neighbors\_count(MPI\_Comm~comm, int~rank, int~*nneighbors)}
-\mpifnewbind{MPI\_Graph\_neighbors\_count(comm, rank, nneighbors, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: rank \\ INTEGER, INTENT(OUT) :: nneighbors \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Graph\_neighbors\_count(comm, rank, nneighbors, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: rank \\ INTEGER, INTENT(OUT) :: nneighbors \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_GRAPH\_NEIGHBORS\_COUNT(COMM, RANK, NNEIGHBORS, IERROR)\fargs INTEGER COMM, RANK, NNEIGHBORS, IERROR}
\mpicppemptybind{MPI::Graphcomm::Get\_neighbors\_count(int~rank) const}{int}
@@ -974,7 +974,7 @@
\mpibind{MPI\_Graph\_neighbors(MPI\_Comm~comm, int~rank, int~maxneighbors, int~neighbors[])}
-\mpifnewbind{MPI\_Graph\_neighbors(comm, rank, maxneighbors, neighbors, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: rank, maxneighbors \\ INTEGER, INTENT(OUT) :: neighbors(maxneighbors) \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Graph\_neighbors(comm, rank, maxneighbors, neighbors, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: rank, maxneighbors \\ INTEGER, INTENT(OUT) :: neighbors(maxneighbors) \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_GRAPH\_NEIGHBORS(COMM, RANK, MAXNEIGHBORS, NEIGHBORS, IERROR)\fargs INTEGER COMM, RANK, MAXNEIGHBORS, NEIGHBORS(*), IERROR}
\mpicppemptybind{MPI::Graphcomm::Get\_neighbors(int~rank, int~maxneighbors, int neighbors[]) const}{void}
@@ -1119,7 +1119,7 @@
\mpibind{MPI\_Dist\_graph\_neighbors\_count(MPI\_Comm~comm, int~*indegree, int~*outdegree, int~*weighted)}
-\mpifnewbind{MPI\_Dist\_graph\_neighbors\_count(comm, indegree, outdegree, weighted, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(OUT) :: indegree, outdegree \\ LOGICAL, INTENT(OUT) :: weighted \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Dist\_graph\_neighbors\_count(comm, indegree, outdegree, weighted, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(OUT) :: indegree, outdegree \\ LOGICAL, INTENT(OUT) :: weighted \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_DIST\_GRAPH\_NEIGHBORS\_COUNT(COMM, INDEGREE, OUTDEGREE, WEIGHTED, IERROR)\fargs INTEGER COMM, INDEGREE, OUTDEGREE, IERROR \\ LOGICAL WEIGHTED}
\mpicppemptybind{MPI::Distgraphcomm::Get\_dist\_neighbors\_count(int~rank, int~indegree[], int~outdegree[], bool\&~weighted) const}{void}
@@ -1142,7 +1142,7 @@
\mpibind{MPI\_Dist\_graph\_neighbors(MPI\_Comm~comm, int~maxindegree, int~sources[], int~sourceweights[], int~maxoutdegree, int~destinations[], int~destweights[])}
-\mpifnewbind{MPI\_Dist\_graph\_neighbors(comm, maxindegree, sources, sourceweights, maxoutdegree, destinations, destweights, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: maxindegree, maxoutdegree \\ INTEGER, INTENT(OUT) :: sources(maxindegree), destinations(maxoutdegree) \\ INTEGER :: sourceweights(*), destweights(*) \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Dist\_graph\_neighbors(comm, maxindegree, sources, sourceweights, maxoutdegree, destinations, destweights, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: maxindegree, maxoutdegree \\ INTEGER, INTENT(OUT) :: sources(maxindegree), destinations(maxoutdegree) \\ INTEGER :: sourceweights(*), destweights(*) \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_DIST\_GRAPH\_NEIGHBORS(COMM, MAXINDEGREE, SOURCES, SOURCEWEIGHTS, MAXOUTDEGREE, DESTINATIONS, DESTWEIGHTS, IERROR)\fargs INTEGER COMM, MAXINDEGREE, SOURCES(*), SOURCEWEIGHTS(*), MAXOUTDEGREE, \\ \ \ \ \ DESTINATIONS(*), DESTWEIGHTS(*), IERROR}
\mpicppemptybind{MPI::Distgraphcomm::Get\_dist\_neighbors(int~maxindegree, int~sources[], int~sourceweights[], int~maxoutdegree, int~destinations[], int~destweights[])}{void}
@@ -1206,7 +1206,7 @@
\mpibind{MPI\_Cart\_shift(MPI\_Comm~comm, int~direction, int~disp, int~*rank\_source, int~*rank\_dest)}
-\mpifnewbind{MPI\_Cart\_shift(comm, direction, disp, rank\_source, rank\_dest, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: direction, disp \\ INTEGER, INTENT(OUT) :: rank\_source, rank\_dest \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Cart\_shift(comm, direction, disp, rank\_source, rank\_dest, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: direction, disp \\ INTEGER, INTENT(OUT) :: rank\_source, rank\_dest \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_CART\_SHIFT(COMM, DIRECTION, DISP, RANK\_SOURCE, RANK\_DEST, IERROR)\fargs INTEGER COMM, DIRECTION, DISP, RANK\_SOURCE, RANK\_DEST, IERROR}
\mpicppemptybind{MPI::Cartcomm::Shift(int~direction, int~disp, int\&~rank\_source, int\&~rank\_dest) const}{void}
@@ -1281,7 +1281,7 @@
\mpibind{MPI\_Cart\_sub(MPI\_Comm~comm, const int~remain\_dims[], MPI\_Comm~*newcomm)}
-\mpifnewbind{MPI\_Cart\_sub(comm, remain\_dims, newcomm, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ LOGICAL, INTENT(IN) :: remain\_dims(*) \\ TYPE(MPI\_Comm), INTENT(OUT) :: newcomm \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Cart\_sub(comm, remain\_dims, newcomm, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ LOGICAL, INTENT(IN) :: remain\_dims(*) \\ TYPE(MPI\_Comm), INTENT(OUT) :: newcomm \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_CART\_SUB(COMM, REMAIN\_DIMS, NEWCOMM, IERROR)\fargs INTEGER COMM, NEWCOMM, IERROR \\ LOGICAL REMAIN\_DIMS(*)}
\mpicppemptybind{MPI::Cartcomm::Sub(const~bool~remain\_dims[]) const}{MPI::Cartcomm}
@@ -1339,7 +1339,7 @@
\mpibind{MPI\_Cart\_map(MPI\_Comm~comm, int~ndims, const int~dims[], const int~periods[], int~*newrank)}
-\mpifnewbind{MPI\_Cart\_map(comm, ndims, dims, periods, newrank, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: ndims, dims(ndims) \\ LOGICAL, INTENT(IN) :: periods(ndims) \\ INTEGER, INTENT(OUT) :: newrank \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Cart\_map(comm, ndims, dims, periods, newrank, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: ndims, dims(ndims) \\ LOGICAL, INTENT(IN) :: periods(ndims) \\ INTEGER, INTENT(OUT) :: newrank \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_CART\_MAP(COMM, NDIMS, DIMS, PERIODS, NEWRANK, IERROR)\fargs INTEGER COMM, NDIMS, DIMS(*), NEWRANK, IERROR \\ LOGICAL PERIODS(*)}
\mpicppemptybind{MPI::Cartcomm::Map(int~ndims, const~int~dims[], const~bool~periods[]) const}{int}
@@ -1381,7 +1381,7 @@
\mpibind{MPI\_Graph\_map(MPI\_Comm~comm, int~nnodes, const int~index[], const int~edges[], int~*newrank)}
-\mpifnewbind{MPI\_Graph\_map(comm, nnodes, index, edges, newrank, ierror) BIND(C) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: nnodes, index(nnodes), edges(*) \\ INTEGER, INTENT(OUT) :: newrank \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Graph\_map(comm, nnodes, index, edges, newrank, ierror) \fargs TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, INTENT(IN) :: nnodes, index(nnodes), edges(*) \\ INTEGER, INTENT(OUT) :: newrank \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_GRAPH\_MAP(COMM, NNODES, INDEX, EDGES, NEWRANK, IERROR)\fargs INTEGER COMM, NNODES, INDEX(*), EDGES(*), NEWRANK, IERROR}
\mpicppemptybind{MPI::Graphcomm::Map(int~nnodes, const~int~index[], const~int~edges[]) const}{int}
@@ -1443,7 +1443,11 @@
send and receive buffers at each process is defined as the sequence
returned by \mpifunc{MPI\_DIST\_GRAPH\_NEIGHBORS} for destinations and
sources, respectively. For a general graph topology, created with
-\mpifunc{MPI\_GRAPH\_CREATE}, the order of neighbors in the send and
+\mpifunc{MPI\_GRAPH\_CREATE}, the use of neighborhood collective
+communication is restricted to adjacency matrices, where the number of
+edges between any two processes is defined to be the same for both
+processes (i.e., with a symmetric adjacency matrix). In this case,
+the order of neighbors in the send and
receive buffers is defined as the sequence of neighbors as returned by
\mpifunc{MPI\_GRAPH\_NEIGHBORS}. Note that general graph topologies
should generally be replaced by the distributed graph topologies.
@@ -1486,7 +1490,7 @@
\mpibind{MPI\_Neighbor\_allgather(const void* sendbuf, int sendcount, MPI\_Datatype sendtype, void* recvbuf, int recvcount, MPI\_Datatype recvtype, MPI\_Comm~comm)}
-\mpifnewbind{MPI\_Neighbor\_allgather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm, ierror) BIND(C) \fargs TYPE(*), DIMENSION(..), INTENT(IN) :: sendbuf \\ TYPE(*), DIMENSION(..) :: recvbuf \\ INTEGER, INTENT(IN) :: sendcount, recvcount \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Neighbor\_allgather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm, ierror) \fargs TYPE(*), DIMENSION(..), INTENT(IN) :: sendbuf \\ TYPE(*), DIMENSION(..) :: recvbuf \\ INTEGER, INTENT(IN) :: sendcount, recvcount \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_NEIGHBOR\_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)\fargs $<$type$>$ SENDBUF(*), RECVBUF(*)\\INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR}
This function supports Cartesian communicators, graph communicators, and
@@ -1579,7 +1583,7 @@
\mpibind{MPI\_Neighbor\_allgatherv(const void* sendbuf, int sendcount, MPI\_Datatype sendtype, void* recvbuf, const int recvcounts[], const int displs[], MPI\_Datatype recvtype, MPI\_Comm~comm)}
-\mpifnewbind{MPI\_Neighbor\_allgatherv(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm, ierror) BIND(C) \fargs TYPE(*), DIMENSION(..), INTENT(IN) :: sendbuf \\ TYPE(*), DIMENSION(..) :: recvbuf \\ INTEGER, INTENT(IN) :: sendcount, recvcounts(*), displs(*) \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Neighbor\_allgatherv(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm, ierror) \fargs TYPE(*), DIMENSION(..), INTENT(IN) :: sendbuf \\ TYPE(*), DIMENSION(..) :: recvbuf \\ INTEGER, INTENT(IN) :: sendcount, recvcounts(*), displs(*) \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_NEIGHBOR\_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)\fargs $<$type$>$ SENDBUF(*), RECVBUF(*)\\INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, COMM, IERROR}
This function supports Cartesian communicators, graph communicators, and
@@ -1661,7 +1665,7 @@
\mpibind{MPI\_Neighbor\_alltoall(const void* sendbuf, int sendcount, MPI\_Datatype sendtype, void* recvbuf, int recvcount, MPI\_Datatype recvtype, MPI\_Comm~comm)}
-\mpifnewbind{MPI\_Neighbor\_alltoall(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm, ierror) BIND(C) \fargs TYPE(*), DIMENSION(..), INTENT(IN) :: sendbuf \\ TYPE(*), DIMENSION(..) :: recvbuf \\ INTEGER, INTENT(IN) :: sendcount, recvcount \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Neighbor\_alltoall(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm, ierror) \fargs TYPE(*), DIMENSION(..), INTENT(IN) :: sendbuf \\ TYPE(*), DIMENSION(..) :: recvbuf \\ INTEGER, INTENT(IN) :: sendcount, recvcount \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_NEIGHBOR\_ALLTOALL(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)\fargs $<$type$>$ SENDBUF(*), RECVBUF(*)\\INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR}
This function supports Cartesian communicators, graph communicators, and
@@ -1742,7 +1746,7 @@
\mpibind{MPI\_Neighbor\_alltoallv(const void* sendbuf, const int sendcounts[], const int sdispls[], MPI\_Datatype sendtype, void* recvbuf, const int recvcounts[], const int rdispls[], MPI\_Datatype recvtype, MPI\_Comm~comm)}
-\mpifnewbind{MPI\_Neighbor\_alltoallv(sendbuf, sendcounts, sdispls, sendtype, recvbuf, recvcounts, rdispls, recvtype, comm, ierror) BIND(C) \fargs TYPE(*), DIMENSION(..), INTENT(IN) :: sendbuf \\ TYPE(*), DIMENSION(..) :: recvbuf \\ INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*) \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Neighbor\_alltoallv(sendbuf, sendcounts, sdispls, sendtype, recvbuf, recvcounts, rdispls, recvtype, comm, ierror) \fargs TYPE(*), DIMENSION(..), INTENT(IN) :: sendbuf \\ TYPE(*), DIMENSION(..) :: recvbuf \\ INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*) \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_NEIGHBOR\_ALLTOALLV(SENDBUF, SENDCOUNTS, SDISPLS, SENDTYPE, RECVBUF, RECVCOUNTS, RDISPLS, RECVTYPE, COMM, IERROR)\fargs $<$type$>$ SENDBUF(*), RECVBUF(*)\\INTEGER SENDCOUNTS(*), SDISPLS(*), SENDTYPE, RECVCOUNTS(*), RDISPLS(*), RECVTYPE, COMM, IERROR}
This function supports Cartesian communicators, graph communicators, and
@@ -1827,7 +1831,7 @@
\mpibind{MPI\_Neighbor\_alltoallw(const void* sendbuf, const int sendcounts[], const MPI\_Aint sdispls[], const MPI\_Datatype sendtypes[], void* recvbuf, const int recvcounts[], const MPI\_Aint rdispls[], const MPI\_Datatype recvtypes[], MPI\_Comm~comm)}
-\mpifnewbind{MPI\_Neighbor\_alltoallw(sendbuf, sendcounts, sdispls, sendtypes, recvbuf, recvcounts, rdispls, recvtypes, comm, ierror) BIND(C) \fargs TYPE(*), DIMENSION(..), INTENT(IN) :: sendbuf \\ TYPE(*), DIMENSION(..) :: recvbuf \\ INTEGER, INTENT(IN) :: sendcounts(*), recvcounts(*) \\ INTEGER(KIND=MPI\_ADDRESS\_KIND), INTENT(IN) :: sdispls(*), rdispls(*) \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtypes(*), recvtypes(*) \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Neighbor\_alltoallw(sendbuf, sendcounts, sdispls, sendtypes, recvbuf, recvcounts, rdispls, recvtypes, comm, ierror) \fargs TYPE(*), DIMENSION(..), INTENT(IN) :: sendbuf \\ TYPE(*), DIMENSION(..) :: recvbuf \\ INTEGER, INTENT(IN) :: sendcounts(*), recvcounts(*) \\ INTEGER(KIND=MPI\_ADDRESS\_KIND), INTENT(IN) :: sdispls(*), rdispls(*) \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtypes(*), recvtypes(*) \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_NEIGHBOR\_ALLTOALLW(SENDBUF, SENDCOUNTS, SDISPLS, SENDTYPES, RECVBUF, RECVCOUNTS, RDISPLS, RECVTYPES, COMM, IERROR)\fargs $<$type$>$ SENDBUF(*), RECVBUF(*)\\INTEGER(KIND=MPI\_ADDRESS\_KIND) SDISPLS(*), RDISPLS(*)\\INTEGER SENDCOUNTS(*), SENDTYPES(*), RECVCOUNTS(*), RECVTYPES(*), COMM, IERROR}
This function supports Cartesian communicators, graph communicators, and
@@ -1909,7 +1913,7 @@
\mpibind{MPI\_Ineighbor\_allgather(const void* sendbuf, int sendcount, MPI\_Datatype sendtype, void* recvbuf, int recvcount, MPI\_Datatype recvtype, MPI\_Comm~comm, MPI\_Request~*request)}
-\mpifnewbind{MPI\_Ineighbor\_allgather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm, request, ierror) BIND(C) \fargs TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: sendbuf \\ TYPE(*), DIMENSION(..), ASYNCHRONOUS :: recvbuf \\ INTEGER, INTENT(IN) :: sendcount, recvcount \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Ineighbor\_allgather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm, request, ierror) \fargs TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: sendbuf \\ TYPE(*), DIMENSION(..), ASYNCHRONOUS :: recvbuf \\ INTEGER, INTENT(IN) :: sendcount, recvcount \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_INEIGHBOR\_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, REQUEST, IERROR)\fargs $<$type$>$ SENDBUF(*), RECVBUF(*)\\INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, REQUEST, IERROR}
This call starts a nonblocking variant of
@@ -1934,7 +1938,7 @@
\mpibind{MPI\_Ineighbor\_allgatherv(const void* sendbuf, int sendcount, MPI\_Datatype sendtype, void* recvbuf, const int recvcounts[], const int displs[], MPI\_Datatype recvtype, MPI\_Comm~comm, MPI\_Request *request)}
-\mpifnewbind{MPI\_Ineighbor\_allgatherv(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm, request, ierror) BIND(C) \fargs TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: sendbuf \\ TYPE(*), DIMENSION(..), ASYNCHRONOUS :: recvbuf \\ INTEGER, INTENT(IN) :: sendcount \\ INTEGER, INTENT(IN), ASYNCHRONOUS :: recvcounts(*), displs(*) \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Ineighbor\_allgatherv(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm, request, ierror) \fargs TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: sendbuf \\ TYPE(*), DIMENSION(..), ASYNCHRONOUS :: recvbuf \\ INTEGER, INTENT(IN) :: sendcount \\ INTEGER, INTENT(IN), ASYNCHRONOUS :: recvcounts(*), displs(*) \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_INEIGHBOR\_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, REQUEST, IERROR)\fargs $<$type$>$ SENDBUF(*), RECVBUF(*)\\INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, COMM, REQUEST, IERROR}
%
This call starts a nonblocking variant of
@@ -1956,7 +1960,7 @@
\mpibind{MPI\_Ineighbor\_alltoall(const void* sendbuf, int sendcount, MPI\_Datatype sendtype, void* recvbuf, int recvcount, MPI\_Datatype recvtype, MPI\_Comm~comm, MPI\_Request *request)}
-\mpifnewbind{MPI\_Ineighbor\_alltoall(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm, request, ierror) BIND(C) \fargs TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: sendbuf \\ TYPE(*), DIMENSION(..), ASYNCHRONOUS :: recvbuf \\ INTEGER, INTENT(IN) :: sendcount, recvcount \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Ineighbor\_alltoall(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm, request, ierror) \fargs TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: sendbuf \\ TYPE(*), DIMENSION(..), ASYNCHRONOUS :: recvbuf \\ INTEGER, INTENT(IN) :: sendcount, recvcount \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_INEIGHBOR\_ALLTOALL(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, REQUEST, IERROR)\fargs $<$type$>$ SENDBUF(*), RECVBUF(*)\\INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, REQUEST, IERROR}
This call starts a nonblocking variant of
@@ -1986,7 +1990,7 @@
\mpibind{MPI\_Ineighbor\_alltoallv(const void* sendbuf, const int sendcounts[], const int sdispls[], MPI\_Datatype sendtype, void* recvbuf, const int recvcounts[], const int rdispls[], MPI\_Datatype recvtype, MPI\_Comm~comm, MPI\_Request *request)}
-\mpifnewbind{MPI\_Ineighbor\_alltoallv(sendbuf, sendcounts, sdispls, sendtype, recvbuf, recvcounts, rdispls, recvtype, comm, request, ierror) BIND(C) \fargs TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: sendbuf \\ TYPE(*), DIMENSION(..), ASYNCHRONOUS :: recvbuf \\ INTEGER, INTENT(IN), ASYNCHRONOUS :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*) \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Ineighbor\_alltoallv(sendbuf, sendcounts, sdispls, sendtype, recvbuf, recvcounts, rdispls, recvtype, comm, request, ierror) \fargs TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: sendbuf \\ TYPE(*), DIMENSION(..), ASYNCHRONOUS :: recvbuf \\ INTEGER, INTENT(IN), ASYNCHRONOUS :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*) \\ TYPE(MPI\_Datatype), INTENT(IN) :: sendtype, recvtype \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_INEIGHBOR\_ALLTOALLV(SENDBUF, SENDCOUNTS, SDISPLS, SENDTYPE, RECVBUF, RECVCOUNTS, RDISPLS, RECVTYPE, COMM, REQUEST, IERROR)\fargs $<$type$>$ SENDBUF(*), RECVBUF(*)\\INTEGER SENDCOUNTS(*), SDISPLS(*), SENDTYPE, RECVCOUNTS(*), RDISPLS(*), RECVTYPE, COMM, REQUEST, IERROR}
This call starts a nonblocking variant of
@@ -2013,7 +2017,7 @@
\mpibind{MPI\_Ineighbor\_alltoallw(const void* sendbuf, const int sendcounts[], const MPI\_Aint sdispls[], const MPI\_Datatype sendtypes[], void* recvbuf, const int recvcounts[], const MPI\_Aint rdispls[], const MPI\_Datatype recvtypes[], MPI\_Comm~comm, MPI\_Request *request)}
-\mpifnewbind{MPI\_Ineighbor\_alltoallw(sendbuf, sendcounts, sdispls, sendtypes, recvbuf, recvcounts, rdispls, recvtypes, comm, request, ierror) BIND(C) \fargs TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: sendbuf \\ TYPE(*), DIMENSION(..), ASYNCHRONOUS :: recvbuf \\ INTEGER, INTENT(IN), ASYNCHRONOUS :: sendcounts(*), recvcounts(*) \\ INTEGER(KIND=MPI\_ADDRESS\_KIND), INTENT(IN), ASYNCHRONOUS :: sdispls(*), rdispls(*) \\ TYPE(MPI\_Datatype), INTENT(IN), ASYNCHRONOUS :: sendtypes(*), recvtypes(*) \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_Ineighbor\_alltoallw(sendbuf, sendcounts, sdispls, sendtypes, recvbuf, recvcounts, rdispls, recvtypes, comm, request, ierror) \fargs TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: sendbuf \\ TYPE(*), DIMENSION(..), ASYNCHRONOUS :: recvbuf \\ INTEGER, INTENT(IN), ASYNCHRONOUS :: sendcounts(*), recvcounts(*) \\ INTEGER(KIND=MPI\_ADDRESS\_KIND), INTENT(IN), ASYNCHRONOUS :: sdispls(*), rdispls(*) \\ TYPE(MPI\_Datatype), INTENT(IN), ASYNCHRONOUS :: sendtypes(*), recvtypes(*) \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_INEIGHBOR\_ALLTOALLW(SENDBUF, SENDCOUNTS, SDISPLS, SENDTYPES, RECVBUF, RECVCOUNTS, RDISPLS, RECVTYPES, COMM, REQUEST, IERROR)\fargs $<$type$>$ SENDBUF(*), RECVBUF(*)\\INTEGER(KIND=MPI\_ADDRESS\_KIND) SDISPLS(*), RDISPLS(*)\\INTEGER SENDCOUNTS(*), SENDTYPES(*), RECVCOUNTS(*), RECVTYPES(*), COMM, REQUEST, IERROR}
This call starts a nonblocking variant of
@@ -2143,44 +2147,41 @@
%%ENDHEADER
\begin{Verbatim}[commandchars=\\\$\^,commentchar=\%]
SUBROUTINE exchange (u, comm_cart, neigh_rank, num_neigh)
+IMPLICIT NONE
USE MPI
REAL u(0:101,0:101)
INTEGER comm_cart, num_neigh, neigh_rank(num_neigh)
INTEGER sndcounts(num_neigh), sndtypes(num_neigh)
-INTEGER rcvcounts(num_neigh), rcvtypes(num_neigh)
-INTEGER (KIND=MPI_ADDRESS_KIND) lb, sizeofreal, sdispls(num_neigh), &
- rdispls(num_neigh)
-INTEGER type_vec, i, ierr
-! The following initialization need to be done only once
-! before the first call of exchange.
-CALL MPI_TYPE_GET_EXTENT(MPI_REAL, lb, sizeofreal, ierr)
-CALL MPI_TYPE_VECTOR (100, 1, 102, MPI_REAL, type_vec, ierr)
-CALL MPI_TYPE_COMMIT (type_vec, ierr)
-sndtypes(1) = type_vec
-sndtypes(2) = type_vec
-sndtypes(3) = MPI_REAL
-sndtypes(4) = MPI_REAL
-DO i=1,num_neigh
- sndcounts(i) = 100
- rcvcounts(i) = 100
- rcvtypes(i) = sndtypes(i)
-END DO
-sdispls(1) = ( 1 + 1*102) * sizeofreal ! first element of u( 1,1:100)
-sdispls(2) = (100 + 1*102) * sizeofreal ! first element of u(100,1:100)
-sdispls(3) = ( 1 + 1*102) * sizeofreal ! first element of u(1:100, 1)
-sdispls(4) = ( 1 + 100*102) * sizeofreal ! first element of u(1:100,100)
-rdispls(1) = ( 0 + 1*102) * sizeofreal ! first element of u( 0,1:100)
-rdispls(2) = (101 + 1*102) * sizeofreal ! first element of u(101,1:100)
-rdispls(3) = ( 1 + 0*102) * sizeofreal ! first element of u(1:100, 0)
-rdispls(4) = ( 1 + 101*102) * sizeofreal ! first element of u(1:100,101)
-
-! the following communication has to be done in each call of exchange
+INTEGER rcvcounts(num_neigh), rcvtypes(num_neigh)
+INTEGER (KIND=MPI_ADDRESS_KIND) lb, sizeofreal
+INTEGER (KIND=MPI_ADDRESS_KIND) sdispls(num_neigh), rdispls(num_neigh)
+INTEGER type_vec, ierr
+! The following initialization need to be done only once
+! before the first call of exchange.
+CALL MPI_TYPE_GET_EXTENT (MPI_REAL, lb, sizeofreal, ierr)
+CALL MPI_TYPE_VECTOR (100, 1, 102, MPI_REAL, type_vec, ierr)
+CALL MPI_TYPE_COMMIT (type_vec, ierr)
+sndtypes(1:2) = type_vec
+sndcounts(1:2) = 1
+sndtypes(3:4) = MPI_REAL
+sndcounts(3:4) = 100
+rcvtypes = sndtypes
+rcvcounts = sndcounts
+sdispls(1) = ( 1 + 1*102) * sizeofreal ! first element of u( 1 , 1:100)
+sdispls(2) = (100 + 1*102) * sizeofreal ! first element of u(100 , 1:100)
+sdispls(3) = ( 1 + 1*102) * sizeofreal ! first element of u( 1:100, 1 )
+sdispls(4) = ( 1 + 100*102) * sizeofreal ! first element of u( 1:100,100 )
+rdispls(1) = ( 0 + 1*102) * sizeofreal ! first element of u( 0 , 1:100)
+rdispls(2) = (101 + 1*102) * sizeofreal ! first element of u(101 , 1:100)
+rdispls(3) = ( 1 + 0*102) * sizeofreal ! first element of u( 1:100, 0 )
+rdispls(4) = ( 1 + 101*102) * sizeofreal ! first element of u( 1:100,101 )
+! the following communication has to be done in each call of exchange
CALL MPI_NEIGHBOR_ALLTOALLW (u, sndcounts, sdispls, sndtypes, &
- u, rcvcounts, rdispls, rcvtypes, comm_cart, ierr)
-
-! The following finalizing need to be done only once
-! after the last call of exchange.
-CALL MPI_TYPE_FREE (type_vec, ierr)
+ u, rcvcounts, rdispls, rcvtypes, &
+ comm_cart, ierr)
+! The following finalizing need to be done only once
+! after the last call of exchange.
+CALL MPI_TYPE_FREE (type_vec, ierr)
END
\end{Verbatim}
%............................................................................
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment