MPI_ADDRESS
а должно читаться:
MPI_ADDRESS_TYPE
for (64 bit) C integers declared to be of type longlong int
а должно читаться:
for C integers declared to be of type long long
Совет пользователям: Для того, чтобы предупредить проблемы, связанные с копированием аргументов и регистровой оптимизации, выполняемых компиляторами ФОРТРАНa, обратите внимание на советы в подразделах ``Проблемы из-за копирования данных,'' и ``Проблема регистровой оптимизации'' в разделе A Problem with Register Optimization стандарта MPI-2. []
Пустое состояние - это состояние, которое возвращает
tag=MPI_ANY_TAG
,
source=MPI_ANY_SOURCE
, и внутренне устроено так, что вызовы подпрограмм
MPI_GET_COUNT
и MPI_GET_ELEMENTS
возвращают count=0
.
а должно читаться:
Пустое состояние - это состояние, которое возвращает
tag=MPI_ANY_TAG
,
source=MPI_ANY_SOURCE
, error=MPI_SUCCESS
, и
внутренне устроено так, что вызовы
подпрограмм MPI_GET
и MPI_GET_ELEMENTS
возвращают
count=0
и MPI_TEST
возвращает
false
(ложь).
100 CALL MPI_RECV(i, 1, MPI_INTEGER, 0, 0, status, ierr)
ELSE
200 CALL MPI_RECV(x, 1, MPI_REAL, 1, 0, status, ierr)
а должно читаться:
100 CALL MPI_RECV(i, 1, MPI_INTEGER, 0, 0, comm, status, ierr)
ELSE
200 CALL MPI_RECV(x, 1, MPI_REAL, 1, 0, comm, status, ierr)
100 CALL MPI_RECV(i, 1, MPI_INTEGER, MPI_ANY_SOURCE,0, status, ierr)
ELSE
200 CALL MPI_RECV(x, 1, MPI_REAL, MPI_ANY_SOURCE,0, status, ierr)
а должно читаться:
100 CALL MPI_RECV(i, 1, MPI_INTEGER, MPI_ANY_SOURCE,0, comm, status, ierr)
ELSE
200 CALL MPI_RECV(x, 1, MPI_REAL, MPI_ANY_SOURCE,0, comm, status, ierr)
Совет пользователям:
Для того, чтобы предупредить проблемы, связанные с копированием аргументов и регистровой оптимизации, выполняемых компиляторами ФОРТРАНa, обратите внимание на советы в подразделах ``Проблемы из-за копирования данных,'' и ``Проблема регистровой оптимизации'' в разделе A Problem with Register Optimization стандарта MPI-2. []
int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
int dest, int sendtag, void *recvbuf, int recvcount,
MPI_Datatype recvtype, int source, MPI_Datatype recvtag,
MPI_Comm comm, MPI_Status *status)
а должно читаться:
int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
int dest, int sendtag, void *recvbuf, int recvcount,
MPI_Datatype recvtype, int source, int recvtag,
MPI_Comm comm, MPI_Status *status)
STATUS(MPI_STATUS_SIZE), IERROR
а должно читаться:
SOURCE, RECVTAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR
Совет пользователям:
Для того, чтобы предупредить проблемы, связанные с копированием аргументов и регистровой оптимизации, выполняемых компиляторами ФОРТРАНa, обратите внимание на советы в подразделах ``Проблемы из-за копирования данных,'' и ``Проблема регистровой оптимизации'' в разделе A Problem with Register Optimization стандарта MPI-2. []
and do not affect the the content of a message
а должно читаться:
and do not affect the content of a message
Тип данных может определять перекрывающиеся области. Использование такого типа данных в операции приема ошибочно. (Это ошибочно, даже если получаемое сообщение достаточно коротко, чтобы не записывать никакой элемент данных более одного раза.)
Тип данных может определять перекрывающиеся области. Если такой тип данных используется в операции приема, это означает, что часть получаемого буфера записывается более, чем один раз, следовательно, вызов ошибочен.
Первая часть - это дополнение MPI-1.1. Вторая часть перекрывается с ней. Старый текст должен быть удален, и теперь это читается:
Тип данных может определять перекрывающиеся области. Использование такого типа данных в операции приема ошибочно. (Это ошибочно, даже если получаемое сообщение достаточно коротко, чтобы не записывать никакой элемент данных более одного раза.)
Аргумент datatype должен соответствовать аргументу, предоставляемому вызовом приема, который устанавливает переменную состояния.
``specified by outbuf and outcount''
а должно читаться:
``specified by outbuf and outsize.''
MPI_Pack_size(count, MPI_CHAR, &k2);
а должно читаться:
MPI_Pack_size(count, MPI_CHAR, comm, &k2);
MPI_Pack(chr, count, MPI_CHAR, &lbuf, k, &position, comm);
а должно читаться:
MPI_Pack(chr, count, MPI_CHAR, lbuf, k, &position, comm);
а должно читаться:
j-й блок данных, посылаемый из любого процесса, получается каждым процессом и помещается в j-й блок буфера recvbuf.
а должно читаться:
Блок данных, посылаемый из любого процесса, получается каждым процессом и помещается в j-й блок буфера recvbuf.
MPI предоставляет семь таких заранее определенных типов данных.
а должно читаться:
MPI предоставляет девять таких заранее определенных типов данных.
FUNCTION USER_FUNCTION( INVEC(*), INOUTVEC(*), LEN, TYPE)
а должно читаться:
SUBROUTINE USER_FUNCTION(INVEC, INOUTVEC, LEN, TYPE)
MPI_OP_FREE( op)
IN | op | операция (дескриптор) |
а должно читаться:
MPI_OP_FREE( op)
INOUT | op | операция (дескриптор) |
CALL MPI_ALLREDUCE(sum, c, n, MPI_REAL, MPI_SUM, 0, comm, ierr)
а должно читаться:
CALL MPI_ALLREDUCE(sum, c, n, MPI_REAL, MPI_SUM, comm, ierr)
IN | ranges | массив троек целых чисел формы (первый ранг, последний ранг, шаг), определяющий ранги в группе процеесов, которые должны быть включены в newgroup |
а должно читаться:
IN | ranges | одномерный массив троек целых чисел формы (первый ранг, последний ранг, шаг), определяющий ранги в группе процеесов, которые должны быть включены в newgroup |
IN | n | количество элементов в массиве ranges (целое) |
а должно читаться:
IN | n | количество троек в массиве ranges (целое) |
to the greatest possible, extent,
а должно читаться:
to the greatest possible extent,
MPI_ERRHANDLER_CREATE(FUNCTION, HANDLER, IERROR)
а должно читаться:
MPI_ERRHANDLER_CREATE(FUNCTION, ERRHANDLER, IERROR)
В языке ФОРТРАН подпрограмма пользователя должна быть в форме:
SUBROUTINE HANDLER\_FUNCTION(COMM, ERROR\_CODE, .....)
INTEGER COMM, ERROR\_CODE
Совет пользователям:
Пользователи могут потерять желание использовать
HANDLER_FUNCTION языка ФОРТРАН, так как подпрограмма ожидает переменное
количество аргументов. Некоторые системы ФОРТРАН могут позволять это, но
другие могут не дать правильных результатов или не скомпилировать/связать код.
Итак, в общем, невозможно создать портируемый код с HANDLER_FUNCTION на
ФОРТРАН.
MPI_ERRHANDLER_FREE( errhandler )
IN | errhandler | обработчик ошибок MPI (дескриптор) |
а должно читаться:
MPI_ERRHANDLER_FREE( errhandler )
INOUT | errhandler | обработчик ошибок MPI (дескриптор) |
Класс ошибок MPI - это реальный код ошибок MPI. По определению, значения определенные для классов ошибок - реальные коды ошибок MPI.
...of different language bindings is is done ....
а должно читаться:
...of different language bindings is done ....
MPI_PCONTROL(level)
а должно читаться:
MPI_PCONTROL(LEVEL)
MPI_PENDING
а должно читаться:
MPI_ERR_PENDING
MPI_DOUBLE_COMPLEX
но должно быть перемещено на страницу 212, строка 22, так как это необязательный тип данных Fortran.
Итак, теперь текст читается:
/* необязательные типы данных (Фортран) */
MPI_INTEGER1
MPI_INTEGER2
MPI_INTEGER4
MPI_REAL2
MPI_REAL4
MPI_REAL8
и т.д.
//
/* необязательные типы данных (Си) */
MPI_LONG_LONG_INT
и т.д.
/* Заранее определенные функции в Си и Фортран */
MPI_NULL_COPY_FN
MPI_NULL_DELETE_FN
MPI_DUP_FN
MPI_Errhandler
FUNCTION USER_FUNCTION( INVEC(*), INOUTVEC(*), LEN, TYPE)
а должно читаться:
SUBROUTINE USER_FUNCTION( INVEC, INOUTVEC, LEN, TYPE)
PROCEDURE COPY\_FUNCTION(OLDCOMM, KEYVAL, EXTRA_STATE,
ATTRIBUTE_VAL_IN, ATTRIBUTE_VAL_OUT, FLAG, IERR)
а должно читаться:
SUBROUTINE COPY_FUNCTION(OLDCOMM, KEYVAL, EXTRA_STATE,
ATTRIBUTE_VAL_IN, ATTRIBUTE_VAL_OUT, FLAG, IERR)
PROCEDURE DELETE_FUNCTION(COMM, KEYVAL, ATTRIBUTE_VAL, EXTRA_STATE, IERR)
а должно читаться:
SUBROUTINE DELETE_FUNCTION(COMM, KEYVAL, ATTRIBUTE_VAL, EXTRA_STATE, IERR)
handler-function для обработчиков ошибок может быть декларирована
следующим
образом:
SUBROUTINE HANDLER_FUNCTION(COMM, ERROR_CODE, .....)
INTEGER COMM, ERROR_CODE
int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
int dest, int sendtag, void *recvbuf, int recvcount,
MPI_Datatype recvtype, int source, MPI_Datatype recvtag,
MPI_Comm comm, MPI_Status *status)
а должно читаться:
int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
int dest, int sendtag, void *recvbuf, int recvcount,
MPI_Datatype recvtype, int source, int recvtag,
MPI_Comm comm, MPI_Status *status)
int double MPI_Wtime(void)
int double MPI_Wtick(void)
а должно читаться:
double MPI_Wtime(void)
double MPI_Wtick(void)
INTEGER REQUEST, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR
а должно читаться:
INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR
INTEGER REQUEST, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR
а должно читаться:
INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR
MPI_INTERCOMM_MERGE(INTERCOMM, HIGH, INTRACOMM, IERROR)
INTEGER INTERCOMM, INTRACOMM, IERROR
а должно читаться:
MPI_INTERCOMM_MERGE(INTERCOMM, HIGH, NEWINTRACOMM, IERROR)
INTEGER INTERCOMM, NEWINTRACOMM, IERROR
MPI_ERRHANDLER_CREATE(FUNCTION, HANDLER, IERROR)
а должно читаться:
MPI_ERRHANDLER_CREATE(FUNCTION, ERRHANDLER, IERROR)
MPI_PCONTROL(level)
а должно читаться:
MPI_PCONTROL(LEVEL)