B1 Классы языка С++
Ниже представлены классы языка С++ в привязках для MPI-1:
namespace MPI {
class Comm {...};
class Intracomm : public Comm {...};
class Graphcomm : public Intracomm {...};
class Cartcomm : public Intracomm {...};
class Intercomm : public Comm {...};
class Datatype {...};
class Errhandler {...};
class Exception {...};
class Group {...};
class Op {...};
class Request {...};
class Prequest : public Request {...};
class Status {...};
};
Заметим, что некоторые функции, константы и типы данных MPI-1 устарели и поэтому не имеют соответствующих привязок С++. Все устаревшие имена имеют соответствующие новые имена в MPI-2 (хотя, возможно, с новой семантикой).
B2 Константы
Эти константы определены в файлах mpi.h
. Для краткости типы констант
определяются в комментариях.
// возвращаемые коды
// Тип: const int (или unnamed enum)
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
// различные константы
// Тип: const void *
MPI::BOTTOM
// Тип: константы int (или unnamed enum)
MPI::PROC_NULL
MPI::ANY_SOURCE
MPI::ANY_TAG
MPI::UNDEFINED
MPI::BSEND_OVERHEAD
MPI::KEYVAL_INVALID
// описатели для обработки ошибок
// Тип: MPI::Errhandler (см. ниже)
MPI::ERRORS_ARE_FATAL
MPI::ERRORS_RETURN
MPI::ERRORS_THROW_EXCEPTIONS
// Максимальный размер строки
// Тип: const int
MPI::MAX_PROCESSOR_NAME
MPI::MAX_ERROR_STRING
// элементарные типы данных (Си / C++)
// Тип: const MPI::Datatype
MPI::CHAR
MPI::SHORT
MPI::INT
MPI::LONG
MPI::SIGNED_CHAR
MPI::UNSIGNED_CHAR
MPI::UNSIGNED_SHORT
MPI::UNSIGNED
MPI::UNSIGNED_LONG
MPI::FLOAT
MPI::DOUBLE
MPI::LONG_DOUBLE
MPI::BYTE
MPI::PACKED
// элементарные типы данных (Фортран)
// Тип: const MPI::Datatype
MPI::INTEGER
MPI::REAL
MPI::DOUBLE_PRECISION
MPI::F_COMPLEX
MPI::F_DOUBLE_COMPLEX
MPI::LOGICAL
MPI::CHARACTER
// типы данных для функций редукции (Си / C++)
// Тип: const MPI::Datatype
MPI::FLOAT_INT
MPI::DOUBLE_INT
MPI::LONG_INT
MPI::TWOINT
MPI::SHORT_INT
MPI::LONG_DOUBLE_INT
// типы данных для функций редукции (Фортран)
// Тип const MPI::Datatype
MPI::TWOREAL
MPI::TWODOUBLE_PRECISION
MPI::TWOINTEGER
// дополнительные типы данных данных (Фортран)
// Тип: const MPI::Datatype
MPI::INTEGER1
MPI::INTEGER2
MPI::INTEGER4
MPI::REAL2
MPI::REAL4
MPI::REAL8
// дополнительные типы данных (Си / C++)
// Type: const MPI::Datatype
MPI::LONG_LONG
MPI::UNSIGNED_LONG_LONG
// специальные типы данных для для создания производных типов данных
// Тип: const MPI::Datatype
MPI::UB
MPI::LB
// типы данных C++
// Тип: const MPI::Datatype
MPI::BOOL
MPI::COMPLEX
MPI::DOUBLE_COMPLEX
MPI::LONG_DOUBLE_COMPLEX
// зарезервированные коммуникаторы
// Тип: MPI::Intracomm
MPI::COMM_WORLD
MPI::COMM_SELF
// результаты сравнения для коммуникаторов и групп
// Тип: const int (или unnamed enum)
MPI::IDENT
MPI::CONGRUENT
MPI::SIMILAR
MPI::UNEQUAL
// ключи запрсов среды
// Тип: const int (или unnamed enum)
MPI::TAG_UB
MPI::IO
MPI::HOST
MPI::WTIME_IS_GLOBAL
// коллективные операции
// Тип: const MPI::Op
MPI::MAX
MPI::MIN
MPI::SUM
MPI::PROD
MPI::MAXLOC
MPI::MINLOC
MPI::BAND
MPI::BOR
MPI::BXOR
MPI::LAND
MPI::LOR
MPI::LXOR
// нулевые дескрипторы
// Тип: const MPI::Group
MPI::GROUP_NULL
MPI::COMM_NULL
// Тип: const MPI::Datatype
MPI::DATATYPE_NULL
// Тип: const MPI::Request
MPI::REQUEST_NULL
// Тип: const MPI::Op
MPI::OP_NULL
// Тип: MPI::Errhandler
MPI::ERRHANDLER_NULL
// Пустая группа
// Тип: const MPI::Group
MPI::GROUP_EMPTY
// Топологии
// Тип: const int (или unnamed enum)
MPI::GRAPH
MPI::CART
// Предопределенные функции
// Тип: MPI::Copy_function
MPI::NULL_COPY_FN
MPI::DUP_FN
// Тип: MPI::Delete_function
MPI::NULL_DELETE_FN
B3 Определение типов
Следующее есть типы С++ , также включенные в файл mpi.h
.
// Typedef
MPI::Aint
Далее в этом приложении используется обозначение пространства имен, поскольку все функции из списка ниже имеют прототипы. Эта нотация не использовалась раньше, поскольку списки констант и типов выше не являются фактическими декларациями.
// прототипы для определенных пользователем функций
namespace MPI {
typedef void User_function(const void *invec, void* inoutvec, int len, const
Datatype& datatype);
};
B4 Привязки для парных обменов в языке С++
Кроме специально отмеченных случаев, все не статические функции в этом приложении виртуальные. Для краткости ключевое слово virtual пропущено.
namespace MPI{
void Comm::Send(const void* buf, int count,
const Datatype& datatype, int dest, int tag) const
void Comm::Recv(void* buf, int count, const Datatype& datatype,
int source, int tag, Status& status) const
void Comm::Recv(void* buf, int count, const Datatype& datatype,
int source, int tag) const
int Status::Get_count(const Datatype& datatype) const
void Comm::Bsend(const void* buf, int count, const Datatype& datatype,
int dest, int tag) const
void Comm::Ssend(const void* buf, int count, const Datatype& datatype,
int dest, int tag) const
void Comm::Rsend(const void* buf, int count, const Datatype& datatype,
int dest, int tag) const
void Attach_buffer(void* buffer, int size)
int Detach_buffer(void*& buffer)
Request Comm::Isend(const void* buf, int count, const Datatype& datatype,
int dest, int tag) const
Request Comm::Ibsend(const void* buf, int count, const Datatype& datatype,
int dest, int tag) const
Request Comm::Issend(const void* buf, int count, const Datatype& datatype,
int dest, int tag) const
Request Comm::Irsend(const void* buf, int count, const Datatype& datatype,
int dest, int tag) const
Request Comm::Irecv(void* buf, int count, const Datatype& datatype,
int source, int tag) const
void Request::Wait(Status& status)
void Request::Wait()
bool Request::Test(Status& status)
bool Request::Test()
void Request::Free()
static int Request::Waitany(int count, Request array_of_requests[], Status&
status)
static int Request::Waitany(int count, Request array_of_requests[])
static bool Request::Testany(int count, Request array_of_requests[],
int& index, Status& status)
static bool Request::Testany(int count, Request array_of_requests[], int& index)
static void Request::Waitall(int count, Request array_of_requests[],
Status array_of_statuses[])
static void Request::Waitall(int count, Request array_of_requests[])
static bool Request::Testall(int count, Request array_of_requests[],
Status array_of_statuses[])
static bool Request::Testall(int count, Request array_of_requests[])
static int Request::Waitsome(int incount, Request array_of_requests[],
int array_of_indices[], Status array_of_statuses[])
static int Request::Waitsome(int incount, Request array_of_requests[],
int array_of_indices[])
static int Request::Testsome(int incount, Request array_of_requests[],
int array_of_indices[], Status array_of_statuses[])
static int Request::Testsome(int incount, Request array_of_requests[],
int array_of_indices[])
bool Comm::Iprobe(int source, int tag, Status& status) const
bool Comm::Iprobe(int source, int tag) const
void Comm::Probe(int source, int tag, Status& status) const
void Comm::Probe(int source, int tag) const
void Request::Cancel() const
bool Status::Is_cancelled() const
Prequest Comm::Send_init(const void* buf, int count,
const Datatype& datatype, int dest, int tag) const
Prequest Comm::Bsend_init(const void* buf, int count,
const Datatype& datatype, int dest, int tag) const
Prequest Comm::Ssend_init(const void* buf, int count,
const Datatype& datatype, int dest, int tag) const
Prequest Comm::Rsend_init(const void* buf, int count,
const Datatype& datatype, int dest, int tag) const
Prequest Comm::Recv_init(void* buf, int count,
const Datatype& datatype, int source, int tag) const
void Prequest::Start()
static void Prequest::Startall(int count, Prequest array_of_requests[])
void Comm::Sendrecv(const void *sendbuf, int sendcount,
const Datatype& sendtype, int dest, int sendtag, void *recvbuf,
int recvcount, const Datatype& recvtype, int source, int recvtag,
Status& status) const
void Comm::Sendrecv(const void *sendbuf, int sendcount,
const Datatype& sendtype, int dest, int sendtag, void *recvbuf,
int recvcount, const Datatype& recvtype, int source, int recvtag) const
void Comm::Sendrecv_replace(void* buf, int count,
const Datatype& datatype, int dest, int sendtag, int source,
int recvtag, Status& status) const
void Comm::Sendrecv_replace(void* buf, int count,
const Datatype& datatype, int dest, int sendtag, int source, int recvtag)
const
Datatype Datatype::Create_contiguous(int count) const
Datatype Datatype::Create_vector(int count, int blocklength, int stride) const
Datatype Datatype::Create_indexed(int count, const int array_of_blocklengths[],
const int array_of_displacements[]) const
int Datatype::Get_size() const
void Datatype::Commit()
void Datatype::Free()
int Status::Get_elements(const Datatype& datatype) const
void Datatype::Pack(const void* inbuf, int incount, void *outbuf,
int outsize, int& position, const Comm &comm) const
void Datatype::Unpack(const void* inbuf, int insize, void *outbuf,
int outcount, int& position, const Comm& comm) const
int Datatype::Pack_size(int incount, const Comm& comm) const
};
B5 Привязки для коллективных обменов в языке С++
namespace MPI {
void Intracomm::Barrier() const
void Intracomm::Bcast(void* buffer, int count,
const Datatype& datatype, int root) const
void Intracomm::Gather(const void* sendbuf, int sendcount,
const Datatype& sendtype, void* recvbuf, int recvcount,
const Datatype& recvtype, int root) const
void Intracomm::Gatherv(const void* sendbuf, int sendcount,
const Datatype& sendtype, void* recvbuf, const int recvcounts[],
const int displs[], const Datatype& recvtype, int root) const
void Intracomm::Scatter(const void* sendbuf, int sendcount,
const Datatype& sendtype, void* recvbuf, int recvcount,
const Datatype& recvtype, int root) const
void Intracomm::Scatterv(const void* sendbuf, const int sendcounts[],
const int displs[], const Datatype& sendtype, void* recvbuf,
int recvcount, const Datatype& recvtype, int root) const
void Intracomm::Allgather(const void* sendbuf, int sendcount,
const Datatype& sendtype, void* recvbuf, int recvcount,
const Datatype& recvtype) const
void Intracomm::Allgatherv(const void* sendbuf, int sendcount,
const Datatype& sendtype, void* recvbuf, const int recvcounts[],
const int displs[], const Datatype& recvtype) const
void Intracomm::Alltoall(const void* sendbuf, int sendcount,
const Datatype& sendtype, void* recvbuf, int recvcount,
const Datatype& recvtype) const
void Intracomm::Alltoallv(const void* sendbuf, const int sendcounts[],
const int sdispls[], const Datatype& sendtype, void* recvbuf,
const int recvcounts[], const int rdispls[], const Datatype& recvtype) const
void Intracomm::Reduce(const void* sendbuf, void* recvbuf, int count,
const Datatype& datatype, const Op& op, int root) const
void Op::Init(User_function* function, bool commute)
void Op::Free()
void Intracomm::Allreduce(const void* sendbuf, void* recvbuf,
int count, const Datatype& datatype, const Op& op) const
void Intracomm::Reduce_scatter(const void* sendbuf, void* recvbuf,
int recvcounts[], const Datatype& datatype, const Op& op) const
void Intracomm::Scan(const void* sendbuf, void* recvbuf,
int count, const Datatype& datatype, const Op& op) const
};
B6 Привязки для групп, контекстов и коммуникаторов в языке С++
По синтаксическим и семантическим причинам функции Dup() в списке ниже не виртуальные. Синтаксически каждая из них обязана иметь различные типы возвращения.
namespace MPI {
int Group::Get_size() const
int Group::Get_rank() const
static void Group::Translate_ranks (const Group& group1, int n,
const int ranks1[], const Group& group2, int ranks2[])
static int Group::Compare(const Group& group1, const Group& group2)
Group Comm::Get_group() const
static Group Group::Union(const Group& group1, const Group& group2)
static Group Group::Intersect(const Group& group1, const Group& group2)
static Group Group::Difference(const Group& group1, const Group& group2)
Group Group::Incl(int n, const int ranks[]) const
Group Group::Excl(int n, const int ranks[]) const
Group Group::Range_incl(int n, const int ranges[][3]) const
Group Group::Range_excl(int n, const int ranges[][3]) const
void Group::Free()
int Comm::Get_size() const
int Comm::Get_rank() const
static int Comm::Compare(const Comm& comm1, const Comm& comm2)
Intracomm Intracomm::Dup() const
Intercomm Intercomm::Dup() const
Cartcomm Cartcomm::Dup() const
Graphcomm Graphcomm::Dup() const
Comm& Comm::Clone() const = 0
Intracomm& Intracomm::Clone() const
Intercomm& Intercomm::Clone() const
Cartcomm& Cartcomm::Clone() const
Graphcomm& Graphcomm::Clone() const
Intracomm Intracomm::Create(const Group& group) const
Intracomm Intracomm::Split(int color, int key) const
void Comm::Free()
bool Comm::Is_inter() const
int Intercomm::Get_remote_size() const
Group Intercomm::Get_remote_group() const
Intercomm Intracomm::Create_intercomm(int local_leader,
const Comm& peer_comm, int remote_leader, int tag) const
Intracomm Intercomm::Merge(bool high) const
};
B7 Привязки для топологий процессов в языке С++
namespace MPI {
Cartcomm Intracomm::Create_cart(int ndims, const int dims[],
const bool periods[], bool reorder) const
void Compute_dims(int nnodes, int ndims, int dims[])
Graphcomm Intracomm::Create_graph(int nnodes, const int index[],
const int edges[], bool reorder) const
int Comm::Get_topology() const
void Graphcomm::Get_dims(int nnodes[], int nedges[]) const
void Graphcomm::Get_topo(int maxindex, int maxedges, int index[],
int edges[]) const
int Cartcomm::Get_dim() const
void Cartcomm::Get_topo(int maxdims, int dims[], bool periods[], int coords[])
const
int Cartcomm::Get_cart_rank(const int coords[]) const
void Cartcomm::Get_coords(int rank, int maxdims, int coords[]) const
int Graphcomm::Get_neighbors_count(int rank) const
void Graphcomm::Get_neighbors(int rank, int maxneighbors, int neighbors[]) const
void Cartcomm::Shift(int direction, int disp, int& rank_source, int& rank_dest)
const
Cartcomm Cartcomm::Sub(const bool remain_dims[]) const
int Cartcomm::Map(int ndims, const int dims[], const bool periods[]) const
int Graphcomm::Map(int nnodes, const int index[], const int edges[]) const
};
B8 Привязки для запросов среды в языке С++
namespace MPI {
void Get_processor_name(char* name, int& resultlen)
void Errhandler::Free()
void Get_error_string(int errorcode, char* name, int& resultlen)
int Get_error_class(int errorcode)
double Wtime()
double Wtick()
void Init(int& argc, char**& argv)
void Init()
void Finalize()
bool Is_initialized()
void Comm::Abort(int errorcode)
};
B9 Привязки для профилирования в языке С++
namespace MPI{
void Pcontrol(const int level, ...)
};
B10 Привязки для доступа к статусу в языке С++
namespace MPI{
int Status::Get_source() const
void Status::Set_source(int source)
int Status::Get_tag() const
void Status::Set_tag(int tag)
int Status::Get_error() const
void Status::Set_error(int error)
};
B11 Привязки для новых функций MPI 1.2 в языке С++
namespace MPI{
void Get_version(int& version, int& subversion);
};
B12 Привязки для исключений в языке С++
namespace MPI{
Exception::Exception(int error_code);
int Exception::Get_error_code() const;
int Exception::Get_error_class() const;
const char* Exception::Get_error_string() const;
};
B13 Привязки для всех MPI классов в языке С++
Язык С++ требует, чтобы классы имели четыре специальные функции: конструктор, функцию копирования, деструктор и оператор присваивания. Привязки для этих функций представлены ниже. Два конструктора не являются виртуальными.
B13.1 Создание/Удаление
namespace MPI {
<CLASS>::<CLASS>()
<CLASS>::~<CLASS>()
};
B13.2 Копирование/присваивание
namespace MPI {
<CLASS>::<CLASS>(const <CLASS>& data)
<CLASS>& <CLASS>::operator=(const <CLASS>& data)
};
B13.3 Сравнение
Поскольку экземпляры статуса не являются дескрипторами
для функций более низкого уровня, функции
operator==()
и operator!=()
не определены как статусный класс.
namespace MPI {
bool <CLASS>::operator==(const <CLASS>& data) const
bool <CLASS>::operator!=(const <CLASS>& data) const
};
B13.4 Межязыковое взаимодействие
Поскольку не имеется никаких С++ объектов MPI::STATUS_IGNORE
и
МPI::STATUSES_IGNORE
, результат продвижения Си или ФОРТРАН дескрипторов (MPI_STATUS_IGNORE and MPI_STATUSES_IGNORE)
является
неопределенным .
namespace MPI {
<CLASS>& <CLASS>::operator=(const MPI_<CLASS>& data)
<CLASS>::<CLASS>(const MPI_<CLASS>& data)
<CLASS>::operator MPI_<CLASS>() const
};
B13.5 Перекрестные ссылки для названий функций
Поскольку некоторые привязки в языке С++ слегка отличаются по названию от соответствующих привязок в языках Си и ФОРТРАН в этом разделе каждое нейтральное по отношению к языку имя сопоставляется c привязкой для С++.
Для краткости префикс ``MPI::'' предполагается для всех имен классов.
Для устаревших имен используется слово <нет> в графе "Имя", чтобы указать, что эта функция реализована с новым именем.
Если в графе "Возвращаемое значение" указано значение не void, данное имя соответствует параметру в языковонейтральном описании.
Таблицы ссылок представлены на следующих страницах.
=
table
tabular
|p170pt|p50pt|p90pt|p90pt|
MPI Функция | C++ класс | Имя | Возвращаемое значение |
---|---|---|---|
MPI_ERROR_CLASS | Get_error_class | int errorclass | |
MPI_ERROR_STRING | Get_error_string | void | |
MPI_FINALIZE | Finalize | void | |
MPI_GATHERV | Intracomm | Gatherv | void |
MPI_GATHER | Intracomm | Gather | void |
MPI_GET_COUNT | Status | Get_count | int count |
MPI_GET_ELEMENTS | Status | Get_elements | int count |
MPI_GET_PROCESSOR_NAME | Get_processor_name | void | |
MPI_GRAPHDIMS_GET | Graphcomm | Get_dims | void |
MPI_GRAPH_CREATE | Intracomm | Create_graph | Graphcomm newcomm |
MPI_GRAPH_GET | Graphcomm | Get_topo | void |
MPI_GRAPH_MAP | Graphcomm | Map | int newrank |
MPI_GRAPH_NEIGHBORS_COUNT | Graphcomm | Get_neighbors_count | int nneighbors |
MPI_GRAPH_NEIGHBORS | Graphcomm | Get_neighbors | void |
MPI_GROUP_COMPARE | Group | static Compare | int result |
MPI_GROUP_DIFFERENCE | Group | static Difference | Group newgroup |
MPI_GROUP_EXCL | Group | Excl | Group newgroup |
MPI_GROUP_FREE | Group | Free | void |
MPI_GROUP_INCL | Group | Incl | Group newgroup |
MPI_GROUP_INTERSECTION | Group | static Intersect | Group newgroup |
MPI_GROUP_RANGE_EXCL | Group | Range_excl | Group newgroup |
MPI_GROUP_RANGE_INCL | Group | Range_incl | Group newgroup |
MPI_GROUP_RANK | Group | Get_rank | int rank |
MPI_GROUP_SIZE | Group | Get_size | int size |
MPI_GROUP_TRANSLATE_RANKS | Group | static Translate_ranks | void |
MPI_GROUP_UNION | Group | static Union | Group newgroup |
MPI_IBSEND | Comm | Ibsend | Request request |
MPI_INITIALIZED | Is_initialized | bool flag | |
MPI_INIT | Init | void | |
MPI_INTERCOMM_CREATE | Intracomm | Create_intercomm | Intercomm newcomm |
MPI_INTERCOMM_MERGE | Intercomm | Merge | Intracomm newcomm |
MPI_IPROBE | Comm | Iprobe | bool flag |
MPI_IRECV | Comm | Irecv | Request request |
MPI_IRSEND | Comm | Irsend | Request request |
MPI_ISEND | Comm | Isend | Request request |
MPI_ISSEND | Comm | Issend | Request request |
MPI_KEYVAL_CREATE | <нет> | ||
MPI_KEYVAL_FREE | <нет> | ||
MPI_OP_CREATE | Op | Init | void |
MPI_OP_FREE | Op | Free | void |
MPI_PACK_SIZE | Datatype | Pack_size | int size |
MPI_PACK | Datatype | Pack | void |
MPI_PCONTROL | Pcontrol | void | |
MPI_PROBE | Comm | Probe | void |
MPI_RECV_INIT | Comm | Recv_init | Prequest request |
MPI_RECV | Comm | Recv | void |
MPI_REDUCE_SCATTER | Intracomm | Reduce_scatter | void |
MPI_REDUCE | Intracomm | Reduce | void |
MPI_REQUEST_FREE | Request | Free | void |
MPI Функция | C++ класс | Имя | Возвращаемое значение |
---|---|---|---|
MPI_RSEND_INIT | Comm | Rsend_init | Prequest request |
MPI_RSEND | Comm | Rsend | void |
MPI_SCAN | Intracomm | Scan | void |
MPI_SCATTERV | Intracomm | Scatterv | void |
MPI_SCATTER | Intracomm | Scatter | void |
MPI_SENDRECV_REPLACE | Comm | Sendrecv_replace | void |
MPI_SENDRECV | Comm | Sendrecv | void |
MPI_SEND_INIT | Comm | Send_init | Prequest request |
MPI_SEND | Comm | Send | void |
MPI_SSEND_INIT | Comm | Ssend_init | Prequest request |
MPI_SSEND | Comm | Ssend | void |
MPI_STARTALL | Prequest | static Startall | void |
MPI_START | Prequest | Start | void |
MPI_TESTALL | Request | static Testall | bool flag |
MPI_TESTANY | Request | static Testany | bool flag |
MPI_TESTSOME | Request | static Testsome | int outcount |
MPI_TEST_CANCELLED | Status | Is_cancelled | bool flag |
MPI_TEST | Request | Test | bool flag |
MPI_TOPO_TEST | Comm | Get_topo | int status |
MPI_TYPE_COMMIT | Datatype | Commit | void |
MPI_TYPE_CONTIGUOUS | Datatype | Create_contiguous | Datatype |
MPI_TYPE_EXTENT | <нет> | ||
MPI_TYPE_FREE | Datatype | Free | void |
MPI_TYPE_HINDEXED | <нет> | ||
MPI_TYPE_HVECTOR | <нет> | ||
MPI_TYPE_INDEXED | Datatype | Create_indexed | Datatype |
MPI_TYPE_LB | <нет> | ||
MPI_TYPE_SIZE | Datatype | Get_size | int |
MPI_TYPE_STRUCT | <нет> | ||
MPI_TYPE_UB | <нет> | ||
MPI_TYPE_VECTOR | Datatype | Create_vector | Datatype |
MPI_UNPACK | Datatype | Unpack | void |
MPI_WAITALL | Request | static Waitall | void |
MPI_WAITANY | Request | static Waitany | int index |
MPI_WAITSOME | Request | static Waitsome | int outcount |
MPI_WAIT | Request | Wait | void |
MPI_WTICK | Wtick | double wtick | |
MPI_WTIME | Wtime | double wtime |