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

📄 sdump.c

📁 Parallel programming/Lou Baker, Bradley J.Smith .—New York:McGraw-Hill Book Co.
💻 C
字号:
/* PSPH Parallel SPH Program
 * Bradley Smith, and Lou Baker, Dagonet Software
 * dump.c: routines for processing dumpfiles
 * ReadSPHDumpFile the opposite of WriteSPHDumpFile in io.c
 * may be used with restart or with loading of file to transmit data
 *
 * use PVM to read dumpfile and send across network
 *
 */
 
/* static char sccs_id[]="%Z% %P% %I% %D%"; */
#define DEBUG
#include "all.h"

 /* ultimately, move below to tag.h! */
#define DUMP_CSPTAG (TAG_BASE + 17)
#define DUMP_FSPTAG (TAG_BASE + 18)
#define DUMP_ISPTAG (TAG_BASE + 19)
#define DUMP_CMATTAG (TAG_BASE + 20)
#define DUMP_IMATTAG (TAG_BASE + 21)

/* SLAVE */

FILE *fn,*diagn;
extern int NProc,NRank;
extern  int *PVM_tid;

main(int argc,char **argv)
{
int mytid,From,tid[4];
/* init pvm */
char direction;
diagn=fopen("slave.dia","w");
fprintf(diagn," SLAVE started\n");fflush(diagn);
PVM_GInit(NULL,NULL,0,NULL,1);/* do pvm_mytid , set Rank, etc. */
fprintf(diagn," SLAVE after PVMGInit in main\n"); fflush(diagn);
/* I assume argv[1]=sargv[0], etc, with argv[0]=program name=sdump*/
From = atoi(argv[2]);
#ifdef DEBUG 
fprintf(diagn," SLAVE %d [1]=%s\n",argc,argv[1]);
fflush(diagn);
#endif
if(argv[0]==NULL)
	{
	fprintf(diagn," slave got argv[0]=NULL\n");
	Debug(" slave got argv[0]=NULL\n");
	exit(0);
	}
if(argv[1]==NULL)
	{
	fprintf(diagn," slave got argv[1]=NULL\n");
	Debug(" slave got argv[1]=NULL\n");
	exit(0);
    }
if(argv[2]==NULL)
	{
	fprintf(diagn," slave got argv[2]=NULL\n");
	Debug(" slave got argv[2]=NULL\n");
    }
direction = *(argv[2]);
fprintf(diagn," direction %c\n",direction);
fprintf(diagn," NProc=%d\n",NProc);
fprintf(diagn," tid=%d %d\n",PVM_tid[0],PVM_tid[1]);
From=0;/* from needs parent id PVM_tid[0]  for SendBuf/RecvBuf*/
if(direction=='s')
	{
#ifdef DEBUG 
Debug(" Slave Sending tidparent=%d\n",From);
#endif
	if((fn=fopen(argv[1],"rb"))==NULL)
		{
		/* local error msg will probably do no good to slave, might screw up
		fprintf(stderr," cant open input dump file %s\n",argv[1]);
		*/
		/* use msg.c stuff to report error back to master*/
		Debug(" Slave cant open dump file %s to send %s\n",argv[0],argv[1]);
        exit(0);
		}
	SendDumpFile(fn, From);
	}
else if(direction=='r')
	{/* receive file from master */
#ifdef DEBUG 
fprintf(diagn," slave receiving\n");
fflush(diagn);
Debug(" Slave Receiving\n");
#endif
	if((fn=fopen(argv[1],"wb"))==NULL)
		{
		/* local error msg will probably do no good to slave, might screw up
		fprintf(stderr," cant open input dump file %s\n",argv[0]);
		*/
		/* use msg.c stuff to report error back to master*/
		Debug(" Slave cant open receive dump file %s %s\n",argv[0],argv[1]);
        exit(0);
		}
#ifdef DEBUG 
fprintf(diagn," slave  before RecvDumpfile\n");
fflush(diagn);
Debug(" Slave before RecvDumpfile\n");
#endif
	RecvDumpFile(fn, From);
#ifdef DEBUG 
fprintf(diagn," slave  after RecvDumpfile\n");
fflush(diagn);
Debug(" Slave after RecvDumpfile\n");
#endif
	}
else
	{
	Debug(" Slave cant understand args=%s %s %s\n",argv[0],argv[1],argv[2]);
	fprintf(diagn," Slave cant understand args=%s %s %s\n",argv[0],argv[1],argv[2]);
	fflush(diagn);
	exit(0);
    }
fclose(fn);fclose(diagn);
#ifdef DEBUG 
Debug(" Slave Exiting\n");
#endif
pvm_exit();
}

⌨️ 快捷键说明

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