Beispiel #1
0
int main() {
    
    short pcrnum = 0x7;
    char digest[] =  {
    0x22, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00,   
    0x00, 0x22, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00,
    0x00, 0x07, 0xff, 0xff};
    if (utpm_pcr_extend(pcrnum, digest) != 0) {
        printf("pcr extend failed.\n");
        return -1;
    }
    printf("pcr_extend: pcr %d is: \n", pcrnum);
    printf_buffer(digest, 20);

    char digest2[20];
    if (utpm_pcr_read(pcrnum, digest2) != 0) {
        printf("pcr read failed.\n");
        return -1;
    }

    printf("pcr_read: pcr %d is: \n", pcrnum);
    printf_buffer(digest2, 20);
    return 0;
}
Beispiel #2
0
int main(int argc, char const *argv[])
{
	int size, rank;
	MPI_Init(&argc, &argv);
	MPI_Comm_rank(MPI_COMM_WORLD,&rank);
	MPI_Comm_size(MPI_COMM_WORLD,&size);
	MPI_Status status;

	int subROWS=ROWS/size;
	double *local,*local_new;
	double *p,*p_new;

	init_grid(&local,&local_new,COLS,subROWS+2);
	if (0==rank)
	{
		init_grid(&p,&p_new,COLS,ROWS+2);
		init_boundaries(p,COLS,ROWS+2);
		memmove(p_new,p,COLS*(ROWS+2)*sizeof(double));
		printf_buffer(p_new,COLS,ROWS+2);
	}
	MPI_Barrier(MPI_COMM_WORLD);
	return 0;
}
Beispiel #3
0
int main(int argc, char const *argv[])
{
	int size, rank;
	//MPI_Init(&argc, &argv);
	MPI_Init(NULL,NULL);
	MPI_Comm_rank(MPI_COMM_WORLD,&rank);
	MPI_Comm_size(MPI_COMM_WORLD,&size);
	MPI_Status status;

	int subROWS=ROWS/size;
	double *local,*local_new;
	double *p,*p_new;

	init_grid(&local,&local_new,COLS,subROWS+2);
	if (0==rank)
	{
		printf("Size: %d\nSubrow size is:%d\nThis is the unrelaxed data we have:\n",size,subROWS);
		init_grid(&p,&p_new,COLS,ROWS+2);
		init_boundaries(p,COLS,ROWS+2);
		memmove(p_new,p,COLS*(ROWS+2)*sizeof(double));
		printf_buffer(p_new,COLS,ROWS+2);
		printf("data ended\n");
	}
	MPI_Barrier(MPI_COMM_WORLD);
	/*free(local);
	free(local_new);
	free(p);
	free(p_new);*/
	//return 0;

	//MPI_Barrier(MPI_COMM_WORLD)


	if(0==rank)
		for(int j=0;j<size;j++)
			MPI_Send(p+j*subROWS*COLS,(subROWS+2)*COLS,MPI_DOUBLE,j,0,MPI_COMM_WORLD);
	MPI_Recv(local,(subROWS+2)*COLS,MPI_DOUBLE,0,0,MPI_COMM_WORLD,NULL);
	
	register int count=50;
	int up_nbr,dn_nbr;
	double *firstbuf, *lastbuf;
	init_grid(&firstbuf,&lastbuf,COLS,1);
	while(count>=0)
	{
		///*
		//printf("Rank:%d\n",rank);
		memmove(local_new,local,COLS*(subROWS+2)*sizeof(double));
		relax(local_new,local,COLS,subROWS+2);
		//printf("After relax\n");
		//printf_buffer(local_new,COLS,subROWS+2);

		memmove(lastbuf,local_new,COLS*sizeof(double));
		memmove(firstbuf,local_new+(subROWS+1)*COLS,COLS*sizeof(double));

		up_nbr=(rank==size-1) ? MPI_PROC_NULL : rank+1;
		dn_nbr=(rank==0) ? MPI_PROC_NULL : rank-1;
		//refresh these two buffers here
		MPI_Sendrecv(local_new+(1)*COLS,COLS,MPI_DOUBLE,dn_nbr,0,firstbuf,COLS,MPI_DOUBLE,up_nbr,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
		MPI_Sendrecv(local_new+(subROWS)*COLS,COLS,MPI_DOUBLE,up_nbr,0,lastbuf,COLS,MPI_DOUBLE,dn_nbr,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
		MPI_Barrier(MPI_COMM_WORLD);

		memmove(local_new,lastbuf,COLS*sizeof(double));
		memmove(local_new+(subROWS+1)*COLS,firstbuf,COLS*sizeof(double));
		//maybe things here
		memmove(local,local_new,COLS*(subROWS+2)*sizeof(double));
		//printf("After send receive\n");
		//printf_buffer(local_new,COLS,subROWS+2);
		//printf("Rank:%d over\n",rank);
		//
		count=count-1;
	}
	MPI_Send(local_new+1*COLS,(subROWS)*COLS,MPI_DOUBLE,0,(subROWS+2),MPI_COMM_WORLD);
	//receive relaxed data
	if (0==rank)
		for(int i=0;i<size;i++)
		{
			MPI_Probe(MPI_ANY_SOURCE,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
			//MPI_Recv(p_new+(status,MPI_SOURCE*subROWS+1)*COLS,(subROWS)*COLS,MPI_DOUBLE,status,MPI_SOURCE,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
			MPI_Recv(p_new+(status.MPI_SOURCE*subROWS+1)*COLS,(subROWS)*COLS,MPI_DOUBLE,status.MPI_SOURCE,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
		}
	if(0==rank)
	{
		printf("Final result:\n");
		printf_buffer(p_new,COLS,ROWS+2);
	}
	
	free(local);
	free(local_new);
	free(p);
	free(p_new);
	free(firstbuf);
	free(lastbuf);
	MPI_Finalize();
	return 0;
}