⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lm1_slave.c

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 C
字号:
#include "p4.h"#include "lm.h"    slave()	{    int myid;    char buf[100];    int size;    int i,j,k,n;    int nslaves;    int start, end;    char *msg;    char loc_msg[200];    int type;    int done;    int from;    int nbunches,bunchsize;    int value;    int msg_cnt;    int msgs_rcvd[P4_MAXPROCS];  /* cheated and used a p4 internal def */        myid = p4_get_my_id();    nslaves = p4_num_total_ids() - 1;    p4_get_cluster_ids(&start, &end);    /***      p4_dprintf("Inside slave process %d: nslaves=%d start=%d end=%d\n",      myid, nslaves, start, end);      ***/        for (i=0; i < P4_MAXPROCS; i++)	msgs_rcvd[i] = 0;        p4_dprintfl(9,"receiving...\n");    type = CNTL;    from = 0;    msg = NULL;    p4_recv(&type, &from, &msg, &size);    p4_dprintfl(9,"rcvd from=%d type=%d msg=%s\n",from,type,msg);    sscanf(msg,"%d %d",&nbunches,&bunchsize);    p4_msg_free(msg);    msgs_rcvd[from]++;        type = DATA;    for (j=0; j < nbunches; j++)    {	for (i=1; i <= nslaves; i++)	{	    for (k=0; k < bunchsize; k++)	    {		if (i != myid)		{		    sprintf(loc_msg,"%d",j);		    p4_dprintfl(9,"sending %d %d to %d \n",j,k,i);		    p4_send(DATA, i, loc_msg, sizeof(loc_msg));		}	    }	}    }    done = bunchsize * nbunches * (nslaves - 1);    msg_cnt = 0;    while (msg_cnt < done)    {	/**  p4_dprintfl(0,"receiving \n");  **/	type = DATA;	from = -1;	msg = NULL;	p4_recv(&type, &from, &msg, &size);	value = atoi(msg);	msg_cnt++;	p4_msg_free(msg);	msgs_rcvd[from]++;	p4_dprintfl(9,"rcvd from=%d type=%d value=%d\n",from,type,value);    }    p4_send(DATA, 0, loc_msg, sizeof(loc_msg));    p4_dprintf("rcvd from: %d %d %d %d %d %d %d %d \n",	    msgs_rcvd[0], msgs_rcvd[1], msgs_rcvd[2], msgs_rcvd[3],	    msgs_rcvd[4], msgs_rcvd[5], msgs_rcvd[6], msgs_rcvd[7]);	    p4_dprintfl(0,"%d exiting\n", p4_get_my_id());}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -