当前位置: 首页 > news >正文

湖北立方建设工程有限公司网站网络营销广告名词解释

湖北立方建设工程有限公司网站,网络营销广告名词解释,网站开发技术是什么专业会的,国外设计有名网站MPI_Isend & MPI_Send 创建临时通信句柄 在前面的文章中举了例子,我们使用MPI_Isend接口发送数据时,有个传出参数request,该参数是创建的通信句柄, 实际上该句柄是一个临时句柄,即只用于一次性发送数据的场景&…

MPI_Isend & MPI_Send 创建临时通信句柄

在前面的文章中举了例子,我们使用MPI_Isend接口发送数据时,有个传出参数request,该参数是创建的通信句柄,
实际上该句柄是一个临时句柄,即只用于一次性发送数据的场景,如不能在循环体中多次使用:

int main(int argc, char *argv[])
{int err = MPI_Init(&argc,&argv);int rank,size;MPI_Comm_rank(MPI_COMM_WORLD,&rank);MPI_Comm_size(MPI_COMM_WORLD, &size);int data = 100;//将在发送进程的MPI_Isend创建初始化,数据接收进程中使用该句柄MPI_Request request;MPI_Status status;if(rank > 0){   MPI_Irecv(&data,1,MPI_INT,rank-1,0,MPI_COMM_WORLD,&request);std::cout << "rank = " << rank << " recived data is :  " << data << std::endl;MPI_Wait(&request, &status);std::cout << "rank = " << rank << " recived data is :  " << data << std::endl;}if(rank < size - 1){data = rank;MPI_Isend(&data,1,MPI_INT, (rank + 1)%size, 0 ,MPI_COMM_WORLD, &request);MPI_Wait(&request, &status);}err = MPI_Finalize();return 0;
}

一个多次使用临时通信句柄的错误案例

//错误案例
MPI_Request request;
MPI_Status status;
int buf[100];
for (int i = 0; i < 10; i++) {MPI_Recv(buf, 100, MPI_INT, 0, 0, MPI_COMM_WORLD, &status, &request);// 这里可能会出现 MPI_ERR_REQUEST 错误
}//如果要多次使用临时句柄,那就要多个临时句柄
MPI_Request requests[10];
MPI_Status statuses[10];
int buf[10][100];
for (int i = 0; i < 10; i++) {MPI_Recv(buf[i], 100, MPI_INT, 0, 0, MPI_COMM_WORLD, &statuses[i], &requests[i]);
}
MPI_Waitall(10, requests, statuses);

MPI_Send_init 创建持久性句柄

int MPI_Send_init(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request)
  • buf:void* 类型,发送缓冲区起始地址;
  • count:int 类型,发送缓冲区中元素的个数;
  • datatype:MPI_Datatype 类型,发送元素的 MPI 数据类型;
  • dest:int 类型,接收消息的进程编号;
  • tag:int 类型,消息标识;
  • comm:MPI_Comm 类型,消息通信域;
  • request:MPI_Request* 类型,通信请求句柄(持久化)。

使用该接口生成的持久化句柄,需要使用专用接口进行资源释放MPI_Request_free()

代码使用案例

#include <stdio.h>
#include <mpi.h>int main(int argc, char *argv[]) {int size, rank;MPI_Init(&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &size);MPI_Comm_rank(MPI_COMM_WORLD, &rank);//发送操作的缓冲区和发送目标int send_data = rank;int dest = (rank + 1) % size;//创建持久化通信请求句柄MPI_Request request;MPI_Send_init(&send_data, 1, MPI_INT, dest, 0, MPI_COMM_WORLD, &request);//可以重复的使用该句柄,前提是重复相同的数据,如果不同,则创建使用临时句柄for (int i = 0; i < size; i++) {//启动发送消息MPI_Start(&request);printf("Rank %d is sending data to Rank %d\n", rank, dest);//等待发送完成MPI_Wait(&request, MPI_STATUS_IGNORE);printf("Rank %d has sent data to Rank %d\n", rank, dest);}//释放持久化通信请求句柄MPI_Request_free(&request);MPI_Finalize();return 0;
}

在这里插入图片描述

临时句柄和持久性句柄的选择

  1. 多次循环发送不同的数据必须使用临时句柄
  2. 如果多次发送的数据是一样的,那么就可以使用持久化的句柄。
http://www.yayakq.cn/news/250709/

相关文章:

  • 黄岩区建设规划局网站wordpress邀请注册
  • 荣欣建设集团有限公司网站seo网页优化服务
  • 门户网站建设招标书wordpress athena 模版
  • php网站开发数据列表排重北京seo优化哪家公司好
  • 百度医院网站建设网站建设运营公众号运营合同
  • 介绍北京的网站html投资公司经营范围有哪些内容
  • 网站建设网络推广文章在深圳注册公司有什么好处
  • 农业特色网站建设win10建设本地网站
  • 花瓣设计网站官网入口免费招商加盟代理
  • 儿童衣服刘涛做代言那个是什么网站qq电脑版
  • 电子商务网站建设课设网站模板定制网站建设公司推荐
  • 淘宝网站建设的目标是什么意思开源手机建站系统
  • 工作室网站建设wordpress做微信小程序商店
  • 做网站看百度站点管理
  • 网站里的聊天怎么做tp网站开发
  • 网站基本功能天津市建设厅建筑业信息网
  • 网站制作要钱吗莱州网站建设哪家好
  • 哪个网站可以做会计题seo网站优化外包
  • 怎么做盗版网站网站seo排名培训
  • 电子商务网站建设调查分析自己搭建局域网云桌面终端
  • 如何做汽车团购网站上海网站维护
  • 做外贸网站报价单西安做网站公司8
  • 视频网站亏钱为什么还要继续做太平洋建设官方网站
  • 镇江网站优化哪家好小程序模板下载安装
  • 苏州晶体公司网站学会网站 建设
  • 网站会员充值做哪个分录深圳网站设计哪家快
  • 衡水网站建设最新报价网站设计公司 杭州
  • 制作网页站点的具体流程案例建设外贸网站费用
  • 官方网站制作公司工程建设标准化期刊是什么级别
  • 临西做网站报价个人网站建设需求说明书