Example #1
0
void finish_run(FILE *log,t_commrec *cr,char *confout,
		t_nsborder *nsb,t_topology *top,t_parm *parm,
		t_nrnb nrnb[],double nodetime,double realtime,int step,
		bool bWriteStat)
{
  int    i,j;
  t_nrnb ntot;
  real   runtime;
  for(i=0; (i<eNRNB); i++)
    ntot.n[i]=0;
  for(i=0; (i<nsb->nnodes); i++)
    for(j=0; (j<eNRNB); j++)
      ntot.n[j]+=nrnb[i].n[j];
  runtime=0;
  if (bWriteStat) {
    runtime=parm->ir.nsteps*parm->ir.delta_t;
    if (MASTER(cr)) {
      fprintf(stderr,"\n\n");
      print_perf(stderr,nodetime,realtime,runtime,&ntot,nsb->nnodes);
    }
    else
      print_nrnb(log,&(nrnb[nsb->nodeid]));
  }

  if (MASTER(cr)) {
    print_perf(log,nodetime,realtime,runtime,&ntot,nsb->nnodes);
    if (nsb->nnodes > 1)
      pr_load(log,nsb->nnodes,nrnb);
  }
}
Example #2
0
int 
main (int argc, char **argv)

{
	int     k_param = 1;
	int length;
	char *  inbuf;
	char * outbuf;
	FILE *  fptr;
	struct pixrect *pix;
	struct mpr_data *src_mpr;
	int skip;

	argv++;

	if ( (argc > 1) && (**argv == '-')) {
		switch (*++*argv) {
		case '1':
			k_param = 1;
			break;
		case '2':
			k_param = 2;
			break;
		case '4':
			k_param = 4;
			break;
		case 'n':
			k_param = 1;
			break;
		case 'l':
			k_param = 2;
			break;
		case 'h':
			k_param = 4;
			break;
		case 'v':
			k_param = 32767;
			break;
		default :
			 fprintf (stderr,"Usage: %s -[124nlhv] \n",argv[0]);
			exit (-1);
		}
		argv++;
		argc--;
	}


	if ((pix = pr_load (stdin, NULL)) == (struct pixrect *)NULL)
		 fprintf (stderr,"Not a pixrect.\n");


	PIC_LINESIZE = pix->pr_size.x;
	STOP  = PIC_LINESIZE + 1;
	NUMLINES = pix->pr_size.y;

	src_mpr = (struct mpr_data *)(pix->pr_data);
	inbuf = (char *) src_mpr->md_image;

	skip = 16 - (PIC_LINESIZE % 16);
	if  (skip == 16) skip = 0;

	outbuf = encode_t4 (k_param,inbuf,skip);

	fwrite (outbuf, optlen, 1, stdout);

}
void finish_run(FILE *fplog,t_commrec *cr,char *confout,
		t_inputrec *inputrec,
		t_nrnb nrnb[],gmx_wallcycle_t wcycle,
		double nodetime,double realtime,int nsteps_done,
		bool bWriteStat)
{
  int    i,j;
  t_nrnb *nrnb_all=NULL,ntot;
  real   delta_t;
  double nbfs,mflop;
  double cycles[ewcNR];
#ifdef GMX_MPI
  int    sender;
  double nrnb_buf[4];
  MPI_Status status;
#endif

  wallcycle_sum(cr,wcycle,cycles);

  if (cr->nnodes > 1) {
    if (SIMMASTER(cr))
      snew(nrnb_all,cr->nnodes);
#ifdef GMX_MPI
    MPI_Gather(nrnb,sizeof(t_nrnb),MPI_BYTE,
	       nrnb_all,sizeof(t_nrnb),MPI_BYTE,
	       0,cr->mpi_comm_mysim);
#endif  
  } else {
    nrnb_all = nrnb;
  }
    
  if (SIMMASTER(cr)) {
    for(i=0; (i<eNRNB); i++)
      ntot.n[i]=0;
    for(i=0; (i<cr->nnodes); i++)
      for(j=0; (j<eNRNB); j++)
	ntot.n[j] += nrnb_all[i].n[j];

    print_flop(fplog,&ntot,&nbfs,&mflop);
    if (nrnb_all) {
      sfree(nrnb_all);
    }
  }

  if ((cr->duty & DUTY_PP) && DOMAINDECOMP(cr)) {
    print_dd_statistics(cr,inputrec,fplog);
  }

  if (SIMMASTER(cr)) {
    if (PARTDECOMP(cr)) {
      pr_load(fplog,cr,nrnb_all);
    }

    wallcycle_print(fplog,cr->nnodes,cr->npmenodes,realtime,wcycle,cycles);

    if (EI_DYNAMICS(inputrec->eI)) {
      delta_t = inputrec->delta_t;
    } else {
      delta_t = 0;
    }
    
    if (fplog) {
      print_perf(fplog,nodetime,realtime,cr->nnodes-cr->npmenodes,
		 nsteps_done,delta_t,nbfs,mflop);
    }
    if (bWriteStat) {
      print_perf(stderr,nodetime,realtime,cr->nnodes-cr->npmenodes,
		 nsteps_done,delta_t,nbfs,mflop);
    }

    /*
    runtime=inputrec->nsteps*inputrec->delta_t;
    if (bWriteStat) {
      if (cr->nnodes == 1)
	fprintf(stderr,"\n\n");
      print_perf(stderr,nodetime,realtime,runtime,&ntot,
		 cr->nnodes-cr->npmenodes,FALSE);
    }
    wallcycle_print(fplog,cr->nnodes,cr->npmenodes,realtime,wcycle,cycles);
    print_perf(fplog,nodetime,realtime,runtime,&ntot,cr->nnodes-cr->npmenodes,
	       TRUE);
    if (PARTDECOMP(cr))
      pr_load(fplog,cr,nrnb_all);
    if (cr->nnodes > 1)
      sfree(nrnb_all);
    */
  }
}