- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5题每题20分
1)简述MPI 6个函数格式定义,作用,参数含义。
MPI简介:消息传递接口的标准,用于开发基于消息传递的并行程序,目的是为用户提供一个实际可用的、可移植的、高效和灵活的消息传递接口库,能够在PC Windows和所有主要的Unix工作站以及并行机上实现。MPI是一个库,不是一种语言,实现并行必须依托于某种语言:FORTRAN,C
MPI主要函数:
MPI_Init,初始化函数:MPI程序通过调用MPI_Init函数进行MPI环境,并完成所有的初始化工作,这个函数通常是MPI程序的第一个函数调用。
格式如下: int MPI_Init( int *argc, char ***argv )
MPI_Finalize,结束函数:MPI通过调用MPI_Finalize函数从MPI环境中退出,它是MPI程序的最后一个MPI函数调用,否则程序的执行结果是不可预知的。
格式如下: int MPI_Finalize(void) ;
MPI_Comm_rank,获取进程的编号:MPI程序通过MPI_Comm_Rank函数调用获取当前进程在指定通信域中的编号,有了该编号,不同的进程就可以将自身和其他进程区分开来,从而实现进程间的并行和合作。
格式如下:nt MPI_Comm_rank(MPI_Comm comm, int *rank)
MPI_Comm_size,获取指定通信域的进程数:MPI通过调用MPI_Comm_size函数获取指定通信域的进程个数,进程可根据它来确定自己应该完成的任务比例。
格式如下:int MPI_Comm_size(MPI_Comm comm, int *size)
MPI_Send消息发送函数:MPI_Send函数用于发送一个消息到目标进程。其格式如下:
int MPI_Send( void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm_comm)
buf : 消息发送的起始地址
count :发送消息的数量
datatype: 发送数据的类型
dest: 标识目标进程
tag: 发送消息时打上的标签
comm: 通信类型
MPI_Recv,消息接收:MPI_Recv函数用于从指定进程接收一个消息,格式如下:
int MPI_Recv( void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm, comm, MPI_Status *status )
buf : 消息接收后存放地址
count : 接收数量
datatype : 接收数据类型
source : 发送消息的进程
tag : 消息的标签
comm : 通信类型
status : 接收状态
1.2)举例简单的应用解释如何通信。
每个进程会属于一个或多个通信域。
一个简单的例子
/* simple.c */
#include “mpi.h” /*MPI头文件*/
#include stdio.h
int main(argc, argv)
int argc ;
char **argv ;
{
int rank, size, tag = 1 ;
int senddata, recvdata ;
MPI_Status status ;
MPI_Init( argc, argv ) ; /*MPI的初始化*/
MPI_Comm_rank( MPI_COMM_WORLD, rank ) ; /*该进程的编号 */
MPI_Comm_size( MPI_COMM_WORLD, size ); /* 总的进程数目*/
if ( rank == 0 ){
int senddata, recvdata ;
MPI_Status status ;
MPI_Init( argc, argv ) ; /*MPI的初始化*/
MPI_Comm_rank( MPI_COMM_WORLD, rank ) ; /*该进程的编号 */
MPI_Comm_size( MPI_COMM_WORLD, size ); /* 总的进程数目*/
if ( rank == 0 ){
senddata = 9999 ;
MPI_Send( senddata, 1, MPI_INT, 1, tag,
MPI_COMM_WORLD ) ; /* 发送数据到进
程1 */
}
if (
文档评论(0)