Exemplo n.º 1
0
// Shared solver kernels
void run_copy_u(Chunk* chunk, Settings* settings)
{
    START_PROFILING(settings->kernel_profile);
    copy_u(
            chunk->x, chunk->y, settings->halo_depth, chunk->u0, chunk->u);
    STOP_PROFILING(settings->kernel_profile, __func__);
}
Exemplo n.º 2
0
void main()
{
 	int	i,j,k,cl,*count;
 	int 	error=1,error1 =0;
 	double 	**U,**Z,m;
 	FILE 	*fp;
 	int 	*pcls,*ncls;
 	char 	filename[50],filename1[50];
 	long *member,member_index=0;
 	
 	printf("\nEnter the number of clusters\n");
 	scanf("%d",&c);
 	
 	printf("\nEnter the number of features\n");
 	scanf("%d",&f);
 	
 	member=(long*)malloc(c*sizeof(long*));
 	
 	Read_data();

 	z = (double**)calloc(c,sizeof(double*));
 	U = (double**)calloc(c,sizeof(double*));
 	Z = (double**)calloc(c,sizeof(double*));
 	count = (int*)calloc(c,sizeof(int));
 	
 	for(i=0; i <c; i++)
 	{
		z[i] = (double*)calloc(f , sizeof(double));
		U[i] = (double*)calloc(n , sizeof(double));
		Z[i] = (double*)calloc(f , sizeof(double));
		
		if((z[i] == NULL) || (U[i] == NULL))
		{
			printf("error\n");
			exit(1);
		}
 	} 	
 	
 	sum=(double*)malloc(f*sizeof(double));
 	initial_mv_matrix();
 	
 		
 	while(error) 
 	{ 
		proto_type_update();
		copy_u(U);				
		mv_matrix_update();
		error = Error_matrices(U);
 	}
 	
 	/*while(error1) 
 	{ 
		proto_type_update();
		copy_z(Z);
		mv_matrix_update();
		error1 = Error_proto(Z);
 	}
 	*/
 	printf("\nEnter the file name to store the centers\n");
 	scanf("%s",filename1);
 	fp = fopen(filename1,"w");
 	for(i=0;i<c;i++)
 	{
 		for(j=0;j<f-1;j++)
 			fprintf(fp,"%16.15lf  ",z[i][j]);
 		fprintf(fp,"%16.15lf",z[i][j]);
 		fprintf(fp,"\n");
 	}
 	fclose(fp);
 	
 	printf("\nEnter the file name\n");
 	scanf("%s",filename);
 	
 	fp = fopen(filename,"w");
 	for(j=0; j<n; j++)
 	{
  		m=0.0;
  		for(i=0; i<c; i++)
  		{
			if(u[i][j] > m)
			{
				m=u[i][j];
				cl=i;
			}
  		}
  		count[cl]++;
  
  		fprintf(fp,"\n%d %d ",j,cl);
  
 	}
 	fclose(fp);
 
 	for(i=0; i<c; i++)
		printf("%d ",count[i]);
 	printf("\n");
 
 	/*pcls=(int *)calloc(c,sizeof(int));
 	ncls=(int *)calloc(c,sizeof(int));*/
 
 	fp = fopen(filename,"r");
 	for(i=0;i<n;i++)
 	{
 		fscanf(fp,"%d%d",&j,&cl);
 	
 		/*if(j%2==0)
 			pcls[cl]=pcls[cl]+1;
 		else 
 			ncls[cl]=ncls[cl]+1;*/
 		
 		member[cl]++;
 		
 	}
 
 	for(i=0;i<c;i++)
 		printf("\ncls[%d] = %d  \n",i,member[i]);
 
 	free(pcls);
 	free(ncls); 	

 	return; 

}