📄 mpi.h
字号:
/* external */
IMPORT_MPI_API int MPI_Status_set_cancelled( MPI_Status *, int );
IMPORT_MPI_API int MPI_Status_set_elements( MPI_Status *, MPI_Datatype, int );
/*
* single sided communication
*/
/* Window calls */
IMPORT_MPI_API int MPI_Alloc_mem (MPI_Aint, MPI_Info, void *);
IMPORT_MPI_API int MPI_Free_mem (void *);
#define MPI_MALLOC_ALIGNMENT 64
/* malloc() / free() wrapper - but not inside the MPI library! */
#if (defined MPI_MALLOC_WRAP) && !(defined MPID_DEVICE_CODE) && !(defined MPIR_LIB_CODE)
void *_mpi_malloc(size_t len);
#define malloc(s) _mpi_malloc(s)
#define free(s) MPI_Free_mem(s)
/* default address alignment for wrapper functions */
#endif
IMPORT_MPI_API int MPI_Win_create (void *, MPI_Aint, int, MPI_Info, MPI_Comm, MPI_Win *);
IMPORT_MPI_API int MPI_Win_free (MPI_Win *);
IMPORT_MPI_API int MPI_Win_get_attr (MPI_Win, int, void *, int *);
IMPORT_MPI_API int MPI_Win_get_group (MPI_Win, MPI_Group *);
/* Communication Calls */
IMPORT_MPI_API int MPI_Put (void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, MPI_Win);
IMPORT_MPI_API int MPI_Get (void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, MPI_Win);
IMPORT_MPI_API int MPI_Accumulate (void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, MPI_Op, MPI_Win);
/* Synchronization Calls */
IMPORT_MPI_API int MPI_Win_fence (int, MPI_Win);
IMPORT_MPI_API int MPI_Win_start (MPI_Group, int, MPI_Win);
IMPORT_MPI_API int MPI_Win_complete (MPI_Win);
IMPORT_MPI_API int MPI_Win_post (MPI_Group, int, MPI_Win);
IMPORT_MPI_API int MPI_Win_wait (MPI_Win);
IMPORT_MPI_API int MPI_Win_test (MPI_Win, int *);
IMPORT_MPI_API int MPI_Win_lock (int, int, int, MPI_Win);
IMPORT_MPI_API int MPI_Win_unlock (int, MPI_Win);
/* Error handlers */
IMPORT_MPI_API int MPI_Win_create_errhandler ( MPI_Win_errhandler_fn *,
MPI_Errhandler *);
IMPORT_MPI_API int MPI_Win_set_errhandler (MPI_Win , MPI_Errhandler);
IMPORT_MPI_API int MPI_Win_get_errhandler (MPI_Win , MPI_Errhandler *);
#endif /* MPICH_SUPPRESS_PROTOTYPES */
/* Here are the bindings of the profiling routines */
#if !defined(MPI_BUILD_PROFILING)
IMPORT_MPI_API int PMPI_Send(void*, int, MPI_Datatype, int, int, MPI_Comm);
IMPORT_MPI_API int PMPI_Recv(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *);
IMPORT_MPI_API int PMPI_Get_count(MPI_Status *, MPI_Datatype, int *);
IMPORT_MPI_API int PMPI_Bsend(void*, int, MPI_Datatype, int, int, MPI_Comm);
IMPORT_MPI_API int PMPI_Ssend(void*, int, MPI_Datatype, int, int, MPI_Comm);
IMPORT_MPI_API int PMPI_Rsend(void*, int, MPI_Datatype, int, int, MPI_Comm);
IMPORT_MPI_API int PMPI_Buffer_attach( void* buffer, int);
IMPORT_MPI_API int PMPI_Buffer_detach( void* buffer, int*);
IMPORT_MPI_API int PMPI_Isend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
IMPORT_MPI_API int PMPI_Ibsend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
IMPORT_MPI_API int PMPI_Issend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
IMPORT_MPI_API int PMPI_Irsend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
IMPORT_MPI_API int PMPI_Irecv(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
IMPORT_MPI_API int PMPI_Wait(MPI_Request *, MPI_Status *);
IMPORT_MPI_API int PMPI_Test(MPI_Request *, int *flag, MPI_Status *);
IMPORT_MPI_API int PMPI_Request_free(MPI_Request *);
IMPORT_MPI_API int PMPI_Waitany(int, MPI_Request *, int *, MPI_Status *);
IMPORT_MPI_API int PMPI_Testany(int, MPI_Request *, int *, int *, MPI_Status *);
IMPORT_MPI_API int PMPI_Waitall(int, MPI_Request *, MPI_Status *);
IMPORT_MPI_API int PMPI_Testall(int, MPI_Request *, int *flag, MPI_Status *);
IMPORT_MPI_API int PMPI_Waitsome(int, MPI_Request *, int *, int *, MPI_Status *);
IMPORT_MPI_API int PMPI_Testsome(int, MPI_Request *, int *, int *, MPI_Status *);
IMPORT_MPI_API int PMPI_Iprobe(int, int, MPI_Comm, int *flag, MPI_Status *);
IMPORT_MPI_API int PMPI_Probe(int, int, MPI_Comm, MPI_Status *);
IMPORT_MPI_API int PMPI_Cancel(MPI_Request *);
IMPORT_MPI_API int PMPI_Test_cancelled(MPI_Status *, int *flag);
IMPORT_MPI_API int PMPI_Send_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
IMPORT_MPI_API int PMPI_Bsend_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
IMPORT_MPI_API int PMPI_Ssend_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
IMPORT_MPI_API int PMPI_Rsend_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
IMPORT_MPI_API int PMPI_Recv_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
IMPORT_MPI_API int PMPI_Start(MPI_Request *);
IMPORT_MPI_API int PMPI_Startall(int, MPI_Request *);
IMPORT_MPI_API int PMPI_Sendrecv(void *, int, MPI_Datatype, int, int, void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *);
IMPORT_MPI_API int PMPI_Sendrecv_replace(void*, int, MPI_Datatype, int, int, int, int, MPI_Comm, MPI_Status *);
IMPORT_MPI_API int PMPI_Type_contiguous(int, MPI_Datatype, MPI_Datatype *);
IMPORT_MPI_API int PMPI_Type_vector(int, int, int, MPI_Datatype, MPI_Datatype *);
IMPORT_MPI_API int PMPI_Type_hvector(int, int, MPI_Aint, MPI_Datatype, MPI_Datatype *);
IMPORT_MPI_API int PMPI_Type_indexed(int, int *, int *, MPI_Datatype, MPI_Datatype *);
IMPORT_MPI_API int PMPI_Type_hindexed(int, int *, MPI_Aint *, MPI_Datatype, MPI_Datatype *);
IMPORT_MPI_API int PMPI_Type_struct(int, int *, MPI_Aint *, MPI_Datatype *, MPI_Datatype *);
IMPORT_MPI_API int PMPI_Address(void*, MPI_Aint *);
IMPORT_MPI_API int PMPI_Type_extent(MPI_Datatype, MPI_Aint *);
/* See the 1.1 version of the Standard; I think that the standard is in
error; however, it is the standard */
/* IMPORT_MPI_API int PMPI_Type_size(MPI_Datatype, MPI_Aint *); */
IMPORT_MPI_API int PMPI_Type_size(MPI_Datatype, int *);
IMPORT_MPI_API int PMPI_Type_count(MPI_Datatype, int *);
IMPORT_MPI_API int PMPI_Type_lb(MPI_Datatype, MPI_Aint*);
IMPORT_MPI_API int PMPI_Type_ub(MPI_Datatype, MPI_Aint*);
IMPORT_MPI_API int PMPI_Type_commit(MPI_Datatype *);
IMPORT_MPI_API int PMPI_Type_free(MPI_Datatype *);
IMPORT_MPI_API int PMPI_Get_elements(MPI_Status *, MPI_Datatype, int *);
IMPORT_MPI_API int PMPI_Pack(void*, int, MPI_Datatype, void *, int, int *, MPI_Comm);
IMPORT_MPI_API int PMPI_Unpack(void*, int, int *, void *, int, MPI_Datatype, MPI_Comm);
IMPORT_MPI_API int PMPI_Pack_size(int, MPI_Datatype, MPI_Comm, int *);
IMPORT_MPI_API int PMPI_Barrier(MPI_Comm );
IMPORT_MPI_API int PMPI_Bcast(void* buffer, int, MPI_Datatype, int, MPI_Comm );
IMPORT_MPI_API int PMPI_Gather(void* , int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm);
IMPORT_MPI_API int PMPI_Gatherv(void* , int, MPI_Datatype, void*, int *, int *, MPI_Datatype, int, MPI_Comm);
IMPORT_MPI_API int PMPI_Scatter(void* , int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm);
IMPORT_MPI_API int PMPI_Scatterv(void* , int *, int *displs, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm);
IMPORT_MPI_API int PMPI_Allgather(void* , int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm);
IMPORT_MPI_API int PMPI_Allgatherv(void* , int, MPI_Datatype, void*, int *, int *, MPI_Datatype, MPI_Comm);
IMPORT_MPI_API int PMPI_Alltoall(void* , int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm);
IMPORT_MPI_API int PMPI_Alltoallv(void* , int *, int *, MPI_Datatype, void*, int *, int *, MPI_Datatype, MPI_Comm);
IMPORT_MPI_API int PMPI_Reduce(void* , void*, int, MPI_Datatype, MPI_Op, int, MPI_Comm);
IMPORT_MPI_API int PMPI_Op_create(MPI_User_function *, int, MPI_Op *);
IMPORT_MPI_API int PMPI_Op_free( MPI_Op *);
IMPORT_MPI_API int PMPI_Allreduce(void* , void*, int, MPI_Datatype, MPI_Op, MPI_Comm);
IMPORT_MPI_API int PMPI_Reduce_scatter(void* , void*, int *, MPI_Datatype, MPI_Op, MPI_Comm);
IMPORT_MPI_API int PMPI_Scan(void* , void*, int, MPI_Datatype, MPI_Op, MPI_Comm );
IMPORT_MPI_API int PMPI_Group_size(MPI_Group group, int *);
IMPORT_MPI_API int PMPI_Group_rank(MPI_Group group, int *);
IMPORT_MPI_API int PMPI_Group_translate_ranks (MPI_Group, int, int *, MPI_Group, int *);
IMPORT_MPI_API int PMPI_Group_compare(MPI_Group, MPI_Group, int *);
IMPORT_MPI_API int PMPI_Comm_group(MPI_Comm, MPI_Group *);
IMPORT_MPI_API int PMPI_Group_union(MPI_Group, MPI_Group, MPI_Group *);
IMPORT_MPI_API int PMPI_Group_intersection(MPI_Group, MPI_Group, MPI_Group *);
IMPORT_MPI_API int PMPI_Group_difference(MPI_Group, MPI_Group, MPI_Group *);
IMPORT_MPI_API int PMPI_Group_incl(MPI_Group group, int, int *, MPI_Group *);
IMPORT_MPI_API int PMPI_Group_excl(MPI_Group group, int, int *, MPI_Group *);
IMPORT_MPI_API int PMPI_Group_range_incl(MPI_Group group, int, int [][3], MPI_Group *);
IMPORT_MPI_API int PMPI_Group_range_excl(MPI_Group group, int, int [][3], MPI_Group *);
IMPORT_MPI_API int PMPI_Group_free(MPI_Group *);
IMPORT_MPI_API int PMPI_Comm_size(MPI_Comm, int *);
IMPORT_MPI_API int PMPI_Comm_rank(MPI_Comm, int *);
IMPORT_MPI_API int PMPI_Comm_compare(MPI_Comm, MPI_Comm, int *);
IMPORT_MPI_API int PMPI_Comm_dup(MPI_Comm, MPI_Comm *);
IMPORT_MPI_API int PMPI_Comm_create(MPI_Comm, MPI_Group, MPI_Comm *);
IMPORT_MPI_API int PMPI_Comm_split(MPI_Comm, int, int, MPI_Comm *);
IMPORT_MPI_API int PMPI_Comm_free(MPI_Comm *);
IMPORT_MPI_API int PMPI_Comm_test_inter(MPI_Comm, int *);
IMPORT_MPI_API int PMPI_Comm_remote_size(MPI_Comm, int *);
IMPORT_MPI_API int PMPI_Comm_remote_group(MPI_Comm, MPI_Group *);
IMPORT_MPI_API int PMPI_Intercomm_create(MPI_Comm, int, MPI_Comm, int, int, MPI_Comm *);
IMPORT_MPI_API int PMPI_Intercomm_merge(MPI_Comm, int, MPI_Comm *);
IMPORT_MPI_API int PMPI_Keyval_create(MPI_Copy_function *, MPI_Delete_function *, int *, void*);
IMPORT_MPI_API int PMPI_Keyval_free(int *);
IMPORT_MPI_API int PMPI_Attr_put(MPI_Comm, int, void*);
IMPORT_MPI_API int PMPI_Attr_get(MPI_Comm, int, void *, int *);
IMPORT_MPI_API int PMPI_Attr_delete(MPI_Comm, int);
IMPORT_MPI_API int PMPI_Topo_test(MPI_Comm, int *);
IMPORT_MPI_API int PMPI_Cart_create(MPI_Comm, int, int *, int *, int, MPI_Comm *);
IMPORT_MPI_API int PMPI_Dims_create(int, int, int *);
IMPORT_MPI_API int PMPI_Graph_create(MPI_Comm, int, int *, int *, int, MPI_Comm *);
IMPORT_MPI_API int PMPI_Graphdims_get(MPI_Comm, int *, int *);
IMPORT_MPI_API int PMPI_Graph_get(MPI_Comm, int, int, int *, int *);
IMPORT_MPI_API int PMPI_Cartdim_get(MPI_Comm, int *);
IMPORT_MPI_API int PMPI_Cart_get(MPI_Comm, int, int *, int *, int *);
IMPORT_MPI_API int PMPI_Cart_rank(MPI_Comm, int *, int *);
IMPORT_MPI_API int PMPI_Cart_coords(MPI_Comm, int, int, int *);
IMPORT_MPI_API int PMPI_Graph_neighbors_count(MPI_Comm, int, int *);
IMPORT_MPI_API int PMPI_Graph_neighbors(MPI_Comm, int, int, int *);
IMPORT_MPI_API int PMPI_Cart_shift(MPI_Comm, int, int, int *, int *);
IMPORT_MPI_API int PMPI_Cart_sub(MPI_Comm, int *, MPI_Comm *);
IMPORT_MPI_API int PMPI_Cart_map(MPI_Comm, int, int *, int *, int *);
IMPORT_MPI_API int PMPI_Graph_map(MPI_Comm, int, int *, int *, int *);
IMPORT_MPI_API int PMPI_Get_processor_name(char *, int *);
IMPORT_MPI_API int PMPI_Get_version(int *, int *);
IMPORT_MPI_API int PMPI_Errhandler_create(MPI_Handler_function *, MPI_Errhandler *);
IMPORT_MPI_API int PMPI_Errhandler_set(MPI_Comm, MPI_Errhandler);
IMPORT_MPI_API int PMPI_Errhandler_get(MPI_Comm, MPI_Errhandler *);
IMPORT_MPI_API int PMPI_Errhandler_free(MPI_Errhandler *);
IMPORT_MPI_API int PMPI_Error_string(int, char *, int *);
IMPORT_MPI_API int PMPI_Error_class(int, int *);
IMPORT_MPI_API int PMPI_Type_get_envelope(MPI_Datatype, int *, int *, int *, int *);
IMPORT_MPI_API int PMPI_Type_get_contents(MPI_Datatype, int, int, int, int *, MPI_Aint *, MPI_Datatype *);
IMPORT_MPI_API int PMPI_Type_create_subarray(int, int *, int *, int *, int, MPI_Datatype, MPI_Datatype *);
IMPORT_MPI_API int PMPI_Type_create_darray(int, int, int, int *, int *, int *, int *, int, MPI_Datatype, MPI_Datatype *);
IMPORT_MPI_API int PMPI_Info_create(MPI_Info *);
IMPORT_MPI_API int PMPI_Info_set(MPI_Info, char *, char *);
IMPORT_MPI_API int PMPI_Info_delete(MPI_Info, char *);
IMPORT_MPI_API int PMPI_Info_get(MPI_Info, char *, int, char *, int *);
IMPORT_MPI_API int PMPI_Info_get_valuelen(MPI_Info, char *, int *, int *);
IMPORT_MPI_API int PMPI_Info_get_nkeys(MPI_Info, int *);
IMPORT_MPI_API int PMPI_Info_get_nthkey(MPI_Info, int, char *);
IMPORT_MPI_API int PMPI_Info_dup(MPI_Info, MPI_Info *);
IMPORT_MPI_API int PMPI_Info_free(MPI_Info *);
MPI_Fint PMPI_Info_c2f(MPI_Info);
MPI_Info PMPI_Info_f2c(MPI_Fint);
/* Wtime done above */
IMPORT_MPI_API int PMPI_Init(int *, char ***);
IMPORT_MPI_API int PMPI_Init_thread( int *, char ***, int, int * );
IMPORT_MPI_API int PMPI_Finalize(void);
IMPORT_MPI_API int PMPI_Initialized(int *);
IMPORT_MPI_API int PMPI_Abort(MPI_Comm, int);
/* MPI-2 communicator naming functions */
/* IMPORT_MPI_API int PMPI_Comm_set_name(MPI_Comm, char *); */
/* IMPORT_MPI_API int PMPI_Comm_get_name(MPI_Comm, char **); */
#ifdef HAVE_NO_C_CONST
/* Default Solaris compiler does not accept const but does accept prototypes */
#if defined(USE_STDARG)
IMPORT_MPI_API int PMPI_Pcontrol(int, ...);
#else
IMPORT_MPI_API int PMPI_Pcontrol(int);
#endif
#else
IMPORT_MPI_API int PMPI_Pcontrol(const int, ...);
#endif
/* external */
IMPORT_MPI_API int PMPI_Status_set_cancelled( MPI_Status *, int );
IMPORT_MPI_API int PMPI_Status_set_elements( MPI_Status *, MPI_Datatype, int );
IMPORT_MPI_API int PMPI_Alloc_mem (MPI_Aint, MPI_Info, void *);
IMPORT_MPI_API int PMPI_Free_mem (void *);
/* Window management */
IMPORT_MPI_API int PMPI_Win_create (void *, MPI_Aint, int, MPI_Info, MPI_Comm, MPI_Win *);
IMPORT_MPI_API int PMPI_Win_free (MPI_Win *);
IMPORT_MPI_API int PMPI_Win_get_attr (MPI_Win, int, void *, int *);
IMPORT_MPI_API int PMPI_Win_get_group (MPI_Win, MPI_Group *);
/* Communication Calls */
IMPORT_MPI_API int PMPI_Put (void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, MPI_Win);
IMPORT_MPI_API int PMPI_Get (void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, MPI_Win);
IMPORT_MPI_API int PMPI_Accumulate (void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, MPI_Op, MPI_Win);
/* Synchronization Calls */
IMPORT_MPI_API int PMPI_Win_fence (int, MPI_Win);
IMPORT_MPI_API int PMPI_Win_start (MPI_Group, int, MPI_Win);
IMPORT_MPI_API int PMPI_Win_complete (MPI_Win);
IMPORT_MPI_API int PMPI_Win_post (MPI_Group, int, MPI_Win);
IMPORT_MPI_API int PMPI_Win_wait (MPI_Win);
IMPORT_MPI_API int PMPI_Win_test (MPI_Win, int *);
IMPORT_MPI_API int PMPI_Win_lock (int, int, int, MPI_Win);
IMPORT_MPI_API int PMPI_Win_unlock (int, MPI_Win);
/* Error handlers */
IMPORT_MPI_API int PMPI_Win_create_errhandler ( MPI_Win_errhandler_fn *,
MPI_Errhandler *);
IMPORT_MPI_API int PMPI_Win_set_errhandler (MPI_Win , MPI_Errhandler);
IMPORT_MPI_API int PMPI_Win_get_errhandler (MPI_Win , MPI_Errhandler *);
#endif /* MPI_BUILD_PROFILING */
/* End of MPI bindings */
#if defined(__cplusplus)
}
/* Add the C++ bindings */
/*
If MPICH_SKIP_MPICXX is defined, the mpi++.h file will *not* be included.
This is necessary, for example, when building the C++ interfaces. It
can also be used when you want to use a C++ compiler to compile C code,
and do not want to load the C++ bindings
*/
#if defined(HAVE_MPI_CPP) && !defined(MPICH_SKIP_MPICXX)
#include "mpi++.h"
#endif
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -