1<mpi2> 2# A.8.1 Miscellany 3void* MPI::Alloc_mem(MPI::Aint size, const MPI::Info& info) 4static MPI::Errhandler MPI::Comm::Create_errhandler(MPI::Comm::Errhandler_fn* function) 5MPI::Errhandler MPI::Comm::Get_errhandler() const 6void MPI::Comm::Set_errhandler(const MPI::Errhandler& errhandler) 7MPI::Datatype MPI::Datatype::Create_darray(int size, int rank, int ndims, const int array_of_gsizes[], const int array_of_distribs[], const int array_of_dargs[], const int array_of_psizes[], int order) const 8MPI::Datatype MPI::Datatype::Create_hindexed(int count, const int array_of_blocklengths[], const MPI::Aint array_of_displacements[]) const 9MPI::Datatype MPI::Datatype::Create_hvector(int count, int blocklength, MPI::Aint stride) const 10MPI::Datatype MPI::Datatype::Create_indexed_block( int count, int blocklength, const int array_of_displacements[]) const 11static MPI::Datatype MPI::Datatype::Create_struct(int count, const int array_of_blocklengths[], const MPI::Aint array_of_displacements[], const MPI::Datatype array_of_types[]) 12MPI::Datatype MPI::Datatype::Create_subarray(int ndims, const int array_of_sizes[], const int array_of_subsizes[], const int array_of_starts[], int order) const 13void MPI::Datatype::Get_extent(MPI::Aint& lb, MPI::Aint& extent) const 14void MPI::Datatype::Get_true_extent(MPI::Aint& true_lb, MPI::Aint& true_extent) const 15void MPI::Datatype::Pack_external(const char* datarep, const void* inbuf, int incount, void* outbuf, MPI::Aint outsize, MPI::Aint& position) const 16MPI::Aint MPI::Datatype::Pack_external_size(const char* datarep, int incount) const 17MPI::Datatype MPI::Datatype::Resized(const MPI::Aint lb, const MPI::Aint extent) const 18void MPI::Datatype::Unpack_external(const char* datarep, const void* inbuf, MPI::Aint insize, MPI::Aint& position, void* outbuf, int outcount) const 19static MPI::Errhandler MPI::File::Create_errhandler(MPI::File::Errhandler_fn* function) 20MPI::Errhandler MPI::File::Get_errhandler() const 21void MPI::File::Set_errhandler(const MPI::Errhandler& errhandler) 22void MPI::Free_mem(void *base) 23MPI::Aint MPI::Get_address(void* location) 24static MPI::Info MPI::Info::Create() 25void MPI::Info::Delete(const char* key) 26MPI::Info MPI::Info::Dup() const 27void MPI::Info::Free() 28bool MPI::Info::Get(const char* key, int valuelen, char* value) const 29int MPI::Info::Get_nkeys() const 30void MPI::Info::Get_nthkey(int n, char* key) const 31bool MPI::Info::Get_valuelen(const char* key, int& valuelen) const 32void MPI::Info::Set(const char* key, const char* value) 33bool MPI::Is_finalized() 34bool MPI::Request::Get_status(MPI::Status& status) const 35bool MPI::Request::Get_status() const 36static MPI::Errhandler MPI::Win::Create_errhandler(MPI::Win::Errhandler_fn* function) 37MPI::Errhandler MPI::Win::Get_errhandler() const 38void MPI::Win::Set_errhandler(const MPI::Errhandler& errhandler) 39# A.8.2 Process creation 40void MPI::Close_port(const char* port_name) 41void MPI::Comm::Disconnect() 42static MPI::Intercomm MPI::Comm::Get_parent() 43static MPI::Intercomm MPI::Comm::Join(const int fd) 44MPI::Intercomm MPI::Intracomm::Accept(const char* port_name, const MPI::Info& info, int root) const 45MPI::Intercomm MPI::Intracomm::Connect(const char* port_name, const MPI::Info& info, int root) const 46MPI::Intercomm MPI::Intracomm::Spawn(const char* command, const char* argv[], int maxprocs, const MPI::Info& info, int root) const 47MPI::Intercomm MPI::Intracomm::Spawn(const char* command, const char* argv[], int maxprocs, const MPI::Info& info, int root, int array_of_errcodes[]) const 48MPI::Intercomm MPI::Intracomm::Spawn_multiple(int count, const char* array_of_commands[], const char** array_of_argv[], const int array_of_maxprocs[], const MPI::Info array_of_info[], int root) 49MPI::Intercomm MPI::Intracomm::Spawn_multiple(int count, const char* array_of_commands[], const char** array_of_argv[], const int array_of_maxprocs[], const MPI::Info array_of_info[], int root, int array_of_errcodes[]) 50void MPI::Lookup_name(const char* service_name, const MPI::Info& info, char* port_name) 51void MPI::Open_port(const MPI::Info& info, char* port_name) 52void MPI::Publish_name(const char* service_name, const MPI::Info& info, const char* port_name) 53void MPI::Unpublish_name(const char* service_name, const MPI::Info& info, const char* port_name) 54# A.8.3 One sided 55void MPI::Win::Accumulate(const void* origin_addr, int origin_count, const MPI::Datatype& origin_datatype, int target_rank, MPI::Aint target_disp, int target_count, const MPI::Datatype& target_datatype, const MPI::Op& op) const 56void MPI::Win::Complete() const 57static MPI::Win MPI::Win::Create(const void* base, MPI::Aint size, int disp_unit, const MPI::Info& info, const MPI::Intracomm& comm) 58void MPI::Win::Fence(int assert) const 59void MPI::Win::Free() 60void MPI::Win::Get(void *origin_addr, int origin_count, const MPI::Datatype& origin_datatype, int target_rank, MPI::Aint target_disp, int target_count, const MPI::Datatype& target_datatype) const 61MPI::Group MPI::Win::Get_group() const 62void MPI::Win::Lock(int lock_type, int rank, int assert) const 63void MPI::Win::Post(const MPI::Group& group, int assert) const 64void MPI::Win::Put(const void* origin_addr, int origin_count, const MPI::Datatype& origin_datatype, int target_rank, MPI::Aint target_disp, int target_count, const MPI::Datatype& target_datatype) const 65void MPI::Win::Start(const MPI::Group& group, int assert) const 66bool MPI::Win::Test() const 67void MPI::Win::Unlock(int rank) const 68void MPI::Win::Wait() const 69# A 8.4 Extended collective 70oid MPI::Comm::Allgather(const void* sendbuf, int sendcount, const MPI::Datatype& sendtype, void* recvbuf, int recvcount, const MPI::Datatype& recvtype) const = 0 71void MPI::Comm::Allgatherv(const void* sendbuf, int sendcount, const MPI::Datatype& sendtype, void* recvbuf, const int recvcounts[], const int displs[], const MPI::Datatype& recvtype) const = 0 72void MPI::Comm::Allreduce(const void* sendbuf, void* recvbuf, int count, const MPI::Datatype& datatype, const MPI::Op& op) const = 0 73void MPI::Comm::Alltoall(const void* sendbuf, int sendcount, const MPI::Datatype& sendtype, void* recvbuf, int recvcount, const MPI::Datatype& recvtype) const = 0 74void MPI::Comm::Alltoallv(const void* sendbuf, const int sendcounts[], const int sdispls[], const MPI::Datatype& sendtype, void* recvbuf, const int recvcounts[], const int rdispls[], const MPI::Datatype& recvtype) const = 0 75void MPI::Comm::Alltoallw(const void* sendbuf, const int sendcounts[], const int sdispls[], const MPI::Datatype sendtypes[], void* recvbuf, const int recvcounts[], const int rdispls[], const MPI::Datatype recvtypes[]) const = 0 76void MPI::Comm::Barrier() const = 0 77void MPI::Comm::Bcast(void* buffer, int count, const MPI::Datatype& datatype, int root) const = 0 78void MPI::Comm::Gather(const void* sendbuf, int sendcount, const MPI::Datatype& sendtype, void* recvbuf, int recvcount, const MPI::Datatype& recvtype, int root) const = 0 79void MPI::Comm::Gatherv(const void* sendbuf, int sendcount, const MPI::Datatype& sendtype, void* recvbuf, const int recvcounts[], const int displs[], const MPI::Datatype& recvtype, int root) const = 0 80void MPI::Comm::Reduce(const void* sendbuf, void* recvbuf, int count, const MPI::Datatype& datatype, const MPI::Op& op, int root) const = 0 81void MPI::Comm::Reduce_scatter(const void* sendbuf, void* recvbuf, int recvcounts[], const MPI::Datatype& datatype, const MPI::Op& op) const = 0 82void MPI::Comm::Scatter(const void* sendbuf, int sendcount, const MPI::Datatype& sendtype, void* recvbuf, int recvcount, const MPI::Datatype& recvtype, int root) const = 0 83void MPI::Comm::Scatterv(const void* sendbuf, const int sendcounts[], const int displs[], const MPI::Datatype& sendtype, void* recvbuf, int recvcount, const MPI::Datatype& recvtype, int root) const = 0 84MPI::Intercomm MPI::Intercomm::Create(const Group& group) const 85MPI::Intercomm MPI::Intercomm::Split(int color, int key) const 86#MPI::Intracomm MPI::Intracomm::Create(const Group& group) const 87void MPI::Intracomm::Exscan(const void* sendbuf, void* recvbuf, int count, const MPI::Datatype& datatype, const MPI::Op& op) const 88#MPI::Intracomm MPI::Intracomm::Split(int color, int key) const 89# A.8.5 External 90int MPI::Add_error_class() 91int MPI::Add_error_code(int errorclass) 92void MPI::Add_error_string(int errorcode, const char* string) 93void MPI::Comm::Call_errhandler(int errorcode) const 94static int MPI::Comm::Create_keyval(MPI::Comm::Copy_attr_function* comm_copy_attr_fn, MPI::Comm::Delete_attr_function* comm_delete_attr_fn, void* extra_state) 95void MPI::Comm::Delete_attr(int comm_keyval) 96static void MPI::Comm::Free_keyval(int& comm_keyval) 97bool MPI::Comm::Get_attr(int comm_keyval, void* attribute_val) const 98void MPI::Comm::Get_name(char* comm_name, int& resultlen) const 99void MPI::Comm::Set_attr(int comm_keyval, const void* attribute_val) const 100void MPI::Comm::Set_name(const char* comm_name) 101static int MPI::Datatype::Create_keyval(MPI::Datatype::Copy_attr_function* type_copy_attr_fn, MPI::Datatype::Delete_attr_function* type_delete_attr_fn, void* extra_state) 102void MPI::Datatype::Delete_attr(int type_keyval) 103MPI::Datatype MPI::Datatype::Dup() const 104static void MPI::Datatype::Free_keyval(int& type_keyval) 105bool MPI::Datatype::Get_attr(int type_keyval, void* attribute_val) const 106void MPI::Datatype::Get_contents(int max_integers, int max_addresses, int max_datatypes, int array_of_integers[], MPI::Aint array_of_addresses[], MPI::Datatype array_of_datatypes[]) const 107void MPI::Datatype::Get_envelope(int& num_integers, int& num_addresses, int& num_datatypes, int& combiner) const 108void MPI::Datatype::Get_name(char* type_name, int& resultlen) const 109void MPI::Datatype::Set_attr(int type_keyval, const void* attribute_val) 110void MPI::Datatype::Set_name(const char* type_name) 111void MPI::File::Call_errhandler(int errorcode) const 112void MPI::Grequest::Complete() 113static MPI::Grequest MPI::Grequest::Start(const MPI::Grequest::Query_function query_fn, const MPI::Grequest::Free_function free_fn, const MPI::Grequest::Cancel_function cancel_fn, void *extra_state) 114int MPI::Init_thread(int required) 115int MPI::Init_thread(int& argc, char**& argv, int required) 116bool MPI::Is_thread_main() 117int MPI::Query_thread() 118void MPI::Status::Set_cancelled(bool flag) 119void MPI::Status::Set_elements(const MPI::Datatype& datatype, int count) 120void MPI::Win::Call_errhandler(int errorcode) const 121static int MPI::Win::Create_keyval(MPI::Win::Copy_attr_function* win_copy_attr_fn, MPI::Win::Delete_attr_function* win_delete_attr_fn, void* extra_state) 122void MPI::Win::Delete_attr(int win_keyval) 123static void MPI::Win::Free_keyval(int& win_keyval) 124# Get_attr for Win had the wrong prototype in the 2.0 standard (see the errata) 125bool MPI::Win::Get_attr(int win_keyval, void* attribute_val) const 126void MPI::Win::Get_name(char* win_name, int& resultlen) const 127void MPI::Win::Set_attr(int win_keyval, const void* attribute_val) 128void MPI::Win::Set_name(const char* win_name) 129# A8.6 I/O 130void MPI::File::Close() 131static void MPI::File::Delete(const char* filename, const MPI::Info& info) 132int MPI::File::Get_amode() const 133bool MPI::File::Get_atomicity() const 134MPI::Offset MPI::File::Get_byte_offset(const MPI::Offset disp) const 135MPI::Group MPI::File::Get_group() const 136MPI::Info MPI::File::Get_info() const 137MPI::Offset MPI::File::Get_position() const 138MPI::Offset MPI::File::Get_position_shared() const 139MPI::Offset MPI::File::Get_size() const 140MPI::Aint MPI::File::Get_type_extent(const MPI::Datatype& datatype) const 141void MPI::File::Get_view(MPI::Offset& disp, MPI::Datatype& etype, MPI::Datatype& filetype, char* datarep) const 142MPI::Request MPI::File::Iread(void* buf, int count, const MPI::Datatype& datatype) 143MPI::Request MPI::File::Iread_at(MPI::Offset offset, void* buf, int count, const MPI::Datatype& datatype) 144MPI::Request MPI::File::Iread_shared(void* buf, int count, const MPI::Datatype& datatype) 145MPI::Request MPI::File::Iwrite(const void* buf, int count, const MPI::Datatype& datatype) 146MPI::Request MPI::File::Iwrite_at(MPI::Offset offset, const void* buf, int count, const MPI::Datatype& datatype) 147MPI::Request MPI::File::Iwrite_shared(const void* buf, int count, const MPI::Datatype& datatype) 148static MPI::File MPI::File::Open(const MPI::Intracomm& comm, const char* filename, int amode, const MPI::Info& info) 149void MPI::File::Preallocate(MPI::Offset size) 150void MPI::File::Read(void* buf, int count, const MPI::Datatype& datatype, MPI::Status& status) 151void MPI::File::Read(void* buf, int count, const MPI::Datatype& datatype) 152void MPI::File::Read_all(void* buf, int count, const MPI::Datatype& datatype, MPI::Status& status) 153void MPI::File::Read_all(void* buf, int count, const MPI::Datatype& datatype) 154void MPI::File::Read_all_begin(void* buf, int count, const MPI::Datatype& datatype) 155void MPI::File::Read_all_end(void* buf, MPI::Status& status) 156void MPI::File::Read_all_end(void* buf) 157void MPI::File::Read_at(MPI::Offset offset, void* buf, int count, const MPI::Datatype& datatype, MPI::Status& status) 158void MPI::File::Read_at(MPI::Offset offset, void* buf, int count, const MPI::Datatype& datatype) 159void MPI::File::Read_at_all(MPI::Offset offset, void* buf, int count, const MPI::Datatype& datatype, MPI::Status& status) 160void MPI::File::Read_at_all(MPI::Offset offset, void* buf, int count, const MPI::Datatype& datatype) 161void MPI::File::Read_at_all_begin(MPI::Offset offset, void* buf, int count, const MPI::Datatype& datatype) 162void MPI::File::Read_at_all_end(void* buf, MPI::Status& status) 163void MPI::File::Read_at_all_end(void* buf) 164void MPI::File::Read_ordered(void* buf, int count, const MPI::Datatype& datatype, MPI::Status& status) 165void MPI::File::Read_ordered(void* buf, int count, const MPI::Datatype& datatype) 166void MPI::File::Read_ordered_begin(void* buf, int count, const MPI::Datatype& datatype) 167void MPI::File::Read_ordered_end(void* buf, MPI::Status& status) 168void MPI::File::Read_ordered_end(void* buf) 169void MPI::File::Read_shared(void* buf, int count, const MPI::Datatype& datatype, MPI::Status& status) 170void MPI::File::Read_shared(void* buf, int count, const MPI::Datatype& datatype) 171void MPI::File::Seek(MPI::Offset offset, int whence) 172void MPI::File::Seek_shared(MPI::Offset offset, int whence) 173void MPI::File::Set_atomicity(bool flag) 174void MPI::File::Set_info(const MPI::Info& info) 175void MPI::File::Set_size(MPI::Offset size) 176void MPI::File::Set_view(MPI::Offset disp, const MPI::Datatype& etype, const MPI::Datatype& filetype, const char* datarep, const MPI::Info& info) 177void MPI::File::Sync() 178void MPI::File::Write(const void* buf, int count, const MPI::Datatype& datatype, MPI::Status& status) 179void MPI::File::Write(const void* buf, int count, const MPI::Datatype& datatype) 180void MPI::File::Write_all(const void* buf, int count, const MPI::Datatype& datatype, MPI::Status& status) 181void MPI::File::Write_all(const void* buf, int count, const MPI::Datatype& datatype) 182void MPI::File::Write_all_begin(const void* buf, int count, const MPI::Datatype& datatype) 183void MPI::File::Write_all_end(const void* buf, MPI::Status& status) 184void MPI::File::Write_all_end(const void* buf) 185void MPI::File::Write_at(MPI::Offset offset, const void* buf, int count, const MPI::Datatype& datatype, MPI::Status& status) 186void MPI::File::Write_at(MPI::Offset offset, const void* buf, int count, const MPI::Datatype& datatype) 187void MPI::File::Write_at_all(MPI::Offset offset, const void* buf, int count, const MPI::Datatype& datatype, MPI::Status& status) 188void MPI::File::Write_at_all(MPI::Offset offset, const void* buf, int count, const MPI::Datatype& datatype) 189void MPI::File::Write_at_all_begin(MPI::Offset offset, const void* buf, int count, const MPI::Datatype& datatype) 190void MPI::File::Write_at_all_end(const void* buf, MPI::Status& status) 191void MPI::File::Write_at_all_end(const void* buf) 192void MPI::File::Write_ordered(const void* buf, int count, const MPI::Datatype& datatype, MPI::Status& status) 193void MPI::File::Write_ordered(const void* buf, int count, const MPI::Datatype& datatype) 194void MPI::File::Write_ordered_begin(const void* buf, int count, const MPI::Datatype& datatype) 195void MPI::File::Write_ordered_end(const void* buf, MPI::Status& status) 196void MPI::File::Write_ordered_end(const void* buf) 197void MPI::File::Write_shared(const void* buf, int count, const MPI::Datatype& datatype, MPI::Status& status) 198void MPI::File::Write_shared(const void* buf, int count, const MPI::Datatype& datatype) 199void MPI::Register_datarep(const char* datarep, MPI::Datarep_conversion_function* read_conversion_fn, MPI::Datarep_conversion_function* write_conversion_fn, MPI::Datarep_extent_function* dtype_file_extent_fn, void* extra_state) 200# A8.7 Language bindings 201static MPI::Datatype MPI::Datatype::Create_f90_complex(int p, int r) 202static MPI::Datatype MPI::Datatype::Create_f90_integer(int r) 203static MPI::Datatype MPI::Datatype::Create_f90_real(int p, int r) 204static MPI::Datatype MPI::Datatype::Match_size(int typeclass, int size) 205 206# B.4 MPI-1 pt-2-pt 207<mpi1> 208void Comm::Send(const void* buf, int count, const Datatype& datatype, int dest, int tag) const 209void Comm::Recv(void* buf, int count, const Datatype& datatype, int source, int tag, Status& status) const 210void Comm::Recv(void* buf, int count, const Datatype& datatype, int source, int tag) const 211int Status::Get_count(const Datatype& datatype) const 212void Comm::Bsend(const void* buf, int count, const Datatype& datatype, int dest, int tag) const 213void Comm::Ssend(const void* buf, int count, const Datatype& datatype, int dest, int tag) const 214void Comm::Rsend(const void* buf, int count, const Datatype& datatype, int dest, int tag) const 215 216void Attach_buffer(void* buffer, int size) 217int Detach_buffer(void*& buffer) 218 219 220Request Comm::Isend(const void* buf, int count, const Datatype& datatype, int dest, int tag) const 221Request Comm::Ibsend(const void* buf, int count, const Datatype& datatype, int dest, int tag) const 222Request Comm::Issend(const void* buf, int count, const Datatype& datatype, int dest, int tag) const 223Request Comm::Irsend(const void* buf, int count, const Datatype& datatype, int dest, int tag) const 224Request Comm::Irecv(void* buf, int count, const Datatype& datatype, int source, int tag) const 225 226 227void Request::Wait(Status& status) 228void Request::Wait() 229bool Request::Test(Status& status) 230bool Request::Test() 231void Request::Free() 232static int Request::Waitany(int count, Request array_of_requests[], Status& status) 233static int Request::Waitany(int count, Request array_of_requests[]) 234static bool Request::Testany(int count, Request array_of_requests[], int& index, Status& status) 235static bool Request::Testany(int count, Request array_of_requests[], int& index) 236static void Request::Waitall(int count, Request array_of_requests[], Status array_of_statuses[]) 237static void Request::Waitall(int count, Request array_of_requests[]) 238static bool Request::Testall(int count, Request array_of_requests[], Status array_of_statuses[]) 239static bool Request::Testall(int count, Request array_of_requests[]) 240static int Request::Waitsome(int incount, Request array_of_requests[], int array_of_indices[], Status array_of_statuses[]) 241static int Request::Waitsome(int incount, Request array_of_requests[], int array_of_indices[]) 242static int Request::Testsome(int incount, Request array_of_requests[], int array_of_indices[], Status array_of_statuses[]) 243static int Request::Testsome(int incount, Request array_of_requests[], int array_of_indices[]) 244 245 246bool Comm::Iprobe(int source, int tag, Status& status) const 247bool Comm::Iprobe(int source, int tag) const 248void Comm::Probe(int source, int tag, Status& status) const 249void Comm::Probe(int source, int tag) const 250 251 252void Request::Cancel() const 253bool Status::Is_cancelled() const 254 255 256Prequest Comm::Send_init(const void* buf, int count, const Datatype& datatype, int dest, int tag) const 257Prequest Comm::Bsend_init(const void* buf, int count, const Datatype& datatype, int dest, int tag) const 258Prequest Comm::Ssend_init(const void* buf, int count, const Datatype& datatype, int dest, int tag) const 259Prequest Comm::Rsend_init(const void* buf, int count, const Datatype& datatype, int dest, int tag) const 260Prequest Comm::Recv_init(void* buf, int count, const Datatype& datatype, int source, int tag) const 261void Prequest::Start() 262static void Prequest::Startall(int count, Prequest array_of_requests[]) 263 264 265void 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 266void 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 267void Comm::Sendrecv_replace(void* buf, int count, const Datatype& datatype, int dest, int sendtag, int source, int recvtag, Status& status) const 268void Comm::Sendrecv_replace(void* buf, int count, const Datatype& datatype, int dest, int sendtag, int source, int recvtag) const 269 270 271Datatype Datatype::Create_contiguous(int count) const 272Datatype Datatype::Create_vector(int count, int blocklength, int stride) const 273 274 275Datatype Datatype::Create_indexed(int count, const int array_of_blocklengths[], const int array_of_displacements[]) const 276 277 278 279int Datatype::Get_size() const 280 281 282void Datatype::Commit() 283void Datatype::Free() 284int Status::Get_elements(const Datatype& datatype) const 285void Datatype::Pack(const void* inbuf, int incount, void *outbuf, int outsize, int& position, const Comm &comm) const 286void Datatype::Unpack(const void* inbuf, int insize, void *outbuf, int outcount, int& position, const Comm& comm) const 287int Datatype::Pack_size(int incount, const Comm& comm) const 288 289# B.5 MPI-1 Collective 290void Intracomm::Barrier() const 291void Intracomm::Bcast(void* buffer, int count, const Datatype& datatype, int root) const 292void Intracomm::Gather(const void* sendbuf, int sendcount, const Datatype& sendtype, void* recvbuf, int recvcount, const Datatype& recvtype, int root) const 293void Intracomm::Gatherv(const void* sendbuf, int sendcount, const Datatype& sendtype, void* recvbuf, const int recvcounts[], const int displs[], const Datatype& recvtype, int root) const 294void Intracomm::Scatter(const void* sendbuf, int sendcount, const Datatype& sendtype, void* recvbuf, int recvcount, const Datatype& recvtype, int root) const 295void Intracomm::Scatterv(const void* sendbuf, const int sendcounts[], const int displs[], const Datatype& sendtype, void* recvbuf, int recvcount, const Datatype& recvtype, int root) const 296void Intracomm::Allgather(const void* sendbuf, int sendcount, const Datatype& sendtype, void* recvbuf, int recvcount, const Datatype& recvtype) const 297void Intracomm::Allgatherv(const void* sendbuf, int sendcount, const Datatype& sendtype, void* recvbuf, const int recvcounts[], const int displs[], const Datatype& recvtype) const 298void Intracomm::Alltoall(const void* sendbuf, int sendcount, const Datatype& sendtype, void* recvbuf, int recvcount, const Datatype& recvtype) const 299void 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 300void Intracomm::Reduce(const void* sendbuf, void* recvbuf, int count, const Datatype& datatype, const Op& op, int root) const 301void Op::Init(User_function* function, bool commute) 302void Op::Free() 303void Intracomm::Allreduce(const void* sendbuf, void* recvbuf, int count, const Datatype& datatype, const Op& op) const 304void Intracomm::Reduce_scatter(const void* sendbuf, void* recvbuf, int recvcounts[], const Datatype& datatype, const Op& op) const 305void Intracomm::Scan(const void* sendbuf, void* recvbuf, int count, const Datatype& datatype, const Op& op) const 306 307# B.6 MPI-1 Groups, Contexts, and Communicators 308int Group::Get_size() const 309int Group::Get_rank() const 310 311 312static void Group::Translate_ranks (const Group& group1, int n, const int ranks1[], const Group& group2, int ranks2[]) 313static int Group::Compare(const Group& group1, const Group& group2) 314 315 316 317Group Comm::Get_group() const 318 319 320 321static Group Group::Union(const Group& group1, const Group& group2) 322static Group Group::Intersect(const Group& group1, const Group& group2) 323static Group Group::Difference(const Group& group1, const Group& group2) 324 325 326 327Group Group::Incl(int n, const int ranks[]) const 328Group Group::Excl(int n, const int ranks[]) const 329Group Group::Range_incl(int n, const int ranges[][3]) const 330Group Group::Range_excl(int n, const int ranges[][3]) const 331void Group::Free() 332int Comm::Get_size() const 333int Comm::Get_rank() const 334 335 336 337static int Comm::Compare(const Comm& comm1, const Comm& comm2) 338 339 340 341 342Intracomm Intracomm::Dup() const 343Intercomm Intercomm::Dup() const 344Cartcomm Cartcomm::Dup() const 345Graphcomm Graphcomm::Dup() const 346Comm& Comm::Clone() const = 0 347Intracomm& Intracomm::Clone() const 348Intercomm& Intercomm::Clone() const 349Cartcomm& Cartcomm::Clone() const 350Graphcomm& Graphcomm::Clone() const 351 352 353 354Intracomm Intracomm::Create(const Group& group) const 355Intracomm Intracomm::Split(int color, int key) const 356void Comm::Free() 357 358 359bool Comm::Is_inter() const 360int Intercomm::Get_remote_size() const 361Group Intercomm::Get_remote_group() const 362Intercomm Intracomm::Create_intercomm(int local_leader, const Comm& peer_comm, int remote_leader, int tag) const 363 364 365Intracomm Intercomm::Merge(bool high) const 366 367# B.7 MPI-1 Process topologies 368Cartcomm Intracomm::Create_cart(int ndims, const int dims[], const bool periods[], bool reorder) const 369void Compute_dims(int nnodes, int ndims, int dims[]) 370Graphcomm Intracomm::Create_graph(int nnodes, const int index[], const int edges[], bool reorder) const 371int Comm::Get_topology() const 372void Graphcomm::Get_dims(int nnodes[], int nedges[]) const 373void Graphcomm::Get_topo(int maxindex, int maxedges, int index[], int edges[]) const 374int Cartcomm::Get_dim() const 375void Cartcomm::Get_topo(int maxdims, int dims[], bool periods[], int coords[]) const 376int Cartcomm::Get_cart_rank(const int coords[]) const 377void Cartcomm::Get_coords(int rank, int maxdims, int coords[]) const 378int Graphcomm::Get_neighbors_count(int rank) const 379void Graphcomm::Get_neighbors(int rank, int maxneighbors, int neighbors[]) const 380void Cartcomm::Shift(int direction, int disp, int& rank_source, int& rank_dest) const 381Cartcomm Cartcomm::Sub(const bool remain_dims[]) const 382int Cartcomm::Map(int ndims, const int dims[], const bool periods[]) const 383int Graphcomm::Map(int nnodes, const int index[], const int edges[]) const 384 385# B.8 MPI-1 Environment 386void Get_processor_name(char* name, int& resultlen) 387void Errhandler::Free() 388void Get_error_string(int errorcode, char* name, int& resultlen) 389int Get_error_class(int errorcode) 390 391double Wtime() 392double Wtick() 393 394 395void Init(int& argc, char**& argv) 396void Init() 397void Finalize() 398bool Is_initialized() 399void Comm::Abort(int errorcode) 400 401 402# B.9 MPI-1 Profiling 403void Pcontrol(const int level, ...) 404 405# B.10 Status access 406 407int Status::Get_source() const 408void Status::Set_source(int source) 409int Status::Get_tag() const 410void Status::Set_tag(int tag) 411int Status::Get_error() const 412void Status::Set_error(int error) 413 414# B.11 MPI-1.2 415void Get_version(int& version, int& subversion) 416 417