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

如何做外贸营销型网站灰色关键词排名收录

如何做外贸营销型网站,灰色关键词排名收录,公司域名让做网站的,青海省安建设管理部门网站文章目录 MPI Status & Probe动态的接收1 MPI_Status结构体查询的范例2 use MPI_Probe找出消息大小 MPI Status & Probe动态的接收 MPI_Recv将MPI_Status结构体的地址作为参数,可以使用MPI_STATUS_IGNORE 忽略。如果我们将 MPI_Status 结构体传递给 MPI_Re…

文章目录

    • MPI Status & Probe动态的接收
      • 1 MPI_Status结构体查询的范例
      • 2 use MPI_Probe找出消息大小

MPI Status & Probe动态的接收

MPI_RecvMPI_Status结构体的地址作为参数,可以使用MPI_STATUS_IGNORE 忽略。如果我们将 MPI_Status 结构体传递给 MPI_Recv 函数,则操作完成后将在该结构体中填充有关接收操作的其他信息。 三个主要的信息包括:

  • 发送端的rank,发送端的rank存储在结构体MPI_SOURCE元素中,如果声明一个MPI_Status state对象,则可以通过state.MPI_SOURCE访问rank。

    typedef struct MPI_Status {int count_lo;                  // 低位的计数值,表示接收到的数据量的低32位(可能与 count_hi_and_cancelled 组合成完整的 64 位计数)int count_hi_and_cancelled;    // 高位的计数值(如果存在高32位),同时包含一个“取消标志”位int MPI_SOURCE;                // 消息的源进程的 rank(表示接收消息是从哪个进程来的)int MPI_TAG;                   // 消息的标签(与发送时指定的标签对应,用于标识消息的类型)int MPI_ERROR;                 // 错误码(用于存储接收操作的返回状态,MPI_SUCCESS 表示成功)
    } MPI_Status;
    
  • 消息的标签,同上访问方式,访问MPI_TAG

  • 消息的长度,它在在结构体中没有预定义的元素。我们必须使用 MPI_Get_count 找出消息的长度。

    MPI_Get_count(const MPI_Status *status, MPI_Datatype datatype, int *count)
    

    MPI_Get_count中需要传递 MPI_Status 结构体,消息的 datatype(数据类型),并返回 count。 变量 count 是已接收的 datatype 元素的数目。

1 MPI_Status结构体查询的范例

// mpicc mpi_status.cc -o mpi_status
// mpirun -np 2 ./mpi_status
#include <mpi.h>
#include <iostream>
#include <stdio.h>int main(int argc, char** argv) {MPI_Init(NULL, NULL);int world_size;MPI_Comm_size(MPI_COMM_WORLD, &world_size);if (world_size != 2) {fprintf(stderr, "Must use two processes for this example\n");MPI_Abort(MPI_COMM_WORLD, 1);}int world_rank;MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);const int MAX_NUMBERS = 100;int numbers[MAX_NUMBERS];int number_amount;if (world_rank == 0) {// Pick a random amount of integers to send to process onesrand(time(NULL));number_amount = (rand() / (float)RAND_MAX) * MAX_NUMBERS;// Send the amount of integers to process oneMPI_Send(numbers, number_amount, MPI_INT, 1, 0, MPI_COMM_WORLD);printf("0 sent %d numbers to 1\n", number_amount);} else if (world_rank == 1) {MPI_Status status;// Receive at most MAX_NUMBERS from process zeroMPI_Recv(numbers, MAX_NUMBERS, MPI_INT, 0, 0, MPI_COMM_WORLD, &status);// After receiving the message, check the status to determine how many// numbers were actually receivedMPI_Get_count(&status, MPI_INT, &number_amount);// Print off the amount of numbers, and also print additional information// in the status objectprintf("1 received %d numbers from 0. Message source = %d, tag = %d\n",number_amount, status.MPI_SOURCE, status.MPI_TAG);}MPI_Barrier(MPI_COMM_WORLD);MPI_Finalize();return 0;
}
/******************************************************************
0 sent 91 numbers to 1
0 sent 91 numbers to 1
*******************************************************************/

2 use MPI_Probe找出消息大小

在库文件中的定义如下,可以看到与MPI_Recv很类似。可以使用 MPI_Probe 在实际接收消息之前查询消息大小。除了不接收消息之外,MPI_Probe会阻塞具有匹配标签和发送端的消息。消息可用时,会填充Status。然后,用户可以使用 MPI_Recv 接收实际的消息。

MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status)
#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main (int argc, char** argv) {MPI_Init(NULL, NULL);int world_size;MPI_Comm_size(MPI_COMM_WORLD, &world_size); // Get the number of processesif (world_size != 2) {fprintf(stderr, "Error: This program requires exactly 2 processes.\n");MPI_Abort(MPI_COMM_WORLD, 1);}int world_rank;MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); // Get the rank of the current processint number_of_amount = 0;if (world_rank == 0) {int MAX_NUMBERS = 100;int numbers[MAX_NUMBERS];srand(time(NULL));number_of_amount = (rand() / (float)RAND_MAX) * MAX_NUMBERS;MPI_Send(numbers, number_of_amount, MPI_INT, 1, 0, MPI_COMM_WORLD);printf("Process %d sent %d numbers to process %d.\n", world_rank, number_of_amount, 1);} else if (world_rank == 1) {MPI_Status status;MPI_Probe(0, 0, MPI_COMM_WORLD, &status);MPI_Get_count(&status, MPI_INT, &number_of_amount);int* number_buffer = (int*)malloc(sizeof(int) * number_of_amount);MPI_Recv(number_buffer, number_of_amount, MPI_INT, 0, 0, MPI_COMM_WORLD,MPI_STATUS_IGNORE);printf("1 dynamically received %d numbers from 0.\n",number_of_amount);free(number_buffer);}MPI_Finalize();
}
/******************************************************************
Process 0 sent 29 numbers to process 1.
1 dynamically received 29 numbers from 0.
*******************************************************************/

MPI_Probe 构成了许多动态 MPI 应用程序的基础。 例如,控制端/执行子程序在交换变量大小的消息时通常会大量使用 MPI_Probe。 作为练习,对 MPI_Recv 进行包装,将 MPI_Probe 用于您可能编写的任何动态应用程序。 它将使代码看起来更美好:-)
下一节将通过完整的代码例子说明send和recv为什么是阻塞通信。

http://www.dtcms.com/wzjs/459789.html

相关文章:

  • 勒流网站制作上海百度首页优化
  • 制作旅游网站的步骤手机百度旧版本下载
  • 学做衣服的网站有哪些谷歌paypal官网下载
  • 巨久科技网站建设系统优化的例子
  • 大连百度做网站推广电话cnzz统计
  • 企业网站建立步骤zac博客seo
  • 网站建设搭建运营短视频推广渠道
  • 黑龙江网站建设企业seogw
  • 安徽电商网站建设郑州官网网站优化公司
  • 网站建设怎么赚钱互联网营销方案策划
  • 网站推广目标关键词软件培训班学费多少
  • 有没有做公务员题的网站郑州seo
  • 网站带薪歌手都要怎样做呀武汉建站公司
  • 用ps怎样做网站文字logo灰色关键词排名优化
  • seo优化教程视频百度seo软件
  • 网页建设方案怎么写杭州seo泽成
  • 做网站需要哪些人优化电脑的软件有哪些
  • 阿里云注销网站站长之家排行榜
  • 销售公司做网站全国新闻媒体发稿平台
  • 淘宝客领券网站怎么做怎么申请自己的网络平台
  • 河北网站建设推广查找关键词的工具叫什么
  • 做网站推广方法衡水seo优化
  • 上海信息价查询造价信息网网站优化关键词排名
  • 电子商务网站建设特色seo的优点有哪些
  • 清远市专业网站制作买域名
  • 昆山网站建设ikelv长春网站建设技术支持
  • 民治专业做网站公司推广普通话手抄报简单又好看内容
  • 手机怎么做弹幕小视频网站网站免费搭建
  • 网站建设业务怎么做百度知道官网登录入口
  • 深圳网站制作易捷网络网络热词