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

做网站开发需要的笔记本配置怎么自建一个网站

做网站开发需要的笔记本配置,怎么自建一个网站,南京商城网站开发设计,jsp做网站都可以做什么MPI缓冲区 由MPI自行维护的一块内存区域#xff0c;也可由用户(MPI_Bsend)自行维护#xff1b;发送方 维护一块发送缓冲区#xff1b; 接收方 维护一块接收缓冲区。 数据收发过程#xff1a; 当发送端将数据拷贝到自身的数据缓冲区后(注意这里是拷贝#xff0c;即数据到…MPI缓冲区 由MPI自行维护的一块内存区域也可由用户(MPI_Bsend)自行维护发送方 维护一块发送缓冲区 接收方 维护一块接收缓冲区。 数据收发过程 当发送端将数据拷贝到自身的数据缓冲区后(注意这里是拷贝即数据到达发送缓冲区再对原数据进行修改将不会影响发送的数据)对应的Send函数将会返回意味着发送动作已经完成当接收端将数据拷贝到自身的接收缓冲区中Recv函数调用结束。 类似于Socket通信时调用send将数据放置发送缓冲区即表示send完成。 阻塞通信模型 发送 1. 标准通信模式 MPI_Send 该接口是否进行缓存由MPI决定分情况讨论 发送进程的发送动作不依赖接收进程(有缓存)发送进程将数据拷贝到数据缓冲区不管接收进程有没有执行接收动作函数都直接返回发送动作对于用户来讲已经完成发送进程的发送动作依赖于接收进程(不带缓存直接发送)发送进程发送消息时需要接收进程也要开始接收进程两者处于一边发送一边接收的状态此时MPI_Send阻塞当前发送方直到数据被接收方确认收到基于底层的数据传输机制 2. 缓存通信模式 MPI_Bsend 当用户对上述标准通信模式不满意不能满足需求可以采用该模式 该函数在发送消息时使用明确的缓冲区并具有较低的内存使用率和较高的性能。相对于 MPI_Send 函数MPI_Bsend 不阻塞发送方也不会复制消息缓冲区中的数据而是将数据拷贝到MPI缓冲区中MPI_Bsend 函数将立即返回在MPI缓冲区中的消息稍后使用异步方式传输。 函数原型 int MPI_Bsend(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) //用户自行管理缓冲区 int MPI_Buffer_attach(void *buffer,int size) int MPI_Buffer_detach(void *buffer,int size)参数详解 buf: 待发送数据的首地址count: 待发送的数据量datatype: 待发送数据类型dest: 目标进程的 MPI ranktag: 消息标记comm: MPI通信域 注意事项 发送时需要将数据从消息缓冲区拷贝到用户提供的缓冲区buffer该方法消除了发送端同步的开销如前面分析消息发送能否进行及能否正确返回不依赖于接收进程。好处是用户可以认为程序需要发送的消息提供缓冲区但用户也需要负责管理该缓冲区。如果该缓冲区buffer大小不足以存储消息缓冲区中待发送的数据将导致程序错误退出。 #include stdio.h #include stdlib.h #include mpi.h#define BUFFER_SIZE 1024int main(int argc, char *argv[]) {int rank, size;MPI_Status status;double t0, t1;char buf[BUFFER_SIZE];char *my_buffer;MPI_Request request;MPI_Init(argc, argv);MPI_Comm_rank(MPI_COMM_WORLD, rank);MPI_Comm_size(MPI_COMM_WORLD, size);if(rank 0){//为MPI缓冲区分配内存空间my_buffer(char *)malloc(BUFFER_SIZE);MPI_Buffer_attach(my_buffer, BUFFER_SIZE);snprintf(buf, BUFFER_SIZE, Hello, world, from rank %d!, rank);t0MPI_Wtime();//异步发送消息MPI_Bsend(buf, BUFFER_SIZE, MPI_CHAR, 1, 0, MPI_COMM_WORLD, request);MPI_Wait(request, status);t1MPI_Wtime();printf(Time taken%f\n, t1-t0);free(my_buffer);MPI_Buffer_detach(my_buffer, BUFFER_SIZE);}else{//为MPI缓冲区分配内存空间my_buffer(char *)malloc(BUFFER_SIZE);MPI_Buffer_attach(my_buffer, BUFFER_SIZE);t0MPI_Wtime();//等待接收消息MPI_Recv(buf, BUFFER_SIZE, MPI_CHAR, 0, 0, MPI_COMM_WORLD, status);t1MPI_Wtime();printf(Rank %d received message%s, time%f\n, rank, buf, t1-t0);free(my_buffer);MPI_Buffer_detach(my_buffer, BUFFER_SIZE);}MPI_Finalize();return 0; }3. 同步通信模式 MPI_Ssend 该模式的开始不依赖接收进程相应的接收操作是否已经启动但是同步发送却必须等到相应的接收进程开始后才可以正确返回。即 发送方必须等待接收方的确认才能继续执行。接收方必须收到消息后才能继续执行。可以确保接收方正确接收消息。 函数原型 int MPI_Ssend(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)参数详解 buf指向待发送数据的指针。count发送元素数量。datatype发送元素的类型。dest目标进程的进程号。tag消息标签。comm进程通信域 代码示例 #include stdio.h #include mpi.hint main(int argc, char** argv) {int size, rank;int data;MPI_Status status;MPI_Init(argc, argv);MPI_Comm_size(MPI_COMM_WORLD, size);MPI_Comm_rank(MPI_COMM_WORLD, rank); if (rank 0) {data 12345;MPI_Ssend(data, 1, MPI_INT, 1, 0, MPI_COMM_WORLD);printf(Process 0 sent data %d to process 1\n, data);} else if (rank 1) {MPI_Recv(data, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, status);printf(Process 1 received data %d from process 0\n, data);}MPI_Finalize();return 0; } 4. 就绪通信模式 MPI_Rsend 该模式只有当接收进程的接收操作已经启动时才可以在发送进程启动发送操作(即是一种发送并立即返回操作)否则当发送操作启动而相应的操作还没有启动时发送操作将出错对于非阻塞发送操作的正确返回并不意味着发送已经完成但对于阻塞发送的正确返回则代表发送缓冲区可以重复使用。 函数原型 int MPI_Rsend(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)参数详解 buf指向待发送数据的指针。count发送元素数量。datatype发送元素的类型。dest目标进程的进程号。tag消息标签。comm进程通信域 代码实例 #include stdio.h #include mpi.hint main(int argc, char** argv) {int size, rank;int data;MPI_Status status;MPI_Init(argc, argv);MPI_Comm_size(MPI_COMM_WORLD, size);MPI_Comm_rank(MPI_COMM_WORLD, rank);if (rank 0) {data 12345;MPI_Request request;MPI_Rsend(data, 1, MPI_INT, 1, 0, MPI_COMM_WORLD);printf(Process 0 sent data %d to process 1\n, data);} else if (rank 1) {MPI_Status status;int data_recv;MPI_Recv(data_recv, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, status);printf(Process 1 received data %d from process 0\n, data_recv);}MPI_Finalize();return 0; }接收 MPI_Recv 非阻塞通信模式 发送 标准通信模式 MPI_Isend 缓存通信模式 MPI_Ibsend 是 MPI_Bsend 的非阻塞版本在 MPI_Bsend 的基础上MPI_Ibsend 函数允许发送方在消息发送期间继续执行其他操作而不必等待消息发送完成。MPI_Ibsend 函数将消息存储在缓冲区中并返回一个 MPI_Request 对象代表着消息的发送请求。 函数原型 int MPI_Ibsend(const void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request* request)参数详解 buf指向待发送数据的指针。count发送元素数量。datatype发送元素的类型。dest目标进程的进程号。tag消息标签。comm进程通信域。requestMPI_Request 类型的指针存储发送请求对象。 代码实例 #include stdio.h #include mpi.h#define BUFFER_SIZE 1024int main(int argc, char** argv) {int size, rank;int data;MPI_Status status;char buffer[BUFFER_SIZE];MPI_Request request;MPI_Init(argc, argv);MPI_Comm_size(MPI_COMM_WORLD, size);MPI_Comm_rank(MPI_COMM_WORLD, rank);if (rank 0) {data 12345;MPI_Buffer_attach(buffer, BUFFER_SIZE);MPI_Ibsend(data, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, request);printf(Process 0 sent data %d to process 1\n, data);MPI_Wait(request, status);MPI_Buffer_detach(buffer, BUFFER_SIZE);} else if (rank 1) {int data_recv;MPI_Recv(data_recv, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, status);printf(Process 1 received data %d from process 0\n, data_recv);}MPI_Finalize();return 0; }同步通信模式 MPI_Issend MPI_Ssend 的非阻塞版本在 MPI_Ssend 的基础上MPI_Issend 函数允许发送方在消息发送期间继续执行其他操作而不必等待消息发送完成。MPI_Issend 函数将消息存储在缓冲区中并返回一个 MPI_Request 对象代表着消息的发送请求。 函数原型 int MPI_Issend(const void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request* request)参数详解 buf指向待发送数据的指针。count发送元素数量。datatype发送元素的类型。dest目标进程的进程号。tag消息标签。comm进程通信域。requestMPI_Request 类型的指针存储发送请求对象。 代码实例 #include stdio.h #include mpi.h#define BUFFER_SIZE 1024int main(int argc, char** argv) {int size, rank;int data;MPI_Status status;char buffer[BUFFER_SIZE];MPI_Request request;MPI_Init(argc, argv);MPI_Comm_size(MPI_COMM_WORLD, size);MPI_Comm_rank(MPI_COMM_WORLD, rank);if (rank 0) {data 12345;MPI_Buffer_attach(buffer, BUFFER_SIZE);MPI_Issend(data, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, request);printf(Process 0 sent data %d to process 1\n, data);MPI_Wait(request, status);MPI_Buffer_detach(buffer, BUFFER_SIZE);} else if (rank 1) {int data_recv;MPI_Recv(data_recv, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, status);printf(Process 1 received data %d from process 0\n, data_recv);}MPI_Finalize();return 0; }就绪通信模式 MPI_Irsend 是 MPI_Rsend 的非阻塞版本在 MPI_Rsend 的基础上MPI_Irsend 函数允许发送方在消息发送期间继续执行其他操作而不必等待消息发送完成。MPI_Irsend 函数将消息存储在缓冲区中并返回一个 MPI_Request 对象代表着消息的发送请求。 函数原型 int MPI_Irsend(const void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request* request)参数详解 buf指向待发送数据的指针。count发送元素数量。datatype发送元素的类型。dest目标进程的进程号。tag消息标签。comm进程通信域。requestMPI_Request 类型的指针存储发送请求对象。 代码实例 #include stdio.h #include mpi.h#define BUFFER_SIZE 1024int main(int argc, char** argv) {int size, rank;int data;MPI_Status status;char buffer[BUFFER_SIZE];MPI_Request request;MPI_Init(argc, argv);MPI_Comm_size(MPI_COMM_WORLD, size);MPI_Comm_rank(MPI_COMM_WORLD, rank);if (rank 0) {data 12345;MPI_Buffer_attach(buffer, BUFFER_SIZE);MPI_Irsend(data, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, request);printf(Process 0 sent data %d to process 1\n, data);MPI_Wait(request, status);MPI_Buffer_detach(buffer, BUFFER_SIZE);} else if (rank 1) {int data_recv;MPI_Recv(data_recv, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, status);printf(Process 1 received data %d from process 0\n, data_recv);}MPI_Finalize();return 0; }注MPI_Irsend 的缓冲区大小由 MPI_BSEND_BUFFER_SIZE 宏定义所决定。如果发送的消息大于缓冲区大小将会导致 MPI_Irsend 函数阻塞 接收 MPI_Irecv 区别 是否要对发送的数据进行缓存(缓存)是否只有当接收调用执行后才可以执行发送操作同步什么时候发送调用可以正确返回发送调用正确返回是否意味着发送已完成。 几种特殊使用场景 短时间内有大量的短消息的发送 可能会导致缓冲区爆掉导致消息丢失用户可能需要使用MPI_Bsend控制缓冲区的使用 如果短消息可以打包成一个大消息降低发送次数 发送的数据量特别大 MPI提供的缓冲区的大小不够可能导致数据丢失从而导致程序卡MPI_Bsend模式来直接控制缓冲区的使用 可以进行分段发送对数据进程拆分。
http://www.w-s-a.com/news/790224/

相关文章:

  • 淘宝店铺买卖湘潭seo优化价格
  • 最好的网站建设用途合肥企业网站建设
  • 计算机编程与网站建设好玩的网页传奇
  • 商务网站建设找哪家本地推广找哪些网站
  • 手机h5网站企业网站管理系统的运维服务
  • 南京建设网站公司网站游戏怎么制作
  • 成都建站程序苏州市建设局招标网站首页
  • 自助建网站市场公司起名大全2020最新版的
  • dede网站模板北京 网站开发 大兴
  • 网站优化师招聘建设牌安全带官方网站
  • 南京网站建设网站做视频网站用什么格式
  • 普陀做网站价格wordpress接入qq互联
  • 网站2级页面怎么做杭州哪家做外贸网站
  • 做了静态网站怎么显示在互联网上营销策划与运营方案
  • 常见的英文网站国内军事新闻大事件
  • 傻瓜式做网站程序微信怎么开公众号
  • c2c电商网站wordpress仿36kr主题
  • 网站建设公司开发免费图纸网站
  • 一个网站页面设计多少钱做预算查价格的网站是哪个
  • 鳌江哪里有做网站百度短链接在线生成
  • 有没有什么做水利资料的网站杭州建设信用平台
  • 电子商务网站建设及推广方案论文wordpress无法显示文章
  • 建设工程监理网站前端和后端分别需要学什么
  • 公司网站制作效果国内最好的在线网站建设
  • 徐州好点的做网站的公司有哪些wordpress 工具插件下载
  • 如何用云服务器建设网站微网站免费开发平台
  • 官网的网站设计公司做网站需要准备哪些东西
  • 程序员和做网站那个好找工作wordpress二维码 插件
  • 湖南城市建设技术学院官方网站青海省建设局网站
  • 响应式网站有什么区别百度网站官网