예제 #1
0
파일: codeare.hpp 프로젝트: kvahed/codeare
bool commandline_opts (int argc, char** argv) {
  
#ifdef HAVE_MPI
  //Grid& gd = Grid::Instance();
  //if (gd.rk == 0) {
#endif
    cout << endl << "codeare " << VERSION ; 

#ifdef GIT_SHA1
    cout << " [" << GIT_SHA1 << "]";
#endif
    cout << endl;
#ifdef HAVE_MPI
//  }
#endif

    std::stringstream intrinsics;
#ifdef __MMX__
    intrinsics << "MMX ";
#endif
#ifdef __SSE__
    intrinsics << "SSE ";
#endif
#ifdef __SSE2__
    intrinsics << "SSE2 ";
#endif
#ifdef __SSSE3__
    intrinsics << "SSSE3 ";
#endif
#ifdef __AVX__
    intrinsics << "AVX ";
#endif
#ifdef __AVX2__
    intrinsics << "AVX2 ";
#endif
#ifdef __FMA__
    intrinsics << "FMA ";
#endif
#ifdef __FMA4__
    intrinsics << "FMA4 ";
#endif
    
    Options opt;
	
    opt.addUsage  ("Copyright (C) 2010-2014");
    opt.addUsage  ("Kaveh Vahedipour<*****@*****.**>");
    opt.addUsage  ("NYU School of Medicine");
    opt.addUsage  (intrinsics.str().c_str());
    opt.addUsage  ("Usage:");
    opt.addUsage  ("codeare -c <configuration_file> -b <base_dir> [OPTIONS]");
    opt.addUsage  ("");
    opt.addUsage  (" -n, --name     Remote service name (optional)");
    opt.addUsage  (" -d, --debug    Debug level 0-40 (default: 0)");
    opt.addUsage  (" -b, --base     Base directory of files");
    opt.addUsage  ("                (default: current directory, i.e. '.'");
    opt.addUsage  (" -c, --config   Configuration XML file name (default: codeare.xml");
    opt.addUsage  (" -i, --infile   Binary data input file name");
    opt.addUsage  ("                (optional: May be assigned in configuration)");
    opt.addUsage  (" -o, --outfile  Binary data output file name");
    opt.addUsage  ("                (optional: May be assigned in configuration)");
    opt.addUsage  ("");
    opt.addUsage  (" -h, --help     Print this help screen");
    opt.addUsage  ("");
    
    opt.setFlag   ("help"  , 'h');
    opt.setOption ("name"  , 'n');
    opt.setOption ("debug" , 'd');
    opt.setOption ("config", 'c');
    opt.setOption ("base"  , 'b');
    opt.setOption ("infile", 'i');
    
    opt.processCommandArgs(argc, argv);
    
    // Help screen
    if (/* !(opt.hasOptions()) ||*/ opt.getFlag("help")) {
        opt.printUsage();
        return false;
    } 
	
    // Debug level
    char* tmp = opt.getValue("debug");
    debug  = (tmp && atoi(tmp) >= 0 && atoi(tmp)  <= 40) ? tmp : ZERO;
    
    // Remote service's CORBA name default "" if specified, remote access is assumed
    tmp      = opt.getValue("name");
    name     = (tmp && strcmp(tmp,EMPTY)) ? tmp : 0;
    
    // Base directory for data
    tmp      = opt.getValue("base");
    base_dir = (tmp && strcmp(tmp,EMPTY)) ? tmp : CURRENT;
    
    // Configuration file, default: config.xml
    tmp      = opt.getValue("config");
    config   = (tmp && strcmp(tmp,EMPTY)) ? tmp : (char*) "config.xml";

    // Input file specified in command line
    infile   = opt.getValue("infile");

    config_file_uri  = base_dir;
    config_file_uri += "/";
    config_file_uri += std::string(config);
    
    return true;
	
}
예제 #2
0
bool init (int argc, char** argv) {

#ifdef HAVE_MPI
  //Grid& gd = Grid::Instance();
#endif

//	if (gd.rk == 0) {
		cout << endl;
#ifdef REMOTE
		cout << "codeare remote client " << VERSION  << endl;
#else
		cout << "codeare local client "  << VERSION  << endl;
#endif
        
#ifdef GIT_COMMIT
		cout << "Commit " << GIT_COMMIT << " [" << GIT_COMMIT_DATE << "]" << endl;
#endif
        //  }
    
		Options *opt = new Options();
		
		opt->addUsage  ("Copyright (C) 2010-2012");
		opt->addUsage  ("Kaveh Vahedipour<*****@*****.**>");
		opt->addUsage  ("Juelich Research Centre");
		opt->addUsage  ("Medical Imaging Physics");
		opt->addUsage  ("");
		opt->addUsage  ("Usage:");
#ifdef REMOTE
		opt->addUsage  ("rclient -n <servicename> -t <test> [OPTIONS]");
#else
		opt->addUsage  ("lclient -t <test> [OPTIONS]");
#endif
		opt->addUsage  ("");
#ifdef REMOTE
		opt->addUsage  (" -n, --name    Remote service name (for example: ReconService)");
#endif
		opt->addUsage  (" -t, --test    Test case (default: DummyRecon. Just connectivity test)");
		opt->addUsage  (" -v, --verbose Debug level 0-40 (default: 0)");
		opt->addUsage  (" -b, --base    Base directory of approved files.");
		opt->addUsage  (" -c, --config  Configuration XML (NuFFT, CGSENSE).");
		opt->addUsage  (" -d, --data    Incoming binary data in HDF5 format.");
		opt->addUsage  (" -p, --pulses  Pulses (Only excitation).");
		opt->addUsage  ("");
		opt->addUsage  (" -h, --help    Print this help screen"); 
		opt->addUsage  ("");
		
		opt->setFlag   ("help"    ,'h');
		opt->setFlag   ("pulses"  ,'p');
#ifdef REMOTE
		opt->setOption ("name"   , 'n');
#endif
		opt->setOption ("test"   , 't');
		opt->setOption ("verbose", 'v');
		opt->setOption ("config" , 'c');
		opt->setOption ("data"   , 'd');
		opt->setOption ("base"   , 'b');
		
		opt->processCommandArgs(argc, argv);
		
		if ( !(opt->hasOptions()) || opt->getFlag("help")) {
			
			opt->printUsage();
			delete opt;
			return false;
			
		} 
		
		verbose = (opt->getValue("verbose" ) && 
				   atoi(opt->getValue("verbose")) >= 0 && 
				   atoi(opt->getValue("verbose")) <= 40) ? opt->getValue("verbose") : (char*) "0";
		name    = (opt->getValue("name")   && 
				   opt->getValue("name")   != (char*)"") ? opt->getValue(   "name") : (char*) "codeare" ;
		base    = (opt->getValue("base")   && 
				   opt->getValue("base")   != (char*)"") ? opt->getValue(   "base") : (char*) "";
		data    = (opt->getValue("data")   && 
				   opt->getValue("data")   != (char*)"") ? opt->getValue(   "data") : (char*) "";
		config  = (opt->getValue("config") && 
				   opt->getValue("config") != (char*)"") ? opt->getValue( "config") : (char*) "";
		test    = (opt->getValue("test"  ) && 
				   opt->getValue("test"  ) != (char*)"") ? opt->getValue(   "test") : (char*) "DummyRecon";
		
		delete opt;

		
	return true;
	
}