The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа
next up previous contents
Next: Приложение B. Языковые привязки Up: Библиография Previous: Дополнительные источники   Contents

Приложение А. Языковые привязки для языков Си и ФОРТРАН

А1 Введение

В этом разделе представлены все привязки для языков ФОРТРАН и Си. Для каждого языка привязки разделяются на части, внутри которых они упорядочены по алфавиту.

А2 Константы для языков Си и ФОРТРАН

Здесь приведены константы, определенные в файлах mpi.h (для языка Си) и mpif.h (для языка ФОРТРАН).

/* возвращаемые коды (как для Си, так и для языка Фортран) */
MPI_SUCCESS
MPI_ERR_BUFFER
MPI_ERR_COUNT
MPI_ERR_TYPE
MPI_ERR_TAG
MPI_ERR_COMM
MPI_ERR_RANK
MPI_ERR_REQUEST
MPI_ERR_ROOT
MPI_ERR_GROUP
MPI_ERR_OP
MPI_ERR_TOPOLOGY
MPI_ERR_DIMS
MPI_ERR_ARG
MPI_ERR_UNKNOWN
MPI_ERR_TRUNCATE
MPI_ERR_OTHER
MPI_ERR_INTERN
MPI_ERR_PENDING
MPI_ERR_IN_STATUS
MPI_ERR_LASTCODE

/* разные константы (как для языка Си, так и для языка Фортран) */
MPI_BOTTOM
MPI_PROC_NULL
MPI_ANY_SOURCE
MPI_ANY_TAG
MPI_UNDEFINED
MPI_BSEND_OVERHEAD
MPI_KEYVAL_INVALID

/* размер статуса и резервируемые индексные значения (Фортран) */
MPI_STATUS_SIZE
MPI_SOURCE
MPI_TAG
MPI_ERROR

/* описатели обработчика ошибок (Си и Фортран) */
MPI_ERRORS_ARE_FATAL
MPI_ERRORS_RETURN

/* максимальные размеры строк */
MPI_MAX_PROCESSOR_NAME
MPI_MAX_ERROR_STRING

/* элементарные типы данных (Си) */
MPI_CHAR
MPI_SHORT
MPI_INT
MPI_LONG
MPI_UNSIGNED_CHAR
MPI_UNSIGNED_SHORT
MPI_UNSIGNED
MPI_UNSIGNED_LONG
MPI_FLOAT
MPI_DOUBLE
MPI_LONG_DOUBLE
MPI_BYTE
MPI_PACKED

/* элементарные типы данных(Фортран) */
MPI_INTEGER
MPI_REAL
MPI_DOUBLE_PRECISION
MPI_COMPLEX
MPI_LOGICAL
MPI_CHARACTER
MPI_BYTE
MPI_PACKED

/* типы данных для функций редукции (Си) */
MPI_FLOAT_INT
MPI_DOUBLE_INT
MPI_LONG_INT
MPI_2INT
MPI_SHORT_INT
MPI_LONG_DOUBLE_INT

/* типы данных для функций редукции (Фортран) */
MPI_2REAL
MPI_2DOUBLE_PRECISION
MPI_2INTEGER

/* дополнительные типы данных (Фортран) */
MPI_INTEGER1
MPI_INTEGER2
MPI_INTEGER4
MPI_REAL2
MPI_REAL4
MPI_REAL8
etc.

/* дополнительные типы данных (Си) */
MPI_LONG_LONG_INT
etc.

/* специальные типы данных для создания производных типов данных */
MPI_UB
MPI_LB

/* зарезервированные коммуникаторы (Си и Фортран) */
MPI_COMM_WORLD
MPI_COMM_SELF

/* результаты сравнения коммуникаторов и групп */

MPI_IDENT
MPI_CONGRUENT
MPI_SIMILAR
MPI_UNEQUAL

/* ключи запроса среды (Си и Фортран) */
MPI_TAG_UB
MPI_IO
MPI_HOST
MPI_WTIME_IS_GLOBAL

/* коллективные операции (Си и Фортран) */
MPI_MAX
MPI_MIN
MPI_SUM
MPI_PROD
MPI_MAXLOC
MPI_MINLOC
MPI_BAND
MPI_BOR
MPI_BXOR
MPI_LAND
MPI_LOR
MPI_LXOR

/* нулевые дескрипторы */
MPI_GROUP_NULL
MPI_COMM_NULL
MPI_DATATYPE_NULL
MPI_REQUEST_NULL
MPI_OP_NULL
MPI_ERRHANDLER_NULL

/* пустая группа */
MPI_GROUP_EMPTY

/* топологии (Си и Фортран) */
MPI_GRAPH
MPI_CART

/* предопределенные функции в Си и Фортран*/
MPI_NULL_COPY_FN
MPI_NULL_DELETE_FN
MPI_DUP_FN

Следующее есть типы Си, также включенные в файл  mpi.h.

/* скрытые типы (Си) */
MPI_Aint
MPI_Status

/* дескрипторы различных структур (Си) */
MPI_Group
MPI_Comm
MPI_Datatype
MPI_Request
MPI_Op
MPI_Errhandler

/* прототипы для определенных пользователем функций (Си) */
typedef int  MPI_Copy_function(MPI_Comm oldcomm, int keyval,
                    void *extra_state, void *attribute_val_in,
                    void *attribute_val_out, int *flag);
typedef int  MPI_Delete_function(MPI_Comm comm, int keyval,
                          void *attribute_val, void *extra_state)
typedef void MPI_Handler_function(MPI_Comm *, int *, ...);
typedef void MPI_User_function( void *invec, void *inoutvec, int *len,
                      MPI_Datatype *datatype);

Далее даны примеры декларирования каждой из определенных пользователем функций для языка ФОРТРАН.

Аргумент пользовательской функции MPI_OP_CREATE декларируется следующим образом:

SUBROUTINE USER_FUNCTION( INVEC, INOUTVEC, LEN, TYPE)
<type> INVEC(LEN), INOUTVEC(LEN)
 INTEGER LEN, TYPE

Аргумент функции копирования MPI_KEYVAL_CREATE декларируется следующим образом:

 SUBROUTINE COPY_FUNCTION(OLDCOMM, KEYVAL, EXTRA_STATE,
             ATTRIBUTE_VAL_IN, ATTRIBUTE_VAL_OUT, FLAG, IERR)
 INTEGER OLDCOMM, KEYVAL, EXTRA_STATE, ATTRIBUTE_VAL_IN,
         ATTRIBUTE_VAL_OUT, IERR
 LOGICAL FLAG

Аргумент функции удаления MPI_KEYVAL_CREATE декларируется следующим образом:

SUBROUTINE DELETE_FUNCTION(COMM, KEYVAL, ATTRIBUTE_VAL, EXTRA_STATE, IERR) 
 INTEGER COMM, KEYVAL, ATTRIBUTE_VAL, EXTRA_STATE, IERR

Функция обработки для обработчиков ошибок декларируется следующим образом:

SUBROUTINE HANDLER_FUNCTION (COMM, ERROR_CODE, ...)
INTEGER COMM, ERROR_CODE

А3 Привязки для парных обменов в языке Си

Функции представлены в порядке их появления в тексте стандарта

int MPI_Send(void* buf, int count, MPI_Datatype datatype, int dest, 
int tag, MPI_Comm comm) 

int MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, 
int tag, MPI_Comm comm, MPI_Status *status) 

int MPI_Get_count(MPI_Status *status, MPI_Datatype datatype, int 
*count)

int MPI_Bsend(void* buf, int count, MPI_Datatype datatype, int dest, 
int tag, MPI_Comm comm) 

int MPI_Ssend(void* buf, int count, MPI_Datatype datatype, int dest, 
int tag, MPI_Comm comm) 

int MPI_Rsend(void* buf, int count, MPI_Datatype datatype, int dest, 
int tag, MPI_Comm comm) 

int MPI_Buffer_attach( void* buffer, int size) 

int MPI_Buffer_detach( void* buffer, int* size) 

int MPI_Isend(void* buf, int count, MPI_Datatype datatype, int dest, 
int tag, MPI_Comm comm, MPI_Request *request) 

int MPI_Ibsend(void* buf, int count, MPI_Datatype datatype, int dest, 
int tag, MPI_Comm comm, MPI_Request *request) 

int MPI_Issend(void* buf, int count, MPI_Datatype datatype, int dest, 
int tag, MPI_Comm comm, MPI_Request *request) 

int MPI_Irsend(void* buf, int count, MPI_Datatype datatype, int dest, 
int tag, MPI_Comm comm, MPI_Request *request) 

int MPI_Irecv(void* buf, int count, MPI_Datatype datatype, int source, 
int tag, MPI_Comm comm, MPI_Request *request) 

int MPI_Wait(MPI_Request *request, MPI_Status *status) 

int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status) 

int MPI_Request_free(MPI_Request *request) 

int MPI_Waitany(int count, MPI_Request *array_of_requests, int *index, 
MPI_Status *status) 

int MPI_Testany(int count, MPI_Request *array_of_requests, int *index, 
int *flag, MPI_Status *status) 

int MPI_Waitall(int count, MPI_Request *array_of_requests, MPI_Status 
*array_of_statuses)

int MPI_Testall(int count, MPI_Request *array_of_requests, int *flag, 
MPI_Status *array_of_statuses) 

int MPI_Waitsome(int incount, MPI_Request *array_of_requests, int 
*outcount,int *array_of_indices, MPI_Status *array_of_statuses) 

int MPI_Testsome(int incount, MPI_Request *array_of_requests, int 
*outcount,int *array_of_indices, MPI_Status *array_of_statuses) 

int MPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, 
MPI_Status *status) 

int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status) 

int MPI_Cancel(MPI_Request *request) 

int MPI_Test_cancelled(MPI_Status *status, int *flag) 

int MPI_Send_init(void* buf, int count, MPI_Datatype datatype, int 
dest, int tag, MPI_Comm comm, MPI_Request *request) 

int MPI_Bsend_init(void* buf, int count, MPI_Datatype datatype, int 
dest, int tag, MPI_Comm comm, MPI_Request *request) 

int MPI_Ssend_init(void* buf, int count, MPI_Datatype datatype, int 
dest, int tag, MPI_Comm comm, MPI_Request *request) 

int MPI_Rsend_init(void* buf, int count, MPI_Datatype datatype, int 
dest, int tag, MPI_Comm comm, MPI_Request *request) 

int MPI_Recv_init(void* buf, int count, MPI_Datatype datatype, int 
source,int tag, MPI_Comm comm, MPI_Request *request) 

int MPI_Start(MPI_Request *request) 

int MPI_Startall(int count, MPI_Request *array_of_requests) 

int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype, 
    int dest, int sendtag, void *recvbuf, int recvcount, int recvtype,
    int source, MPI_Datatype recvtag, MPI_Comm comm, MPI_Status *status) 

int MPI_Sendrecv_replace(void* buf, int count, MPI_Datatype datatype, 
    int dest, int sendtag, int source, int recvtag, MPI_Comm comm, 
    MPI_Status *status) 

int MPI_Type_contiguous(int count, MPI_Datatype oldtype,
    MPI_Datatype *newtype) 

int MPI_Type_vector(int count, int blocklength, int stride, 
    MPI_Datatype oldtype, MPI_Datatype *newtype) 

int MPI_Type_hvector(int count, int blocklength, MPI_Aint stride, 
    MPI_Datatype oldtype, MPI_Datatype *newtype) 

int MPI_Type_indexed(int count, int *array_of_blocklengths,
    int *array_of_displacements, MPI_Datatype oldtype,
    MPI_Datatype *newtype) 

int MPI_Type_hindexed(int count, int *array_of_blocklengths,
    MPI_Aint *array_of_displacements, MPI_Datatype oldtype,
    MPI_Datatype *newtype) 

int MPI_Type_struct(int count, int *array_of_blocklengths,
    MPI_Aint *array_of_displacements, MPI_Datatype *array_of_types,
    MPI_Datatype *newtype) 

int MPI_Address(void* location, MPI_Aint *address) 

int MPI_Type_extent(MPI_Datatype datatype, MPI_Aint *extent) 

int MPI_Type_size(MPI_Datatype datatype, int *size) 

int MPI_Type_lb(MPI_Datatype datatype, MPI_Aint* displacement)

int MPI_Type_ub(MPI_Datatype datatype, MPI_Aint* displacement) 

int MPI_Type_commit(MPI_Datatype *datatype) 

int MPI_Type_free(MPI_Datatype *datatype) 

int MPI_Get_elements(MPI_Status *status, MPI_Datatype datatype,
    int *count) 

int MPI_Pack(void* inbuf, int incount, MPI_Datatype datatype,
     void *outbuf,int outsize, int *position, MPI_Comm comm) 

int MPI_Unpack(void* inbuf, int insize, int *position, void *outbuf, 
    int outcount, MPI_Datatype datatype, MPI_Comm comm) 

int MPI_Pack_size(int incount, MPI_Datatype datatype, MPI_Comm comm, 
    int *size)

А4 Привязки для коллективных обменов в языке Си

int MPI_Barrier(MPI_Comm comm)

int MPI_Bcast(void* buffer, int count, MPI_Datatype datatype,
    int root, MPI_Comm comm) 

int MPI_Gather(void* sendbuf, int sendcount, MPI_Datatype sendtype, 
    void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, 
    MPI_Comm comm) 

int MPI_Gatherv(void* sendbuf, int sendcount, MPI_Datatype sendtype, 
    void* recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, 
    int root, MPI_Comm comm) 

int MPI_Scatter(void* sendbuf, int sendcount, MPI_Datatype sendtype, 
    void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, 
    MPI_Comm comm) 


int MPI_Scatterv(void* sendbuf, int *sendcounts, int *displs, 
    MPI_Datatype sendtype, void* recvbuf, int recvcount,
    MPI_Datatype recvtype, int root, MPI_Comm comm) 

int MPI_Allgather(void* sendbuf, int sendcount, MPI_Datatype sendtype, 
    void* recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm) 

int MPI_Allgatherv(void* sendbuf, int sendcount,
    MPI_Datatype sendtype, void* recvbuf, int *recvcounts,
    int *displs, MPI_Datatype recvtype, MPI_Comm comm) 

int MPI_Alltoall(void* sendbuf, int sendcount, MPI_Datatype sendtype, 
    void* recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm) 

int MPI_Alltoallv(void* sendbuf, int *sendcounts, int *sdispls, 
    MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *rdispls, 
    MPI_Datatype recvtype, MPI_Comm comm) 

int MPI_Reduce(void* sendbuf, void* recvbuf, int count,
    MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm) 

int MPI_Op_create(MPI_User_function *function, int commute, MPI_Op *op) 

int MPI_Op_free( MPI_Op *op) 

int MPI_Allreduce(void* sendbuf, void* recvbuf, int count, 
    MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) 

int MPI_Reduce_scatter(void* sendbuf, void* recvbuf, int *recvcounts, 
    MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) 

int MPI_Scan(void* sendbuf, void* recvbuf, int count,
    MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)

А5 Привязки для групп, контекстов и коммуникаторов в языке Си

int MPI_Group_size(MPI_Group group, int *size) 

int MPI_Group_rank(MPI_Group group, int *rank) 

int MPI_Group_translate_ranks (MPI_Group group1, int n, int *ranks1,
    MPI_Group group2, int *ranks2)

int MPI_Group_compare(MPI_Group group1,MPI_Group group2, int *result)

int MPI_Comm_group(MPI_Comm comm, MPI_Group *group)

int MPI_Group_union(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)

int MPI_Group_intersection(MPI_Group group1, MPI_Group group2,
    MPI_Group *newgroup)

int MPI_Group_difference(MPI_Group group1, MPI_Group group2,
    MPI_Group *newgroup)

int MPI_Group_incl(MPI_Group group, int n, int *ranks, MPI_Group *newgroup)

int MPI_Group_excl(MPI_Group group, int n, int *ranks, MPI_Group *newgroup)

int MPI_Group_range_incl(MPI_Group group, int n, int ranges[][3],
    MPI_Group *newgroup)

int MPI_Group_range_excl(MPI_Group group, int n, int ranges[][3],
    MPI_Group *newgroup)

int MPI_Group_free(MPI_Group *group)

int MPI_Comm_size(MPI_Comm comm, int *size)

int MPI_Comm_rank(MPI_Comm comm, int *rank)

int MPI_Comm_compare(MPI_Comm comm1,MPI_Comm comm2, int *result)

int MPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm)

int MPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm)

int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm)

int MPI_Comm_free(MPI_Comm *comm)

int MPI_Comm_test_inter(MPI_Comm comm, int *flag)

int MPI_Comm_remote_size(MPI_Comm comm, int *size)

int MPI_Comm_remote_group(MPI_Comm comm, MPI_Group *group)

int MPI_Intercomm_create(MPI_Comm local_comm, int local_leader,
    MPI_Comm peer_comm, int remote_leader, int tag,
    MPI_Comm *newintercomm)

int MPI_Intercomm_merge(MPI_Comm intercomm, int high,
    MPI_Comm *newintracomm)

int MPI_Keyval_create(MPI_Copy_function *copy_fn,
    MPI_Delete_function *delete_fn, int *keyval, void* extra_state)

int MPI_Keyval_free(int *keyval)

int MPI_Attr_put(MPI_Comm comm, int keyval, void* attribute_val)

int MPI_Attr_get(MPI_Comm comm, int keyval, void* attribute_val,
    int *flag)

int MPI_Attr_delete(MPI_Comm comm, int keyval)

А6 Привязки для топологий процессов в языке Си

int MPI_Cart_create(MPI_Comm comm_old, int ndims, int *dims,
    int *periods,int reorder, MPI_Comm *comm_cart)

int MPI_Dims_create(int nnodes, int ndims, int *dims)

int MPI_Graph_create(MPI_Comm comm_old, int nnodes, int *index,
    int *edges,int reorder, MPI_Comm *comm_graph)

int MPI_Topo_test(MPI_Comm comm, int *status)

int MPI_Graphdims_get(MPI_Comm comm, int *nnodes, int *nedges)

int MPI_Graph_get(MPI_Comm comm, int maxindex, int maxedges,
    int *index, int *edges)

int MPI_Cartdim_get(MPI_Comm comm, int *ndims)

int MPI_Cart_get(MPI_Comm comm, int maxdims, int *dims, int *periods,
    int *coords) 

int MPI_Cart_rank(MPI_Comm comm, int *coords, int *rank) 

int MPI_Cart_coords(MPI_Comm comm, int rank, int maxdims, int *coords) 

int MPI_Graph_neighbors_count(MPI_Comm comm, int rank,
    int *nneighbors) 

int MPI_Graph_neighbors(MPI_Comm comm, int rank, int maxneighbors,
    int *neighbors) 

int MPI_Cart_shift(MPI_Comm comm, int direction, int disp,
    int *rank_source,int *rank_dest) 

int MPI_Cart_sub(MPI_Comm comm, int *remain_dims, MPI_Comm *newcomm) 

int MPI_Cart_map(MPI_Comm comm, int ndims, int *dims, int *periods, 
    int *newrank) 

int MPI_Graph_map(MPI_Comm comm, int nnodes, int *index, int *edges, 
    int *newrank)

А7 Привязки для запросов среды в языке Си

int MPI_Get_processor_name(char *name, int *resultlen)

int MPI_Errhandler_create(MPI_Handler_function *function, 
    MPI_Errhandler *errhandler) 

int MPI_Errhandler_set(MPI_Comm comm, MPI_Errhandler errhandler) 

int MPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler *errhandler) 

int MPI_Errhandler_free(MPI_Errhandler *errhandler) 

int MPI_Error_string(int errorcode, char *string, int *resultlen) 

int MPI_Error_class(int errorcode, int *errorclass) 

double MPI_Wtime(void) 

double MPI_Wtick(void) 

int MPI_Init(int *argc, char ***argv)

int MPI_Finalize(void) 

int MPI_Initialized(int *flag) 

int MPI_Abort(MPI_Comm comm, int errorcode)

А8 Привязки для профилирования Си в языке Си

int MPI_Pcontrol(const int level, ...)

А9 Привязки для парных обменов в языке ФОРТРАН

MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
<type> BUF(*)
INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR

MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, IERROR)
<type> BUF(*)
INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS(MPI_STATUS_SIZE),
IERROR 

MPI_GET_COUNT(STATUS, DATATYPE, COUNT, IERROR)
INTEGER STATUS(MPI_STATUS_SIZE), DATATYPE, COUNT, IERROR 

MPI_BSEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
<type> BUF(*) 
INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR 

MPI_SSEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
<type> BUF(*) 
INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR 

MPI_RSEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
<type> BUF(*) 
INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR 

MPI_BUFFER_ATTACH( BUFFER, SIZE, IERROR)
<type> BUFFER(*) 
INTEGER SIZE, IERROR 

MPI_BUFFER_DETACH( BUFFER, SIZE, IERROR)
<type> BUFFER(*) 
INTEGER SIZE, IERROR 

MPI_ISEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR)
<type> BUF(*) 
INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR

MPI_IBSEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR)
<type> BUF(*) 
INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR 

MPI_ISSEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR)
<type> BUF(*) 
INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR 

MPI_IRSEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR)
<type> BUF(*) 
INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR 

MPI_IRECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, REQUEST, IERROR)
<type> BUF(*) 
INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, REQUEST, IERROR 

MPI_WAIT(REQUEST, STATUS, IERROR)
INTEGER REQUEST, STATUS(MPI_STATUS_SIZE), IERROR 

MPI_TEST(REQUEST, FLAG, STATUS, IERROR)
LOGICAL FLAG 
INTEGER REQUEST, STATUS(MPI_STATUS_SIZE), IERROR 

MPI_REQUEST_FREE(REQUEST, IERROR)
INTEGER REQUEST, IERROR 

MPI_WAITANY(COUNT, ARRAY_OF_REQUESTS, INDEX, STATUS, IERROR)
INTEGER COUNT, ARRAY_OF_REQUESTS(*), INDEX, STATUS(MPI_STATUS_SIZE), 
IERROR 

MPI_TESTANY(COUNT, ARRAY_OF_REQUESTS, INDEX, FLAG, STATUS, IERROR)
LOGICAL FLAG 
INTEGER COUNT, ARRAY_OF_REQUESTS(*), INDEX, STATUS(MPI_STATUS_SIZE), 
IERROR 

MPI_WAITALL(COUNT, ARRAY_OF_REQUESTS, ARRAY_OF_STATUSES, IERROR)
INTEGER COUNT, ARRAY_OF_REQUESTS(*), 
ARRAY_OF_STATUSES(MPI_STATUS_SIZE,*), IERROR 

MPI_TESTALL(COUNT, ARRAY_OF_REQUESTS, FLAG, ARRAY_OF_STATUSES, IERROR)
LOGICAL FLAG 
INTEGER COUNT, ARRAY_OF_REQUESTS(*),
ARRAY_OF_STATUSES(MPI_STATUS_SIZE,*), IERROR 

MPI_WAITSOME(INCOUNT, ARRAY_OF_REQUESTS, OUTCOUNT, ARRAY_OF_INDICES, 
ARRAY_OF_STATUSES, IERROR)
INTEGER INCOUNT, ARRAY_OF_REQUESTS(*), OUTCOUNT, ARRAY_OF_INDICES(*), 
ARRAY_OF_STATUSES(MPI_STATUS_SIZE,*), IERROR

MPI_TESTSOME(INCOUNT, ARRAY_OF_REQUESTS, OUTCOUNT, ARRAY_OF_INDICES, 
ARRAY_OF_STATUSES, IERROR)
INTEGER INCOUNT, ARRAY_OF_REQUESTS(*), OUTCOUNT, ARRAY_OF_INDICES(*), 
ARRAY_OF_STATUSES(MPI_STATUS_SIZE,*), IERROR 

MPI_IPROBE(SOURCE, TAG, COMM, FLAG, STATUS, IERROR)
LOGICAL FLAG 
INTEGER SOURCE, TAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR 

MPI_PROBE(SOURCE, TAG, COMM, STATUS, IERROR)
INTEGER SOURCE, TAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR 

MPI_CANCEL(REQUEST, IERROR)
INTEGER REQUEST, IERROR 

MPI_TEST_CANCELLED(STATUS, FLAG, IERROR)
LOGICAL FLAG 
INTEGER STATUS(MPI_STATUS_SIZE), IERROR 

MPI_SEND_INIT(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR)
<type> BUF(*) 
INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR 

MPI_BSEND_INIT(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR)
<type> BUF(*) 
INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR 

MPI_SSEND_INIT(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR)
<type> BUF(*) 
INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR 

MPI_RSEND_INIT(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR)
<type> BUF(*) 
INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR 

MPI_RECV_INIT(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, REQUEST,
IERROR)
<type> BUF(*) 
INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, REQUEST, IERROR 

MPI_START(REQUEST, IERROR)
INTEGER REQUEST, IERROR

MPI_STARTALL(COUNT, ARRAY_OF_REQUESTS, IERROR)
INTEGER COUNT, ARRAY_OF_REQUESTS(*), IERROR 

MPI_SENDRECV(SENDBUF, SENDCOUNT, SENDTYPE, DEST, SENDTAG, RECVBUF, 
RECVCOUNT, RECVTYPE, SOURCE, RECVTAG, COMM, STATUS, IERROR)
<type> SENDBUF(*), RECVBUF(*) 
INTEGER SENDCOUNT, SENDTYPE, DEST, SENDTAG, RECVCOUNT, RECVTYPE, 
SOURCE, RECVTAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR 

MPI_SENDRECV_REPLACE(BUF, COUNT, DATATYPE, DEST, SENDTAG, SOURCE, 
RECVTAG, COMM, STATUS, IERROR)
<type> BUF(*) 
INTEGER COUNT, DATATYPE, DEST, SENDTAG, SOURCE, RECVTAG, COMM, 
STATUS(MPI_STATUS_SIZE), IERROR 

MPI_TYPE_CONTIGUOUS(COUNT, OLDTYPE, NEWTYPE, IERROR)
INTEGER COUNT, OLDTYPE, NEWTYPE, IERROR 

MPI_TYPE_VECTOR(COUNT, BLOCKLENGTH, STRIDE, OLDTYPE, NEWTYPE, IERROR)
INTEGER COUNT, BLOCKLENGTH, STRIDE, OLDTYPE, NEWTYPE, IERROR 

MPI_TYPE_HVECTOR(COUNT, BLOCKLENGTH, STRIDE, OLDTYPE, NEWTYPE, IERROR)
INTEGER COUNT, BLOCKLENGTH, STRIDE, OLDTYPE, NEWTYPE, IERROR 

MPI_TYPE_INDEXED(COUNT, ARRAY_OF_BLOCKLENGTHS, ARRAY_OF_DISPLACEMENTS, 
OLDTYPE, NEWTYPE, IERROR)
INTEGER COUNT, ARRAY_OF_BLOCKLENGTHS(*), ARRAY_OF_DISPLACEMENTS(*), 
OLDTYPE, NEWTYPE, IERROR 

MPI_TYPE_HINDEXED(COUNT, ARRAY_OF_BLOCKLENGTHS, 
ARRAY_OF_DISPLACEMENTS, OLDTYPE, NEWTYPE, IERROR)
INTEGER COUNT, ARRAY_OF_BLOCKLENGTHS(*), ARRAY_OF_DISPLACEMENTS(*), 
OLDTYPE, NEWTYPE, IERROR 

MPI_TYPE_STRUCT(COUNT, ARRAY_OF_BLOCKLENGTHS, ARRAY_OF_DISPLACEMENTS, 
ARRAY_OF_TYPES, NEWTYPE, IERROR)
INTEGER COUNT, ARRAY_OF_BLOCKLENGTHS(*), ARRAY_OF_DISPLACEMENTS(*), 
ARRAY_OF_TYPES(*), NEWTYPE, IERROR 

MPI_ADDRESS(LOCATION, ADDRESS, IERROR)
<type> LOCATION(*) 
INTEGER ADDRESS, IERROR

MPI_TYPE_EXTENT(DATATYPE, EXTENT, IERROR)
INTEGER DATATYPE, EXTENT, IERROR 

MPI_TYPE_SIZE(DATATYPE, SIZE, IERROR)
INTEGER DATATYPE, SIZE, IERROR 

MPI_TYPE_LB( DATATYPE, DISPLACEMENT, IERROR)
INTEGER DATATYPE, DISPLACEMENT, IERROR 

MPI_TYPE_UB( DATATYPE, DISPLACEMENT, IERROR)
INTEGER DATATYPE, DISPLACEMENT, IERROR 

MPI_TYPE_COMMIT(DATATYPE, IERROR)
INTEGER DATATYPE, IERROR 

MPI_TYPE_FREE(DATATYPE, IERROR)
INTEGER DATATYPE, IERROR 

MPI_GET_ELEMENTS(STATUS, DATATYPE, COUNT, IERROR)
INTEGER STATUS(MPI_STATUS_SIZE), DATATYPE, COUNT, IERROR 

MPI_PACK(INBUF, INCOUNT, DATATYPE, OUTBUF, OUTSIZE, POSITION, COMM, 
IERROR)
<type> INBUF(*), OUTBUF(*)
INTEGER INCOUNT, DATATYPE, OUTSIZE, POSITION, COMM, IERROR 

MPI_UNPACK(INBUF, INSIZE, POSITION, OUTBUF, OUTCOUNT, DATATYPE, COMM, 
IERROR)
<type> INBUF(*), OUTBUF(*) 
INTEGER INSIZE, POSITION, OUTCOUNT, DATATYPE, COMM, IERROR 

MPI_PACK_SIZE(INCOUNT, DATATYPE, COMM, SIZE, IERROR)
INTEGER INCOUNT, DATATYPE, COMM, SIZE, IERROR

А10 Привязки для коллективных обменов в языке ФОРТРАН

MPI_BARRIER(COMM, IERROR) 
INTEGER COMM, IERROR 

MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
<type> BUFFER(*) 
INTEGER COUNT, DATATYPE, ROOT, COMM, IERROR 

MPI_GATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, 
ROOT, COMM, IERROR) 
<type> SENDBUF(*), RECVBUF(*) 
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR 

MPI_GATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS, DISPLS, 
RECVTYPE, ROOT, COMM, IERROR) 
<type> SENDBUF(*), RECVBUF(*) 
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, ROOT, 
COMM, IERROR 

MPI_SCATTER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, 
RECVTYPE, ROOT, COMM, IERROR) 
<type> SENDBUF(*), RECVBUF(*) 
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR 

MPI_SCATTERV(SENDBUF, SENDCOUNTS, DISPLS, SENDTYPE, RECVBUF, 
RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR) 
<type> SENDBUF(*), RECVBUF(*) 
INTEGER SENDCOUNTS(*), DISPLS(*), SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, 
COMM, IERROR 

MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, 
RECVTYPE, COMM, IERROR) 
<type> SENDBUF(*), RECVBUF(*) 
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR 

MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS, 
DISPLS, RECVTYPE, COMM, IERROR) 
<type> SENDBUF(*), RECVBUF(*) 
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, COMM, 
IERROR 

MPI_ALLTOALL(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT,
RECVTYPE, COMM, IERROR) 
<type> SENDBUF(*), RECVBUF(*) 
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR 

MPI_ALLTOALLV(SENDBUF, SENDCOUNTS, SDISPLS, SENDTYPE, RECVBUF, 
RECVCOUNTS, RDISPLS, RECVTYPE, COMM, IERROR) 
<type> SENDBUF(*), RECVBUF(*) 
INTEGER SENDCOUNTS(*), SDISPLS(*), SENDTYPE, RECVCOUNTS(*), 
RDISPLS(*), RECVTYPE, COMM, IERROR 

MPI_REDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, ROOT, COMM, IERROR) 
<type> SENDBUF(*), RECVBUF(*) 
INTEGER COUNT, DATATYPE, OP, ROOT, COMM, IERROR 

MPI_OP_CREATE( FUNCTION, COMMUTE, OP, IERROR) 
EXTERNAL FUNCTION 
LOGICAL COMMUTE 
INTEGER OP, IERROR 

MPI_OP_FREE( OP, IERROR) 
INTEGER OP, IERROR 

MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, IERROR) 
<type> SENDBUF(*), RECVBUF(*) 
INTEGER COUNT, DATATYPE, OP, COMM, IERROR 

MPI_REDUCE_SCATTER(SENDBUF, RECVBUF, RECVCOUNTS, DATATYPE, OP, COMM, 
IERROR) 
<type> SENDBUF(*), RECVBUF(*) 
INTEGER RECVCOUNTS(*), DATATYPE, OP, COMM, IERROR

PI_SCAN(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, IERROR) 
<type> SENDBUF(*), RECVBUF(*) 
INTEGER COUNT, DATATYPE, OP, COMM, IERROR

А11 Привязки языка ФОРТРАН для групп, контекстов и так далее

MPI_GROUP_SIZE(GROUP, SIZE, IERROR)
INTEGER GROUP, SIZE, IERROR 

MPI_GROUP_RANK(GROUP, RANK, IERROR)
INTEGER GROUP, RANK, IERROR 

MPI_GROUP_TRANSLATE_RANKS(GROUP1, N, RANKS1, GROUP2, RANKS2, IERROR)
INTEGER GROUP1, N, RANKS1(*), GROUP2, RANKS2(*), IERROR 

MPI_GROUP_COMPARE(GROUP1, GROUP2, RESULT, IERROR)
INTEGER GROUP1, GROUP2, RESULT, IERROR 

MPI_COMM_GROUP(COMM, GROUP, IERROR)
INTEGER COMM, GROUP, IERROR 

MPI_GROUP_UNION(GROUP1, GROUP2, NEWGROUP, IERROR)
INTEGER GROUP1, GROUP2, NEWGROUP, IERROR 

MPI_GROUP_INTERSECTION(GROUP1, GROUP2, NEWGROUP, IERROR)
INTEGER GROUP1, GROUP2, NEWGROUP, IERROR 

MPI_GROUP_DIFFERENCE(GROUP1, GROUP2, NEWGROUP, IERROR)
INTEGER GROUP1, GROUP2, NEWGROUP, IERROR 

MPI_GROUP_INCL(GROUP, N, RANKS, NEWGROUP, IERROR)
INTEGER GROUP, N, RANKS(*), NEWGROUP, IERROR 

MPI_GROUP_EXCL(GROUP, N, RANKS, NEWGROUP, IERROR)
INTEGER GROUP, N, RANKS(*), NEWGROUP, IERROR 

MPI_GROUP_RANGE_INCL(GROUP, N, RANGES, NEWGROUP, IERROR)
INTEGER GROUP, N, RANGES(3,*), NEWGROUP, IERROR 

MPI_GROUP_RANGE_EXCL(GROUP, N, RANGES, NEWGROUP, IERROR)
INTEGER GROUP, N, RANGES(3,*), NEWGROUP, IERROR 

MPI_GROUP_FREE(GROUP, IERROR)
INTEGER GROUP, IERROR 

MPI_COMM_SIZE(COMM, SIZE, IERROR)
INTEGER COMM, SIZE, IERROR

MPI_COMM_RANK(COMM, RANK, IERROR)
INTEGER COMM, RANK, IERROR 

MPI_COMM_COMPARE(COMM1, COMM2, RESULT, IERROR)
INTEGER COMM1, COMM2, RESULT, IERROR

MPI_COMM_DUP(COMM, NEWCOMM, IERROR)
INTEGER COMM, NEWCOMM, IERROR 

MPI_COMM_CREATE(COMM, GROUP, NEWCOMM, IERROR)
INTEGER COMM, GROUP, NEWCOMM, IERROR 

MPI_COMM_SPLIT(COMM, COLOR, KEY, NEWCOMM, IERROR)
INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR 

MPI_COMM_FREE(COMM, IERROR)
INTEGER COMM, IERROR 

MPI_COMM_TEST_INTER(COMM, FLAG, IERROR)
INTEGER COMM, IERROR
LOGICAL FLAG 

MPI_COMM_REMOTE_SIZE(COMM, SIZE, IERROR)
INTEGER COMM, SIZE, IERROR 

MPI_COMM_REMOTE_GROUP(COMM, GROUP, IERROR)
INTEGER COMM, GROUP, IERROR 

MPI_INTERCOMM_CREATE(LOCAL_COMM, LOCAL_LEADER, PEER_COMM, 
REMOTE_LEADER, TAG, NEWINTERCOMM, IERROR)
INTEGER LOCAL_COMM, LOCAL_LEADER, PEER_COMM, REMOTE_LEADER, TAG, 
NEWINTERCOMM, IERROR 

MPI_INTERCOMM_MERGE(INTERCOMM, HIGH, NEWINTRACOMM, IERROR)
INTEGER INTERCOMM, NEWINTRACOMM, IERROR
LOGICAL HIGH 

MPI_KEYVAL_CREATE(COPY_FN, DELETE_FN, KEYVAL, EXTRA_STATE, IERROR)
EXTERNAL COPY_FN, DELETE_FN 
INTEGER KEYVAL, EXTRA_STATE, IERROR 

MPI_KEYVAL_FREE(KEYVAL, IERROR)
INTEGER KEYVAL, IERROR 

MPI_ATTR_PUT(COMM, KEYVAL, ATTRIBUTE_VAL, IERROR)
INTEGER COMM, KEYVAL, ATTRIBUTE_VAL, IERROR 

MPI_ATTR_GET(COMM, KEYVAL, ATTRIBUTE_VAL, FLAG, IERROR)
INTEGER COMM, KEYVAL, ATTRIBUTE_VAL, IERROR 
LOGICAL FLAG 

MPI_ATTR_DELETE(COMM, KEYVAL, IERROR)
INTEGER COMM, KEYVAL, IERROR

А12 Привязки для топологий процессов в языке ФОРТРАН

MPI_CART_CREATE(COMM_OLD, NDIMS, DIMS, PERIODS, REORDER, COMM_CART, 
IERROR)
INTEGER COMM_OLD, NDIMS, DIMS(*), COMM_CART, IERROR 
LOGICAL PERIODS(*), REORDER 

MPI_DIMS_CREATE(NNODES, NDIMS, DIMS, IERROR)
INTEGER NNODES, NDIMS, DIMS(*), IERROR 

MPI_GRAPH_CREATE(COMM_OLD, NNODES, INDEX, EDGES, REORDER, COMM_GRAPH, 
IERROR)
INTEGER COMM_OLD, NNODES, INDEX(*), EDGES(*), COMM_GRAPH, IERROR 
LOGICAL REORDER 

MPI_TOPO_TEST(COMM, STATUS, IERROR)
INTEGER COMM, STATUS, IERROR 

MPI_GRAPHDIMS_GET(COMM, NNODES, NEDGES, IERROR)
INTEGER COMM, NNODES, NEDGES, IERROR 

MPI_GRAPH_GET(COMM, MAXINDEX, MAXEDGES, INDEX, EDGES, IERROR)
INTEGER COMM, MAXINDEX, MAXEDGES, INDEX(*), EDGES(*), IERROR 

MPI_CARTDIM_GET(COMM, NDIMS, IERROR)
INTEGER COMM, NDIMS, IERROR 

MPI_CART_GET(COMM, MAXDIMS, DIMS, PERIODS, COORDS, IERROR)
INTEGER COMM, MAXDIMS, DIMS(*), COORDS(*), IERROR 
LOGICAL PERIODS(*) 

MPI_CART_RANK(COMM, COORDS, RANK, IERROR)
INTEGER COMM, COORDS(*), RANK, IERROR 

MPI_CART_COORDS(COMM, RANK, MAXDIMS, COORDS, IERROR)
INTEGER COMM, RANK, MAXDIMS, COORDS(*), IERROR 

MPI_GRAPH_NEIGHBORS_COUNT(COMM, RANK, NNEIGHBORS, IERROR)
INTEGER COMM, RANK, NNEIGHBORS, IERROR 

MPI_GRAPH_NEIGHBORS(COMM, RANK, MAXNEIGHBORS, NEIGHBORS, IERROR)
INTEGER COMM, RANK, MAXNEIGHBORS, NEIGHBORS(*), IERROR 

MPI_CART_SHIFT(COMM, DIRECTION, DISP, RANK_SOURCE, RANK_DEST, IERROR)
INTEGER COMM, DIRECTION, DISP, RANK_SOURCE, RANK_DEST, IERROR 

MPI_CART_SUB(COMM, REMAIN_DIMS, NEWCOMM, IERROR)
INTEGER COMM, NEWCOMM, IERROR 
LOGICAL REMAIN_DIMS(*) 

MPI_CART_MAP(COMM, NDIMS, DIMS, PERIODS, NEWRANK, IERROR)
INTEGER COMM, NDIMS, DIMS(*), NEWRANK, IERROR 
LOGICAL PERIODS(*) 

MPI_GRAPH_MAP(COMM, NNODES, INDEX, EDGES, NEWRANK, IERROR)
INTEGER COMM, NNODES, INDEX(*), EDGES(*), NEWRANK, IERROR

А13 Привязки для запросов среды в языке ФОРТРАН

MPI_GET_PROCESSOR_NAME(NAME, RESULTLEN, IERROR)
CHARACTER*(*) NAME
INTEGER RESULTLEN, IERROR 

MPI_ERRHANDLER_CREATE(FUNCTION, ERRHANDLER, IERROR)
EXTERNAL FUNCTION 
INTEGER ERRHANDLER, IERROR 

MPI_ERRHANDLER_SET(COMM, ERRHANDLER, IERROR)
INTEGER COMM, ERRHANDLER, IERROR 

MPI_ERRHANDLER_GET(COMM, ERRHANDLER, IERROR)
INTEGER COMM, ERRHANDLER, IERROR 

MPI_ERRHANDLER_FREE(ERRHANDLER, IERROR)
INTEGER ERRHANDLER, IERROR 

MPI_ERROR_STRING(ERRORCODE, STRING, RESULTLEN, IERROR)
INTEGER ERRORCODE, RESULTLEN, IERROR 
CHARACTER*(*) STRING 

MPI_ERROR_CLASS(ERRORCODE, ERRORCLASS, IERROR)
INTEGER ERRORCODE, ERRORCLASS, IERROR 
DOUBLE PRECISION MPI_WTIME() 
DOUBLE PRECISION MPI_WTICK() 

MPI_INIT(IERROR)
INTEGER IERROR 

MPI_FINALIZE(IERROR)
INTEGER IERROR 

MPI_INITIALIZED(FLAG, IERROR)
LOGICAL FLAG 
INTEGER IERROR 

MPI_ABORT(COMM, ERRORCODE, IERROR)
INTEGER COMM, ERRORCODE, IERROR

А14 Привязки языка ФОРТРАН для профилирования

MPI_PCONTROL(LEVEL)
INTEGER LEVEL, ...


Alex Otwagin 2002-12-10



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру