Definition at line 113 of file mainConceptSet.cpp. References Impala::CmdOptions::AddOption(), DoApproxFikModel(), Impala::CmdOptions::GetArg(), Impala::CmdOptions::GetInstance(), Impala::CmdOptions::GetInt(), Impala::Core::Database::RawDataSet::GetLocator(), Impala::CmdOptions::GetString(), ILOG_DEBUG, ILOG_ERROR, ILOG_ERROR_COUNT, ILOG_INFO, ILOG_NDC_POP, ILOG_NDC_PUSH, ILOG_VAR, Impala::CmdOptions::Initialise(), Impala::Core::Database::MakeRawDataSet(), Impala::CmdOptions::ParseArgs(), and Impala::Core::Vector::ReduceSum(). Referenced by main(). 00114 { 00115 Link::Mpi::Init(&argc, &argv); 00116 00117 CmdOptions& options = CmdOptions::GetInstance(); 00118 options.Initialise(false, false, true); 00119 options.AddOption(0, "start", "index of concept to start with", "0"); 00120 options.AddOption(0, "number", "number of concepts", "-1"); 00121 options.AddOption(0, "concept", "name", ""); 00122 options.AddOption(0, "featureIndexCat", "name", ""); 00123 00124 if (! options.ParseArgs(argc, argv, "cmd dataSet conceptSet [cmdArgs]", 3)) 00125 { 00126 Link::Mpi::Finalize(); 00127 return 1; 00128 } 00129 00130 ILOG_VAR(Impala.Application.ConceptSet.mainConceptSet); 00131 00132 int curArg = 0; 00133 String cmd = options.GetArg(curArg++); 00134 String dataSetName = options.GetArg(curArg++); 00135 String conceptSet = options.GetArg(curArg++); 00136 00137 RawDataSet* dataSet = MakeRawDataSet(dataSetName); 00138 KeywordListLocator loc(dataSet->GetLocator(), conceptSet); 00139 KeywordList concepts = *(KeywordListRepository().Get(loc)); 00140 00141 00142 int start = options.GetInt("start"); 00143 int number = options.GetInt("number"); 00144 String concept = options.GetString("concept"); 00145 if (!concept.empty()) 00146 { 00147 for (int i=0 ; i<concepts.size() ; i++) 00148 { 00149 if (concepts[i] == concept) 00150 { 00151 start = i; 00152 number = 1; 00153 } 00154 } 00155 } 00156 if (number == -1) 00157 number = concepts.size(); 00158 if (start + number >= concepts.size()) 00159 number = concepts.size() - start; 00160 int last = start + number; 00161 int numProcs = Link::Mpi::NrProcs(); 00162 int myId = Link::Mpi::MyId(); 00163 int taskSize = number / numProcs; 00164 int restSize = number % numProcs; 00165 int cur = start; 00166 for (int i=0 ; i<=myId ; i++) 00167 { 00168 start = cur; 00169 number = taskSize; 00170 if (--restSize >= 0) 00171 number++; 00172 if (start + number > last) 00173 number = last - start; 00174 cur += number; 00175 } 00176 ILOG_INFO("Process " << myId << " of " << numProcs << " is doing concepts " 00177 << start << " till " << start + number); 00178 00179 ILOG_INFO_HEADNODE("conceptset command : " << cmd); 00180 for (int i=start ; i<start+number ; i++) 00181 { 00182 ILOG_INFO("doing concept " << concepts[i]); 00183 ILOG_NDC_PUSH(concepts[i]); 00184 if (cmd == "approxfikmodel") 00185 DoApproxFikModel(dataSet, conceptSet, concepts[i], options, curArg); 00186 else 00187 { 00188 ILOG_ERROR("Unknown command : " << cmd); 00189 ILOG_NDC_POP; 00190 break; 00191 } 00192 ILOG_NDC_POP; 00193 } 00194 00195 int nrOfErrors = ILOG_ERROR_COUNT; 00196 ILOG_DEBUG("nr of errors collected = " << nrOfErrors); 00197 00198 nrOfErrors = Link::Mpi::ReduceSum(nrOfErrors); 00199 ILOG_INFO_HEADNODE("Root: total nr error = " << nrOfErrors); 00200 Link::Mpi::Finalize(); 00201 00202 return nrOfErrors; 00203 }
Here is the call graph for this function: ![]()
|