MPI基本函数
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MPI_Reduce_scatter()规约值并散播结果
int MPI_Reduce(void *sendbuf,
void *recvbuf,
int count,
MPI_Datatype recvtype,
MPI_OP op,
int root,
MPI_Comm comm)
发送缓冲区地址
接收缓冲区地址
MPI_FLOAT float
int MPI_Recv(void *buf,
int count,
MPI_Datatype datatype,
int source,
int tag,
MPI_Coቤተ መጻሕፍቲ ባይዱm comm,
MPI_Status *status)
接收缓冲区(已装载)
缓冲区内最大项数
项的数据类型
源进程序号
消息标识
通信子
状态(返回的)
接收消息(锁定)
int MPI_Isend(void *buf,
int count,
MPI_Datatype datatype,
int dest,
int tag,
MPI_Comm comm,
MPI_Request *request)
发送缓冲区
缓冲区内消息项数
消息项的数据类型
MPI常用例程
初等例程
函数名
参数
动作
int MPI_Init(int *argc,
char **argv[])
来自main()的参数
来自main()的参数
初始化MPI环境
int MPI_Finalize(void)
终止MPI执行环境
int MPI_Comm_rank(MPI_Comm comm,
int *rank)
通信子
序号(返回的)
确定在通信子中进程的序号
int MPI_Comm_size(MPI_Comm comm,
int *size)
通信子
组的大小(返回的)
确定与通信子关联的组的大小
double MPI_Wtime(void)
以秒为单位返回从过去某点开始的执行时间
点对点消息传递
函数名
参数
动作
int MPI_Send(void *buf,
接收缓冲区(已装载)
缓冲区内最大项数
项的数据类型
根进程序号
通信子
从根进程向comm中的所有进程和自身广播消息
int MPI_ALLtoall(void *sendbuf
int sendcount,
MPI_Datatype,sendtype,
void *recvbuf,
int recvcount,
MPI_Datatype recvtype,
void *recvbuf,
int recvcount,
MPI_Datatype recvtype,
int root,
MPI_Comm comm)
发送缓冲区
发送缓冲区内元素数
发送元素的数据类型
接收缓冲区(已装载)
每次接收的元素数
接收元素的数据类型
接收进程序号
通信子
汇集进程组的各个值
相关例程:
MPI_Allgather()并向所有进程分发
MPI_Gatherv()汇集到指定单元中,在recvcount后附加参数
MPI_Allgatherv()汇集到指定单元中并向所有进程分发,在recvcount后附加参数
MPI_Scatter(void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
void *recvbuf,
int count,
MPI_Datatype datatype
int dest,
int tag,
MPI_Comm comm)
发送缓冲区
缓冲区内的项数
项的数据类型
目的进程序号
消息标识
通信子
发送消息(锁定)
MPI_Datatype与C对应
MPI_CHAR signed char
MPI_INT signed int
发送缓冲区内元素数
发送元素的数据类型
规约操作
MPI_MAX最大
MPI_MIN最小
MPI_SUM求和
MPI_PROD求积
存放结果的根进程号
通信子
将所有进程值规约为一个值
相关例程:
MPI_ALLreduce()规约成单个值并返回给所有进程
MPI_Comm comm)
发送缓冲区
发送缓冲区内元素数
发送元素的数据类型
接收缓冲区(已装载)
每次接收的元素数
接收元素的数据类型
通信子
从所有进程向所有进程发送消息
相关例程:
MPI_ALLtoallv()带偏移
MPI_Gather(void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
目的进程序号
消息标识
通信子
请求句柄(返回的)
启动非锁定发送
相关的例程:
MPI_Ibsend()启动缓冲
MPI_Irsend()启动就绪
MPI_Issend()启动同步
int MPI_Irecv(void *buf,
int count,
MPI_Datatype datatype,
int source,
int recvcount,
MPI_Datatype recvtype,
int root,
MPI_Comm comm)
发送缓冲区
发送缓冲区内元素数
发送元素的数据类型
接收缓冲区(已装载)
每次接收的元素数
接收元素的数据类型
接收进程序号
通信子
从根进程部分地散播缓冲区中的值到进程组
相关例程:
MPI_Scatterv()从散播根进程按特定部分散播缓冲区中的值到进程组
mpiibsend启动缓冲mpiirsend启动就绪mpiissend启动同步启动非锁定接收等待mpi发送或接收结束然后返回测试非锁定操作是否结束intmpitestmpirequestrequestintflagmpistatusstatusintmpiprobeintsourceinttagmpicommcommmpistatusstatusintmpiiprobeintsourceinttagmpicommcommintflagmpistatusstatus对消息进行锁定测试不接收消息对消息进行非锁定测试不接收消息组例程函数名intmpibarriermpicommcomm参数通信子动作锁定进程直到所有进程已调用该进程从根进程向comm中的所有进程和自身广播消息intmpibcastvoidbufintcountmpidatatypeintrootmpicommcomm接收缓冲区已装载缓冲区内最大项数项的数据类型根进程序号通信子发送缓冲区发送缓冲区内元素数发送元素的数据类型接收缓冲区已装载每次接收的元素数接收元素的数据类型通信子发送缓冲区发送缓冲区内元素数发送元素的数据类型接收缓冲区已装载每次接收的元素数接收元素的数据类型接收进程序号通信子intmpialltoallvoidsendbufintsendcountmpidatatypesendtypevoidrecvbufintrecvcountmpidatatyperecvtypempicommcomm从所有进程向所有进程发送消息相关例程mpialltoallv带偏移mpigathervoidsendbufintsendcountmpidatatypesendtypevoidrecvbufintrecvcountmpidatatyperecvtypeintrootmpicommcomm汇集进程组的各个值相关例程mpiallgather并向所有进程分发mpigatherv汇集到指定单元中在recvcount后附加参数mpiallgatherv汇集到指定单元中并向所有进程分发在recvcount后附加参数从根进程部分地散播缓冲区中的值到进程组相关例程mpiscatterv从散播根进程按特定部分散播缓冲区中的值到进程组mpireducescatter规约值并散播结果将所有进程值规约为一个值相关例程mpiallreduce规约成单个值并返回给所有进程mpiscat
int tag,
MPI_Comm comm,
MPI_Request *request)
接收缓冲区
缓冲区内消息项数
消息项的数据类型
源进程序号
消息标识
通信子
请求句柄(返回的)
启动非锁定接收
int MPI_Wait(MPI_Request *request,
MPI_Status *status)
请求句柄
状态(如果等待,则同MPI_recv()的返回状态)
等待MPI发送或接收结束,然后返回
int MPI_Test(MPI_Request *request,
int *flag,
MPI_Status *status)
请求句柄
操作结束则返回真(返回的)
状态(返回的)
测试非锁定操作是否结束
int MPI_Probe(int source,
int tag,
MPI_Comm comm,
MPI_Status *status)
源进程序号
消息标识
通信子
状态(返回的)
对消息进行锁定测试(不接收消息)
int MPI_Iprobe(int source,
int tag,
MPI_Comm comm,
int *flag,
MPI_Status *status)
源进程序号
消息标识
通信子
有消息则为真(返回的)
状态(返回的)
对消息进行非锁定测试(不接收消息)
组例程
函数名
参数
动作
int MPI_Barrier(MPI_Comm comm)
通信子
锁定进程直到所有进程已调用该进程
int MPI_Bcast(void *buf,
int count,
MPI_Datatype,
int root,
MPI_Comm comm)
int MPI_Reduce(void *sendbuf,
void *recvbuf,
int count,
MPI_Datatype recvtype,
MPI_OP op,
int root,
MPI_Comm comm)
发送缓冲区地址
接收缓冲区地址
MPI_FLOAT float
int MPI_Recv(void *buf,
int count,
MPI_Datatype datatype,
int source,
int tag,
MPI_Coቤተ መጻሕፍቲ ባይዱm comm,
MPI_Status *status)
接收缓冲区(已装载)
缓冲区内最大项数
项的数据类型
源进程序号
消息标识
通信子
状态(返回的)
接收消息(锁定)
int MPI_Isend(void *buf,
int count,
MPI_Datatype datatype,
int dest,
int tag,
MPI_Comm comm,
MPI_Request *request)
发送缓冲区
缓冲区内消息项数
消息项的数据类型
MPI常用例程
初等例程
函数名
参数
动作
int MPI_Init(int *argc,
char **argv[])
来自main()的参数
来自main()的参数
初始化MPI环境
int MPI_Finalize(void)
终止MPI执行环境
int MPI_Comm_rank(MPI_Comm comm,
int *rank)
通信子
序号(返回的)
确定在通信子中进程的序号
int MPI_Comm_size(MPI_Comm comm,
int *size)
通信子
组的大小(返回的)
确定与通信子关联的组的大小
double MPI_Wtime(void)
以秒为单位返回从过去某点开始的执行时间
点对点消息传递
函数名
参数
动作
int MPI_Send(void *buf,
接收缓冲区(已装载)
缓冲区内最大项数
项的数据类型
根进程序号
通信子
从根进程向comm中的所有进程和自身广播消息
int MPI_ALLtoall(void *sendbuf
int sendcount,
MPI_Datatype,sendtype,
void *recvbuf,
int recvcount,
MPI_Datatype recvtype,
void *recvbuf,
int recvcount,
MPI_Datatype recvtype,
int root,
MPI_Comm comm)
发送缓冲区
发送缓冲区内元素数
发送元素的数据类型
接收缓冲区(已装载)
每次接收的元素数
接收元素的数据类型
接收进程序号
通信子
汇集进程组的各个值
相关例程:
MPI_Allgather()并向所有进程分发
MPI_Gatherv()汇集到指定单元中,在recvcount后附加参数
MPI_Allgatherv()汇集到指定单元中并向所有进程分发,在recvcount后附加参数
MPI_Scatter(void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
void *recvbuf,
int count,
MPI_Datatype datatype
int dest,
int tag,
MPI_Comm comm)
发送缓冲区
缓冲区内的项数
项的数据类型
目的进程序号
消息标识
通信子
发送消息(锁定)
MPI_Datatype与C对应
MPI_CHAR signed char
MPI_INT signed int
发送缓冲区内元素数
发送元素的数据类型
规约操作
MPI_MAX最大
MPI_MIN最小
MPI_SUM求和
MPI_PROD求积
存放结果的根进程号
通信子
将所有进程值规约为一个值
相关例程:
MPI_ALLreduce()规约成单个值并返回给所有进程
MPI_Comm comm)
发送缓冲区
发送缓冲区内元素数
发送元素的数据类型
接收缓冲区(已装载)
每次接收的元素数
接收元素的数据类型
通信子
从所有进程向所有进程发送消息
相关例程:
MPI_ALLtoallv()带偏移
MPI_Gather(void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
目的进程序号
消息标识
通信子
请求句柄(返回的)
启动非锁定发送
相关的例程:
MPI_Ibsend()启动缓冲
MPI_Irsend()启动就绪
MPI_Issend()启动同步
int MPI_Irecv(void *buf,
int count,
MPI_Datatype datatype,
int source,
int recvcount,
MPI_Datatype recvtype,
int root,
MPI_Comm comm)
发送缓冲区
发送缓冲区内元素数
发送元素的数据类型
接收缓冲区(已装载)
每次接收的元素数
接收元素的数据类型
接收进程序号
通信子
从根进程部分地散播缓冲区中的值到进程组
相关例程:
MPI_Scatterv()从散播根进程按特定部分散播缓冲区中的值到进程组
mpiibsend启动缓冲mpiirsend启动就绪mpiissend启动同步启动非锁定接收等待mpi发送或接收结束然后返回测试非锁定操作是否结束intmpitestmpirequestrequestintflagmpistatusstatusintmpiprobeintsourceinttagmpicommcommmpistatusstatusintmpiiprobeintsourceinttagmpicommcommintflagmpistatusstatus对消息进行锁定测试不接收消息对消息进行非锁定测试不接收消息组例程函数名intmpibarriermpicommcomm参数通信子动作锁定进程直到所有进程已调用该进程从根进程向comm中的所有进程和自身广播消息intmpibcastvoidbufintcountmpidatatypeintrootmpicommcomm接收缓冲区已装载缓冲区内最大项数项的数据类型根进程序号通信子发送缓冲区发送缓冲区内元素数发送元素的数据类型接收缓冲区已装载每次接收的元素数接收元素的数据类型通信子发送缓冲区发送缓冲区内元素数发送元素的数据类型接收缓冲区已装载每次接收的元素数接收元素的数据类型接收进程序号通信子intmpialltoallvoidsendbufintsendcountmpidatatypesendtypevoidrecvbufintrecvcountmpidatatyperecvtypempicommcomm从所有进程向所有进程发送消息相关例程mpialltoallv带偏移mpigathervoidsendbufintsendcountmpidatatypesendtypevoidrecvbufintrecvcountmpidatatyperecvtypeintrootmpicommcomm汇集进程组的各个值相关例程mpiallgather并向所有进程分发mpigatherv汇集到指定单元中在recvcount后附加参数mpiallgatherv汇集到指定单元中并向所有进程分发在recvcount后附加参数从根进程部分地散播缓冲区中的值到进程组相关例程mpiscatterv从散播根进程按特定部分散播缓冲区中的值到进程组mpireducescatter规约值并散播结果将所有进程值规约为一个值相关例程mpiallreduce规约成单个值并返回给所有进程mpiscat
int tag,
MPI_Comm comm,
MPI_Request *request)
接收缓冲区
缓冲区内消息项数
消息项的数据类型
源进程序号
消息标识
通信子
请求句柄(返回的)
启动非锁定接收
int MPI_Wait(MPI_Request *request,
MPI_Status *status)
请求句柄
状态(如果等待,则同MPI_recv()的返回状态)
等待MPI发送或接收结束,然后返回
int MPI_Test(MPI_Request *request,
int *flag,
MPI_Status *status)
请求句柄
操作结束则返回真(返回的)
状态(返回的)
测试非锁定操作是否结束
int MPI_Probe(int source,
int tag,
MPI_Comm comm,
MPI_Status *status)
源进程序号
消息标识
通信子
状态(返回的)
对消息进行锁定测试(不接收消息)
int MPI_Iprobe(int source,
int tag,
MPI_Comm comm,
int *flag,
MPI_Status *status)
源进程序号
消息标识
通信子
有消息则为真(返回的)
状态(返回的)
对消息进行非锁定测试(不接收消息)
组例程
函数名
参数
动作
int MPI_Barrier(MPI_Comm comm)
通信子
锁定进程直到所有进程已调用该进程
int MPI_Bcast(void *buf,
int count,
MPI_Datatype,
int root,
MPI_Comm comm)