Пример #1
0
int main(int ac, char **av){
	char	*outfile = NULL;
	char	*infile = NULL;
	int	i,k, cid;
	int	rcode;
	RecBase	Rec;
	int	sw_err = 0;

	for ( k=1 ; k<ac ; k++ ){
		if ( 0 == strcmp(av[k],"-h") ){  sw_help = 1;  continue; }
		if ( 0 == strcmp(av[k],"-v") ){  sw_verbose = 1;  continue; }
		if ( 0 == strcmp(av[k],"-dim") ){
			if ( ++k >= ac ){  sw_err = 1;  break; }
			sw_dim = atoi(av[k]);
			if ( sw_dim < 1 ){  sw_err = 1;  break; }
			continue;
		}
		if ( 0 == strcmp(av[k],"-F") ){
			if ( ++k >= ac ){  sw_err = 1;  break; }
#ifdef	Use_DEfeature
			if ( 0 == strcmp(av[k],"DEF") ){ sw_dim = FVECDIM_DEF; continue; }
			if ( 0 == strcmp(av[k],"DEFOL") ){ sw_dim = FVECDIM_DEFOL; continue; }
#endif
			if ( 0 == strcmp(av[k],"P-LOVE") ){ sw_dim = FVECDIM_PLOVE; continue; }
			if ( 0 == strcmp(av[k],"PLOVE") ){ sw_dim = FVECDIM_PLOVE; continue; }
			if ( 0 == strcmp(av[k],"P-LM") ){ sw_dim = FVECDIM_PLM; continue; }
			if ( 0 == strcmp(av[k],"PLM") ){ sw_dim = FVECDIM_PLM; continue; }
			sw_err = 1;  break;
		}
		if ( 0 == strcmp(av[k],"-o") ){
			if ( ++k >= ac ){  sw_err = 1;  break; }
			outfile = av[k];
			continue;
		}
		if ( infile == NULL ){  infile = av[k];  break; }
	}

	if ( sw_err || sw_help || outfile == NULL || infile == NULL ){
		fputs("Make character dictionary\n",stderr);
		fputs("makedic v1.1  Copyright (C) 2005-2010 Hideaki Goto\n",stderr);
		fputs("usage: makedic [options] -o out_dic_file  vec_file1 vec_file2 ...\n",stderr);
#ifdef	Use_DEfeature
		fputs("         -F type : feature type PLOVE/PLM(default)/DEF/DEFOL\n",stderr);
#else
		fputs("         -F type : feature type PLOVE/PLM(default)\n",stderr);
#endif
		fprintf(stderr,"         -dim N : dimension of feature vector (default:%d)\n",FVECDIM_PLM);
		fputs("         -v     : verbose mode\n",stderr);
		return(1);
	}

	rcode = load_vec(&Rec, infile, sw_dim);
	if ( rcode )  return(rcode);

	for ( k++ ; k<ac ; k++ ){
		rcode = add_vec(&Rec, av[k]);
		if ( rcode )  return(rcode);
	}

	if ( sw_verbose ){
		fprintf(stderr,"%d sets loaded.\n",n_set);
	}

	/* normalization */
	for ( cid=0 ; cid<Rec.n_cat ; cid++ ){
		for ( i=0 ; i<Rec.dic[cid].dim ; i++ ){
			Rec.dic[cid].e[i] /= (double)n_set;
		}
	}

	save_dic(&Rec, outfile);

	return(rcode);
}
Пример #2
0
int main( int argc, char* argv[] ) {
	int writeOutX = 0;
	int n, k;
	int maxiterations = 1000;
	int niters=0;
 	double norm;
	double* b;
	double* x;
	double time;
	double t1, t2;
	
	MPI_Init( &argc, &argv );
	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
	MPI_Comm_size(MPI_COMM_WORLD, &size);
	
	// Read command line args.
	// 1st case runs model problem, 2nd Case allows you to specify your own b vector
	if ( argc == 3 ) {
		k = atoi( argv[1] );
		n = k*k;
		// each processor calls cs240_getB to build its own part of the b vector!
	} else if  ( !strcmp( argv[1], "-i" ) && argc == 4 ) {
		b = load_vec( argv[2], &k );
	} else {
		printf( "\nCGSOLVE Usage: \n\t"
			"Model Problem:\tmpirun -np [number_procs] cgsolve [k] [output_1=y_0=n]\n\t"
			"Custom Input:\tmpirun -np [number_procs] cgsolve -i [input_filename] [output_1=y_0=n]\n\n");
		exit(0);
	}
	writeOutX = atoi( argv[argc-1] ); // Write X to file if true, do not write if unspecified.

	
	// Start Timer
	t1 = MPI_Wtime();
	
	// CG Solve here!
	x = cgsolve(k);
 	// End Timer
	t2 = MPI_Wtime();
	
	printf("TEST: %s\n", cs240_verify(x, k, 0.0) ? "PASSED" : "FAILED");

	if ( writeOutX ) {
		save_vec( k, x );
	}
		
	// Output
	printf( "Problem size (k): %d\n",k);
	if(niters>0){
          printf( "Norm of the residual after %d iterations: %lf\n",niters,norm);
        }
	printf( "Elapsed time during CGSOLVE: %lf\n", t2-t1);
	
        // Deallocate 
        if(niters > 0){
	  free(b);
	}
        if(niters > 0){
          free(x);
	}
	
	MPI_Finalize();
	
	return 0;
}