Create a gist now

Instantly share code, notes, and snippets.

Index: io-2.tex #273: #388-correction for #273
===================================================================
--- io-2.tex (Revision 1945)
+++ io-2.tex (Revision 1946)
@@ -1477,7 +1477,7 @@
\cdeclindex{MPI\_File}%
\cdeclindex{MPI\_Offset}%
\mpibind{MPI\_File\_iread\_at\_all(MPI\_File~fh, MPI\_Offset~offset, void~*buf, int~count, MPI\_Datatype~datatype, MPI\_Request~*request)}
-\mpifnewbind{MPI\_File\_iread\_at\_all(fh, offset, buf, count, datatype, request, ierror) BIND(C) \fargs TYPE(MPI\_File), INTENT(IN) :: fh \\ INTEGER(KIND=MPI\_OFFSET\_KIND), INTENT(IN) :: offset \\ TYPE(*), DIMENSION(..), ASYNCHRONOUS :: buf \\ INTEGER, INTENT(IN) :: count \\ TYPE(MPI\_Datatype), INTENT(IN) :: datatype \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_File\_iread\_at\_all(fh, offset, buf, count, datatype, request, ierror) \fargs TYPE(MPI\_File), INTENT(IN) :: fh \\ INTEGER(KIND=MPI\_OFFSET\_KIND), INTENT(IN) :: offset \\ TYPE(*), DIMENSION(..), ASYNCHRONOUS :: buf \\ INTEGER, INTENT(IN) :: count \\ TYPE(MPI\_Datatype), INTENT(IN) :: datatype \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_FILE\_IREAD\_AT\_ALL(FH, OFFSET, BUF, COUNT, DATATYPE, REQUEST, IERROR)\fargs <type> BUF(*) \\ INTEGER FH, COUNT, DATATYPE, REQUEST, IERROR \\ INTEGER(KIND=MPI\_OFFSET\_KIND) OFFSET}
\mpifunc{MPI\_FILE\_IREAD\_AT\_ALL} is a nonblocking version of
@@ -1519,7 +1519,7 @@
\cdeclindex{MPI\_File}%
\cdeclindex{MPI\_Offset}%
\mpibind{MPI\_File\_iwrite\_at\_all(MPI\_File~fh, MPI\_Offset~offset, const void~*buf, int~count, MPI\_Datatype~datatype, MPI\_Request~*request)}
-\mpifnewbind{MPI\_File\_iwrite\_at\_all(fh, offset, buf, count, datatype, request, ierror) BIND(C) \fargs TYPE(MPI\_File), INTENT(IN) :: fh \\ INTEGER(KIND=MPI\_OFFSET\_KIND), INTENT(IN) :: offset \\ TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: buf \\ INTEGER, INTENT(IN) :: count \\ TYPE(MPI\_Datatype), INTENT(IN) :: datatype \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_File\_iwrite\_at\_all(fh, offset, buf, count, datatype, request, ierror) \fargs TYPE(MPI\_File), INTENT(IN) :: fh \\ INTEGER(KIND=MPI\_OFFSET\_KIND), INTENT(IN) :: offset \\ TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: buf \\ INTEGER, INTENT(IN) :: count \\ TYPE(MPI\_Datatype), INTENT(IN) :: datatype \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_FILE\_IWRITE\_AT\_ALL(FH, OFFSET, BUF, COUNT, DATATYPE, REQUEST, IERROR)\fargs <type> BUF(*) \\ INTEGER FH, COUNT, DATATYPE, REQUEST, IERROR \\ INTEGER(KIND=MPI\_OFFSET\_KIND) OFFSET}
\mpifunc{MPI\_FILE\_IWRITE\_AT\_ALL} is a nonblocking version of
@@ -1749,7 +1749,7 @@
\cdeclindex{MPI\_Request}%
\cdeclindex{MPI\_File}%
\mpibind{MPI\_File\_iread\_all(MPI\_File~fh, void~*buf, int~count, MPI\_Datatype~datatype, MPI\_Request~*request)}
-\mpifnewbind{MPI\_File\_iread\_all(fh, buf, count, datatype, request, ierror) BIND(C) \fargs TYPE(MPI\_File), INTENT(IN) :: fh \\ TYPE(*), DIMENSION(..), ASYNCHRONOUS :: buf \\ INTEGER, INTENT(IN) :: count \\ TYPE(MPI\_Datatype), INTENT(IN) :: datatype \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_File\_iread\_all(fh, buf, count, datatype, request, ierror) \fargs TYPE(MPI\_File), INTENT(IN) :: fh \\ TYPE(*), DIMENSION(..), ASYNCHRONOUS :: buf \\ INTEGER, INTENT(IN) :: count \\ TYPE(MPI\_Datatype), INTENT(IN) :: datatype \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_FILE\_IREAD\_ALL(FH, BUF, COUNT, DATATYPE, REQUEST, IERROR) \fargs <type> BUF(*) \\ INTEGER FH, COUNT, DATATYPE, REQUEST, IERROR}
\mpifunc{MPI\_FILE\_IREAD\_ALL} is a nonblocking version
@@ -1783,7 +1783,7 @@
\cdeclindex{MPI\_Request}%
\cdeclindex{MPI\_File}%
\mpibind{MPI\_File\_iwrite\_all(MPI\_File~fh, const void~*buf, int~count, MPI\_Datatype~datatype, MPI\_Request~*request)}
-\mpifnewbind{MPI\_File\_iwrite\_all(fh, buf, count, datatype, request, ierror) BIND(C) \fargs TYPE(MPI\_File), INTENT(IN) :: fh \\ TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: buf \\ INTEGER, INTENT(IN) :: count \\ TYPE(MPI\_Datatype), INTENT(IN) :: datatype \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
+\mpifnewbind{MPI\_File\_iwrite\_all(fh, buf, count, datatype, request, ierror) \fargs TYPE(MPI\_File), INTENT(IN) :: fh \\ TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: buf \\ INTEGER, INTENT(IN) :: count \\ TYPE(MPI\_Datatype), INTENT(IN) :: datatype \\ TYPE(MPI\_Request), INTENT(OUT) :: request \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
\mpifbind{MPI\_FILE\_IWRITE\_ALL(FH, BUF, COUNT, DATATYPE, REQUEST, IERROR)\fargs <type> BUF(*) \\ INTEGER FH, COUNT, DATATYPE, REQUEST, IERROR}
\mpifunc{MPI\_FILE\_IWRITE\_ALL} is a nonblocking version
_________________________________________________________________________
Index: appLang-Const.tex #345
===================================================================
--- appLang-Const.tex (Revision 1866)
+++ appLang-Const.tex (Revision 1867)
@@ -1074,6 +1074,7 @@
\ftype{TYPE(MPI\_File)}\cdeclindex{MPI\_File} \\
\ftype{TYPE(MPI\_Group)}\cdeclindex{MPI\_Group} \\
\ftype{TYPE(MPI\_Info)}\cdeclindex{MPI\_Info} \\
+\ftype{TYPE(MPI\_Message)}\cdeclindex{MPI\_Message} \\
\ftype{TYPE(MPI\_Op)}\cdeclindex{MPI\_Op} \\
\ftype{TYPE(MPI\_Request)}\cdeclindex{MPI\_Request} \\
\ftype{TYPE(MPI\_Win)}\cdeclindex{MPI\_Win}
_________________________________________________________________________
Index: appLang-Const.tex #347 part 1
===================================================================
--- appLang-Const.tex (Revision 1766)
+++ appLang-Const.tex (Revision 1767)
@@ -1432,6 +1432,9 @@
The following info keys are reserved. They are strings. \\[3pt]
\infoskip{access\_style} \\
+\infoskip{accumulate\_ops}\\
+\infoskip{accumulate\_ordering}\\
+\infoskip{alloc\_shared\_noncontig}\\
\infoskip{appnum} \\
\infoskip{arch} \\
\infoskip{cb\_block\_size} \\
@@ -1452,6 +1455,7 @@
\infoskip{no\_locks} \\
\infoskip{num\_io\_nodes} \\
\infoskip{path} \\
+\infoskip{same\_size}\\
\infoskip{soft} \\
\infoskip{striping\_factor} \\
\infoskip{striping\_unit} \\
@@ -1463,13 +1467,15 @@
The following info values are reserved. They are strings. \\[3pt]
\infoskip{false} \\
\infoskip{random} \\
+\infoskip{rar}\\
+\infoskip{raw}\\
\infoskip{read\_mostly} \\
\infoskip{read\_once} \\
\infoskip{reverse\_sequential} \\
+\infoskip{same\_op}\\
\infoskip{sequential} \\
\infoskip{true} \\
+\infoskip{war}\\
+\infoskip{waw}\\
\infoskip{write\_mostly} \\
-\infoskip{write\_once} \\
-
-
-
+\infoskip{write\_once}
_________________________________________________________________________
Index: appLang-Const.tex #347 part 2
===================================================================
--- appLang-Const.tex (Revision 1934)
+++ appLang-Const.tex (Revision 1935)
@@ -1471,6 +1471,7 @@
\infoskip{read\_once} \\
\infoskip{reverse\_sequential} \\
\infoskip{same\_op}\\
+\infoskip{same\_op\_no\_op}\\
\infoskip{sequential} \\
\infoskip{true} \\
\infoskip{war}\\
_________________________________________________________________________
Index: appLang-Const.tex #354
===================================================================
--- appLang-Const.tex (Revision 1862)
+++ appLang-Const.tex (Revision 1866)
@@ -940,7 +940,6 @@
\textbf{Verbosity Levels in the \MPI/ tool information interface} \\
\hline
{\small C type: \ctype{const int} (or unnamed \ctype{enum})} \\
-{\small Fortran type: \ftype{INTEGER}} \\
\hline
\const{MPI\_T\_VERBOSITY\_USER\_BASIC} \\
\const{MPI\_T\_VERBOSITY\_USER\_DETAIL} \\
@@ -961,7 +960,6 @@
\textbf{ in the \MPI/ tool information interface} \\
\hline
{\small C type: \ctype{const int} (or unnamed \ctype{enum})} \\
-{\small Fortran type: \ftype{INTEGER}} \\
\hline
\const{MPI\_T\_BIND\_NO\_OBJECT}\\
\const{MPI\_T\_BIND\_MPI\_COMM}\\
@@ -984,7 +982,6 @@
\textbf{in the \MPI/ tool information interface} \\
\hline
{\small C type: \ctype{const int} (or unnamed \ctype{enum})} \\
-{\small Fortran type: \ftype{INTEGER}} \\
\hline
\const{MPI\_T\_SCOPE\_CONSTANT}\\
\const{MPI\_T\_SCOPE\_READONLY}\\
@@ -1015,7 +1012,6 @@
\textbf{\MPI/ tool information interface} \\
\hline
{\small C type: \ctype{const int} (or unnamed \ctype{enum})} \\
-{\small Fortran type: \ftype{INTEGER}} \\
\hline
\const{MPI\_T\_PVAR\_CLASS\_STATE} \\
\const{MPI\_T\_PVAR\_CLASS\_LEVEL} \\
_________________________________________________________________________
Index: appLang-Const.tex #369
===================================================================
--- appLang-Const.tex (Revision 1935)
+++ appLang-Const.tex (Revision 1936)
@@ -1453,6 +1453,7 @@
\infoskip{no\_locks} \\
\infoskip{num\_io\_nodes} \\
\infoskip{path} \\
+\infoskip{same\_disp\_unit}\\
\infoskip{same\_size}\\
\infoskip{soft} \\
\infoskip{striping\_factor} \\
_________________________________________________________________________
Index: appLang-Const.tex #377
===================================================================
--- appLang-Const.tex (Revision 1936)
+++ appLang-Const.tex (Revision 1937)
@@ -132,6 +132,7 @@
\const{MPI\_T\_ERR\_INVALID\_ITEM} \\
\const{MPI\_T\_ERR\_INVALID\_SESSION}\\
\const{MPI\_T\_ERR\_INVALID\_HANDLE} \\
+\const{MPI\_T\_ERR\_INVALID\_NAME} \\
\const{MPI\_T\_ERR\_OUT\_OF\_HANDLES}\\
\const{MPI\_T\_ERR\_OUT\_OF\_SESSIONS}\\
\const{MPI\_T\_ERR\_CVAR\_SET\_NOT\_NOW}\\
_________________________________________________________________________
Index: appLang-Const.tex #388
===================================================================
--- appLang-Const.tex (Revision 1834)
+++ appLang-Const.tex (Revision 1835)
@@ -1159,70 +1159,70 @@
The user-function argument to \ffunc{MPI\_Op\_create}\mpifuncindex{MPI\_OP\_CREATE} should be declared
according to:
-\mpifnewsubbind{MPI\_User\_function(invec, inoutvec, len, datatype) BIND(C) \fargs USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ TYPE(C\_PTR), VALUE :: invec, inoutvec \\ INTEGER :: len \\ TYPE(MPI\_Datatype) :: datatype}
+\mpifnewsubbind{MPI\_User\_function(invec, inoutvec, len, datatype) \fargs USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ TYPE(C\_PTR), VALUE :: invec, inoutvec \\ INTEGER :: len \\ TYPE(MPI\_Datatype) :: datatype}
%
The copy and delete function arguments to \ffunc{MPI\_Comm\_create\_keyval}\mpifuncindex{MPI\_COMM\_CREATE\_KEYVAL} should be
declared according to:
%
-\mpifnewsubbind{MPI\_Comm\_copy\_attr\_function(oldcomm, comm\_keyval, extra\_state, attribute\_val\_in, attribute\_val\_out, flag, ierror) BIND(C) \fargs TYPE(MPI\_Comm) :: oldcomm \\ INTEGER :: comm\_keyval, ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extra\_state, attribute\_val\_in, attribute\_val\_out \\ LOGICAL :: flag }
-\mpifnewsubbind{MPI\_Comm\_delete\_attr\_function(comm, comm\_keyval, attribute\_val, extra\_state, ierror) BIND(C) \fargs TYPE(MPI\_Comm) :: comm \\ INTEGER :: comm\_keyval, ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: attribute\_val, extra\_state }
+\mpifnewsubbind{MPI\_Comm\_copy\_attr\_function(oldcomm, comm\_keyval, extra\_state, attribute\_val\_in, attribute\_val\_out, flag, ierror) \fargs TYPE(MPI\_Comm) :: oldcomm \\ INTEGER :: comm\_keyval, ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extra\_state, attribute\_val\_in, attribute\_val\_out \\ LOGICAL :: flag }
+\mpifnewsubbind{MPI\_Comm\_delete\_attr\_function(comm, comm\_keyval, attribute\_val, extra\_state, ierror) \fargs TYPE(MPI\_Comm) :: comm \\ INTEGER :: comm\_keyval, ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: attribute\_val, extra\_state }
%
The copy and delete function arguments to \ffunc{MPI\_Win\_create\_keyval}\mpifuncindex{MPI\_WIN\_CREATE\_KEYVAL} should be
declared according to:
%
-\mpifnewsubbind{MPI\_Win\_copy\_attr\_function(oldwin, win\_keyval, extra\_state, attribute\_val\_in, attribute\_val\_out, flag, ierror) BIND(C) \fargs TYPE(MPI\_Win) :: oldwin \\ INTEGER :: win\_keyval, ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extra\_state, attribute\_val\_in, attribute\_val\_out \\ LOGICAL :: flag }
-\mpifnewsubbind{MPI\_Win\_delete\_attr\_function(win, win\_keyval, attribute\_val, extra\_state, ierror) BIND(C) \fargs TYPE(MPI\_Win) :: win \\ INTEGER :: win\_keyval, ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: attribute\_val, extra\_state }
+\mpifnewsubbind{MPI\_Win\_copy\_attr\_function(oldwin, win\_keyval, extra\_state, attribute\_val\_in, attribute\_val\_out, flag, ierror) \fargs TYPE(MPI\_Win) :: oldwin \\ INTEGER :: win\_keyval, ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extra\_state, attribute\_val\_in, attribute\_val\_out \\ LOGICAL :: flag }
+\mpifnewsubbind{MPI\_Win\_delete\_attr\_function(win, win\_keyval, attribute\_val, extra\_state, ierror) \fargs TYPE(MPI\_Win) :: win \\ INTEGER :: win\_keyval, ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: attribute\_val, extra\_state }
%
The copy and delete function arguments to \ffunc{MPI\_Type\_create\_keyval}\mpifuncindex{MPI\_TYPE\_CREATE\_KEYVAL} should be
declared according to:
%
-\mpifnewsubbind{MPI\_Type\_copy\_attr\_function(oldtype, type\_keyval, extra\_state, attribute\_val\_in, attribute\_val\_out, flag, ierror) BIND(C) \fargs TYPE(MPI\_Datatype) :: oldtype \\ INTEGER :: type\_keyval, ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extra\_state, attribute\_val\_in, attribute\_val\_out \\ LOGICAL :: flag }
-\mpifnewsubbind{MPI\_Type\_delete\_attr\_function(datatype, type\_keyval, attribute\_val, extra\_state, ierror) BIND(C) \fargs TYPE(MPI\_Datatype) :: datatype \\ INTEGER :: type\_keyval, ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: attribute\_val, extra\_state }
+\mpifnewsubbind{MPI\_Type\_copy\_attr\_function(oldtype, type\_keyval, extra\_state, attribute\_val\_in, attribute\_val\_out, flag, ierror) \fargs TYPE(MPI\_Datatype) :: oldtype \\ INTEGER :: type\_keyval, ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extra\_state, attribute\_val\_in, attribute\_val\_out \\ LOGICAL :: flag }
+\mpifnewsubbind{MPI\_Type\_delete\_attr\_function(datatype, type\_keyval, attribute\_val, extra\_state, ierror) \fargs TYPE(MPI\_Datatype) :: datatype \\ INTEGER :: type\_keyval, ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: attribute\_val, extra\_state }
%
The handler-function argument to \ffunc{MPI\_Comm\_create\_errhandler}\mpifuncindex{MPI\_COMM\_CREATE\_ERRHANDLER}
should be declared like this:
%
-\mpifnewsubbind{MPI\_Comm\_errhandler\_function(comm, error\_code) BIND(C) \fargs TYPE(MPI\_Comm) :: comm \\ INTEGER :: error\_code }
+\mpifnewsubbind{MPI\_Comm\_errhandler\_function(comm, error\_code) \fargs TYPE(MPI\_Comm) :: comm \\ INTEGER :: error\_code }
%
The handler-function argument to \ffunc{MPI\_Win\_create\_errhandler}\mpifuncindex{MPI\_WIN\_CREATE\_ERRHANDLER}
should be declared like this:
%
-\mpifnewsubbind{MPI\_Win\_errhandler\_function(win, error\_code) BIND(C) \fargs TYPE(MPI\_Win) :: win \\ INTEGER :: error\_code }
+\mpifnewsubbind{MPI\_Win\_errhandler\_function(win, error\_code) \fargs TYPE(MPI\_Win) :: win \\ INTEGER :: error\_code }
%
The handler-function argument to \ffunc{MPI\_File\_create\_errhandler}\mpifuncindex{MPI\_FILE\_CREATE\_ERRHANDLER}
should be declared like this:
%
-\mpifnewsubbind{MPI\_File\_errhandler\_function(file, error\_code) BIND(C) \fargs TYPE(MPI\_File) :: file \\ INTEGER :: error\_code }
+\mpifnewsubbind{MPI\_File\_errhandler\_function(file, error\_code) \fargs TYPE(MPI\_File) :: file \\ INTEGER :: error\_code }
%
The query, free, and cancel function arguments to \ffunc{MPI\_Grequest\_start}\mpifuncindex{MPI\_GREQUEST\_START}
should be declared according to:
%
-\mpifnewsubbind{MPI\_Grequest\_query\_function(extra\_state, status, ierror) BIND(C) \fargs TYPE(MPI\_Status) :: status \\ INTEGER :: ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extra\_state }
-\mpifnewsubbind{MPI\_Grequest\_free\_function(extra\_state, ierror) BIND(C) \fargs INTEGER :: ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extra\_state }
-\mpifnewsubbind{MPI\_Grequest\_cancel\_function(extra\_state, complete, ierror) BIND(C) \fargs INTEGER :: ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extra\_state \\ LOGICAL :: complete }
+\mpifnewsubbind{MPI\_Grequest\_query\_function(extra\_state, status, ierror) \fargs TYPE(MPI\_Status) :: status \\ INTEGER :: ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extra\_state }
+\mpifnewsubbind{MPI\_Grequest\_free\_function(extra\_state, ierror) \fargs INTEGER :: ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extra\_state }
+\mpifnewsubbind{MPI\_Grequest\_cancel\_function(extra\_state, complete, ierror) \fargs INTEGER :: ierror \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extra\_state \\ LOGICAL :: complete }
%
The extent and conversion function arguments to \ffunc{MPI\_Register\_datarep}\mpifuncindex{MPI\_REGISTER\_DATAREP}
should be declared according to:
%
-\mpifnewsubbind{MPI\_Datarep\_extent\_function(datatype, extent, extra\_state, ierror) BIND(C) \fargs TYPE(MPI\_Datatype) :: datatype \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extent, extra\_state \\ INTEGER :: ierror }
+\mpifnewsubbind{MPI\_Datarep\_extent\_function(datatype, extent, extra\_state, ierror) \fargs TYPE(MPI\_Datatype) :: datatype \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extent, extra\_state \\ INTEGER :: ierror }
-\mpifnewsubbind{MPI\_Datarep\_conversion\_function(userbuf, datatype, count, filebuf, position, extra\_state, ierror) BIND(C)\fargs USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ TYPE(C\_PTR), VALUE :: userbuf, filebuf \\ TYPE(MPI\_Datatype) :: datatype \\ INTEGER :: count, ierror \\ INTEGER(KIND=MPI\_OFFSET\_KIND) :: position \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extra\_state}
+\mpifnewsubbind{MPI\_Datarep\_conversion\_function(userbuf, datatype, count, filebuf, position, extra\_state, ierror)\fargs USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ TYPE(C\_PTR), VALUE :: userbuf, filebuf \\ TYPE(MPI\_Datatype) :: datatype \\ INTEGER :: count, ierror \\ INTEGER(KIND=MPI\_OFFSET\_KIND) :: position \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extra\_state}
\subsubsection{Fortran Bindings with mpif.h or the mpi Module}
_________________________________________________________________________
Index: io-2.tex #389 --> Annex A.2.11 / A.3.11 / A.4.11
===================================================================
--- io-2.tex (Revision 1944)
+++ io-2.tex (Revision 1945)
@@ -3046,6 +3046,18 @@
\mpifunc{read\_conversion\_fn}, respectively, but will perform
the requested data access using the native data representation.
+% The following declarations are needed for generating the
+% list of functions in the annex.
+% They are not used for printing here.
+% Therefore, they are surrounded by a deleting macro.
+\OnlyForAutomaticAnnexGeneration{% deleting the content where the macro is used; but preserving it for the Annex
+% C binding for MPI_CONVERSION_FN_NULL
+\mpibind{MPI\_CONVERSION\_FN\_NULL(void~*userbuf, MPI\_Datatype~datatype, int~count, void~*filebuf, MPI\_Offset~position, void~*extra\_state)}
+% Fortran binding for MPI_CONVERSION_FN_NULL
+\mpifnewbind{MPI\_CONVERSION\_FN\_NULL(userbuf, datatype, count, filebuf, position, extra\_state, ierror) \fargs USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ TYPE(C\_PTR), VALUE :: userbuf, filebuf \\ TYPE(MPI\_Datatype) :: datatype \\ INTEGER :: count, ierror \\ INTEGER(KIND=MPI\_OFFSET\_KIND) :: position \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) :: extra\_state}
+\mpifbind{MPI\_CONVERSION\_FN\_NULL(USERBUF, DATATYPE, COUNT, FILEBUF, POSITION, EXTRA\_STATE, IERROR) \fargs <TYPE> USERBUF(*), FILEBUF(*) \\ INTEGER COUNT, DATATYPE, IERROR \\ INTEGER(KIND=MPI\_OFFSET\_KIND) POSITION \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) EXTRA\_STATE}
+}
+
An \MPI/ implementation must ensure that all data accessed is converted,
either by using a filebuf large enough to hold all the requested
data items
_________________________________________________________________________
Index: chap-inquiry/inquiry.tex #390
===================================================================
--- chap-inquiry/inquiry.tex (Revision 2008)
+++ chap-inquiry/inquiry.tex (Revision 2009)
@@ -278,7 +278,7 @@
\mpibind{MPI\_Alloc\_mem(MPI\_Aint~size, MPI\_Info~info, void~*baseptr)}
\mpifnewbind{MPI\_Alloc\_mem(size, info, baseptr, ierror) \fargs USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ INTEGER(KIND=MPI\_ADDRESS\_KIND), INTENT(IN) :: size \\ TYPE(MPI\_Info), INTENT(IN) :: info \\ TYPE(C\_PTR), INTENT(OUT) :: baseptr \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
-\mpifbind{MPI\_ALLOC\_MEM(SIZE, INFO, BASEPTR, IERROR) \fargs INTEGER INFO, IERROR \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) SIZE, BASEPTR \mpifoverloadOnlyInAnnex{\>INTERFACE MPI\_ALLOC\_MEM \\ \>\>SUBROUTINE MPI\_ALLOC\_MEM\_CPTR(SIZE, INFO, BASEPTR, IERROR) \\ \>\>\>USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ \>\>\>INTEGER :: INFO, IERROR \\ \>\>\>INTEGER(KIND=MPI\_ADDRESS\_KIND) :: SIZE \\ \>\>\>TYPE(C\_PTR) :: BASEPTR \\ \>\>END SUBROUTINE \\ \>END INTERFACE}}
+\mpifbind{MPI\_ALLOC\_MEM(SIZE, INFO, BASEPTR, IERROR) \fargs INTEGER INFO, IERROR \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) SIZE, BASEPTR \mpifoverloadOnlyInAnnex{\>INTERFACE MPI\_ALLOC\_MEM \\ \>\>SUBROUTINE MPI\_ALLOC\_MEM(SIZE, INFO, BASEPTR, IERROR) \\ \>\>\>IMPORT :: MPI\_ADDRESS\_KIND \\ \>\>\>INTEGER :: INFO, IERROR \\ \>\>\>INTEGER(KIND=MPI\_ADDRESS\_KIND) :: SIZE, BASEPTR \\ \>\>END SUBROUTINE \\ \>\>SUBROUTINE MPI\_ALLOC\_MEM\_CPTR(SIZE, INFO, BASEPTR, IERROR) \\ \>\>\>USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ \>\>\>IMPORT :: MPI\_ADDRESS\_KIND \\ \>\>\>INTEGER :: INFO, IERROR \\ \>\>\>INTEGER(KIND=MPI\_ADDRESS\_KIND) :: SIZE \\ \>\>\>TYPE(C\_PTR) :: BASEPTR \\ \>\>END SUBROUTINE \\ \>END INTERFACE}}
\mpicppemptybind{MPI::Alloc\_mem(MPI::Aint size, const MPI::Info\& info)}{void*}
Index: chap-one-side/one-side-2.tex
===================================================================
--- chap-one-side/one-side-2.tex (Revision 2008)
+++ chap-one-side/one-side-2.tex (Revision 2009)
@@ -307,7 +307,7 @@
%% Fortran. If there is a change in Alloc_mem to use new Fortran
%% interfaces, this binding should follow the same approach
\mpifnewbind{MPI\_Win\_allocate(size, disp\_unit, info, comm, baseptr, win, ierror) \fargs USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ INTEGER(KIND=MPI\_ADDRESS\_KIND), INTENT(IN) :: size \\ INTEGER, INTENT(IN) :: disp\_unit \\ TYPE(MPI\_Info), INTENT(IN) :: info \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ TYPE(C\_PTR), INTENT(OUT) :: baseptr \\ TYPE(MPI\_Win), INTENT(OUT) :: win \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
-\mpifbind{MPI\_WIN\_ALLOCATE(SIZE, DISP\_UNIT, INFO, COMM, BASEPTR, WIN, IERROR)\fargs INTEGER DISP\_UNIT, INFO, COMM, WIN, IERROR \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) SIZE, BASEPTR \mpifoverloadOnlyInAnnex{\>INTERFACE MPI\_WIN\_ALLOCATE \\ \>\>SUBROUTINE MPI\_WIN\_ALLOCATE\_CPTR(SIZE, DISP\_UNIT, INFO, COMM, BASEPTR, \& \\ \>\>\>\>WIN, IERROR) \\ \>\>\>USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ \>\>\>INTEGER :: DISP\_UNIT, INFO, COMM, WIN, IERROR \\ \>\>\>INTEGER(KIND=MPI\_ADDRESS\_KIND) :: SIZE \\ \>\>\>TYPE(C\_PTR) :: BASEPTR \\ \>\>END SUBROUTINE \\ \>END INTERFACE}}
+\mpifbind{MPI\_WIN\_ALLOCATE(SIZE, DISP\_UNIT, INFO, COMM, BASEPTR, WIN, IERROR)\fargs INTEGER DISP\_UNIT, INFO, COMM, WIN, IERROR \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) SIZE, BASEPTR \mpifoverloadOnlyInAnnex{\>INTERFACE MPI\_WIN\_ALLOCATE \\ \>\>SUBROUTINE MPI\_WIN\_ALLOCATE(SIZE, DISP\_UNIT, INFO, COMM, BASEPTR, \& \\ \>\>\>\>WIN, IERROR) \\ \>\>\>IMPORT :: MPI\_ADDRESS\_KIND \\ \>\>\>INTEGER :: DISP\_UNIT, INFO, COMM, WIN, IERROR \\ \>\>\>INTEGER(KIND=MPI\_ADDRESS\_KIND) :: SIZE, BASEPTR \\ \>\>END SUBROUTINE \\ \>\>SUBROUTINE MPI\_WIN\_ALLOCATE\_CPTR(SIZE, DISP\_UNIT, INFO, COMM, BASEPTR, \& \\ \>\>\>\>WIN, IERROR) \\ \>\>\>USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ \>\>\>IMPORT :: MPI\_ADDRESS\_KIND \\ \>\>\>INTEGER :: DISP\_UNIT, INFO, COMM, WIN, IERROR \\ \>\>\>INTEGER(KIND=MPI\_ADDRESS\_KIND) :: SIZE \\ \>\>\>TYPE(C\_PTR) :: BASEPTR \\ \>\>END SUBROUTINE \\ \>END INTERFACE}}
%\mpicppemptybind{MPI::Win::Allocate(MPI::Aint size, int disp\_unit, %const MPI::Info\& info, const MPI::Intracomm\& comm, void** baseptr)}{static MPI::Win}
@@ -401,7 +401,7 @@
%% Fortran. If there is a change in Alloc_mem to use new Fortran
%% interfaces, this binding should follow the same approach
\mpifnewbind{MPI\_Win\_allocate\_shared(size, disp\_unit, info, comm, baseptr, win, ierror) \fargs USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ INTEGER(KIND=MPI\_ADDRESS\_KIND), INTENT(IN) :: size \\ INTEGER, INTENT(IN) :: disp\_unit \\ TYPE(MPI\_Info), INTENT(IN) :: info \\ TYPE(MPI\_Comm), INTENT(IN) :: comm \\ TYPE(C\_PTR), INTENT(OUT) :: baseptr \\ TYPE(MPI\_Win), INTENT(OUT) :: win \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
-\mpifbind{MPI\_WIN\_ALLOCATE\_SHARED(SIZE, DISP\_UNIT, INFO, COMM, BASEPTR, WIN, IERROR)\fargs INTEGER DISP\_UNIT, INFO, COMM, WIN, IERROR \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) SIZE, BASEPTR \mpifoverloadOnlyInAnnex{\>INTERFACE MPI\_WIN\_ALLOCATE\_SHARED \\ \>\>SUBROUTINE MPI\_WIN\_ALLOCATE\_SHARED\_CPTR(SIZE, DISP\_UNIT, INFO, COMM, \& \\ \>\>\>\>BASEPTR, WIN, IERROR) \\ \>\>\>USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ \>\>\>INTEGER :: DISP\_UNIT, INFO, COMM, WIN, IERROR \\ \>\>\>INTEGER(KIND=MPI\_ADDRESS\_KIND) :: SIZE \\ \>\>\>TYPE(C\_PTR) :: BASEPTR \\ \>\>END SUBROUTINE \\ \>END INTERFACE}}
+\mpifbind{MPI\_WIN\_ALLOCATE\_SHARED(SIZE, DISP\_UNIT, INFO, COMM, BASEPTR, WIN, IERROR)\fargs INTEGER DISP\_UNIT, INFO, COMM, WIN, IERROR \\ INTEGER(KIND=MPI\_ADDRESS\_KIND) SIZE, BASEPTR \mpifoverloadOnlyInAnnex{\>INTERFACE MPI\_WIN\_ALLOCATE\_SHARED \\ \>\>SUBROUTINE MPI\_WIN\_ALLOCATE\_SHARED(SIZE, DISP\_UNIT, INFO, COMM, \& \\ \>\>\>\>BASEPTR, WIN, IERROR) \\ \>\>\>IMPORT :: MPI\_ADDRESS\_KIND \\ \>\>\>INTEGER :: DISP\_UNIT, INFO, COMM, WIN, IERROR \\ \>\>\>INTEGER(KIND=MPI\_ADDRESS\_KIND) :: SIZE, BASEPTR \\ \>\>END SUBROUTINE \\ \>\>SUBROUTINE MPI\_WIN\_ALLOCATE\_SHARED\_CPTR(SIZE, DISP\_UNIT, INFO, COMM, \& \\ \>\>\>\>BASEPTR, WIN, IERROR) \\ \>\>\>USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ \>\>\>IMPORT :: MPI\_ADDRESS\_KIND \\ \>\>\>INTEGER :: DISP\_UNIT, INFO, COMM, WIN, IERROR \\ \>\>\>INTEGER(KIND=MPI\_ADDRESS\_KIND) :: SIZE \\ \>\>\>TYPE(C\_PTR) :: BASEPTR \\ \>\>END SUBROUTINE \\ \>END INTERFACE}}
%\mpicppemptybind{MPI::Win::Allocate(MPI::Aint size, int disp\_unit, %const MPI::Info\& info, const MPI::Intracomm\& comm, void* baseptr)}{static MPI::Win}
@@ -512,7 +512,7 @@
\mpibind{MPI\_Win\_shared\_query(MPI\_Win win, int rank, MPI\_Aint *size, int~*disp\_unit, void~*baseptr)}
\mpifnewbind{MPI\_Win\_shared\_query(win, rank, size, disp\_unit, baseptr, ierror) \fargs USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ TYPE(MPI\_Win), INTENT(IN) :: win \\ INTEGER, INTENT(IN) :: rank \\ INTEGER(KIND=MPI\_ADDRESS\_KIND), INTENT(OUT) :: size \\ INTEGER, INTENT(OUT) :: disp\_unit \\ TYPE(C\_PTR), INTENT(OUT) :: baseptr \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}
-\mpifbind{MPI\_WIN\_SHARED\_QUERY(WIN, RANK, SIZE, DISP\_UNIT, BASEPTR, IERROR)\fargs INTEGER WIN, RANK, DISP\_UNIT, IERROR\\INTEGER (KIND=MPI\_ADDRESS\_KIND) SIZE, BASEPTR \mpifoverloadOnlyInAnnex{ INTERFACE MPI\_WIN\_SHARED\_QUERY \\ \>\>SUBROUTINE MPI\_WIN\_SHARED\_QUERY\_CPTR(WIN, RANK, SIZE, DISP\_UNIT, \&\\ \>\>\>\>BASEPTR, IERROR) \\ \>\>\>USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ \>\>\>INTEGER :: WIN, RANK, DISP\_UNIT, IERROR \\ \>\>\>INTEGER(KIND=MPI\_ADDRESS\_KIND) :: SIZE \\ \>\>\>TYPE(C\_PTR) :: BASEPTR \\ \>\>END SUBROUTINE \\ \>END INTERFACE}}
+\mpifbind{MPI\_WIN\_SHARED\_QUERY(WIN, RANK, SIZE, DISP\_UNIT, BASEPTR, IERROR)\fargs INTEGER WIN, RANK, DISP\_UNIT, IERROR\\INTEGER (KIND=MPI\_ADDRESS\_KIND) SIZE, BASEPTR \mpifoverloadOnlyInAnnex{\>INTERFACE MPI\_WIN\_SHARED\_QUERY \\ \>\>SUBROUTINE MPI\_WIN\_SHARED\_QUERY(WIN, RANK, SIZE, DISP\_UNIT, \&\\ \>\>\>\>BASEPTR, IERROR) \\ \>\>\>IMPORT :: MPI\_ADDRESS\_KIND \\ \>\>\>INTEGER :: WIN, RANK, DISP\_UNIT, IERROR \\ \>\>\>INTEGER(KIND=MPI\_ADDRESS\_KIND) :: SIZE, BASEPTR \\ \>\>END SUBROUTINE \\ \>\>SUBROUTINE MPI\_WIN\_SHARED\_QUERY\_CPTR(WIN, RANK, SIZE, DISP\_UNIT, \&\\ \>\>\>\>BASEPTR, IERROR) \\ \>\>\>USE, INTRINSIC :: ISO\_C\_BINDING, ONLY : C\_PTR \\ \>\>\>IMPORT :: MPI\_ADDRESS\_KIND \\ \>\>\>INTEGER :: WIN, RANK, DISP\_UNIT, IERROR \\ \>\>\>INTEGER(KIND=MPI\_ADDRESS\_KIND) :: SIZE \\ \>\>\>TYPE(C\_PTR) :: BASEPTR \\ \>\>END SUBROUTINE \\ \>END INTERFACE}}
This function queries the process-local address for remote memory segments
created with \mpifunc{MPI\_WIN\_ALLOCATE\_SHARED}. This function can return
_________________________________________________________________________
Index: appLang-Const.tex #400
===================================================================
--- appLang-Const.tex (Revision 1901)
+++ appLang-Const.tex (Revision 1902)
@@ -127,6 +127,7 @@
\const{MPI\_T\_ERR\_CANNOT\_INIT}\\
\const{MPI\_T\_ERR\_NOT\_INITIALIZED}\\
\const{MPI\_T\_ERR\_MEMORY}\\
+\const{MPI\_T\_ERR\_INVALID}\\
\const{MPI\_T\_ERR\_INVALID\_INDEX}\\
\const{MPI\_T\_ERR\_INVALID\_ITEM} \\
\const{MPI\_T\_ERR\_INVALID\_SESSION}\\
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment