Home || Visual Search || Applications || Architecture || Important Messages || OGL || Src

int Impala::Application::Precompute::ChopMatrix ( CmdOptions &  options  ) 

Definition at line 410 of file mainPrecomputeKernelMatrix.cpp.

References Impala::atol(), Impala::Core::Array::Array2dTem< StorT, elemSize, ArithT >::CPB(), Impala::CmdOptions::GetArg(), Impala::Persistency::RepositoryInFileSystem::GetInstance(), Impala::Persistency::File::GetPath(), Impala::CmdOptions::GetString(), ILOG_INFO, ILOG_VAR, Impala::Core::Database::MakeRawDataSet(), Impala::MakeString(), Impala::Core::Array::PrintDataCorners(), Impala::Persistency::KernelMatrixLocator::SetDoParts(), Impala::Persistency::KernelMatrixLocator::SetWalkType(), and Impala::Core::Array::WriteRaw().

Referenced by MainPrecompute().

00411 {
00412     ILOG_VAR(Impala.Application.Precompute.ChopMatrix);
00413     RawDataSet* thisSet = Core::Database::MakeRawDataSet(options.GetArg(0));
00414     if (!thisSet)
00415     {
00416         ILOG_INFO_HEADNODE("failed to open dataset " << options.GetArg(0));
00417         return 1;
00418     }
00419     RawDataSet* develSet = 0;
00420     String develSetName = options.GetArg(1);
00421     String model = options.GetArg(2);
00422     String kernel = options.GetArg(3);
00423     int nrParts = atol(options.GetArg(5));
00424     KernelMatrixLocator srcLoc(thisSet->GetLocator(), true, "",
00425                                develSetName, model, kernel, "");
00426     srcLoc.SetFeatureIndexCat(options.GetString("featureIndexCat"));
00427 
00428     srcLoc.SetStartNode(0);
00429     srcLoc.SetNodeCount(Link::Mpi::NrProcs());
00430     srcLoc.SetDoParts(2);
00431     DistributedAccess* srcDA = DistributedAccessRepository().Get(srcLoc);
00432     srcDA->Dump();
00433 
00434     Real64* lineBuf = new Real64[srcDA->NrCol()];
00435     typedef Matrix::Mat32 Mat32;
00436     DistributedAccess dstDA(srcDA->NrRow(), srcDA->NrCol(), nrParts, nrParts,
00437                             0, 1);
00438     dstDA.CopyQuidsFrom(srcDA);
00439     dstDA.CopyFeaturesFrom(srcDA);
00440     KernelMatrixLocator dstLoc = srcLoc;
00441     dstLoc.SetWalkType("chopped");
00442     dstLoc.SetDoParts(0);
00443     DistributedAccessRepository().Add(dstLoc, &dstDA);
00444 
00445     for (int row=0 ; row<nrParts ; row++)
00446     {
00447         for (int col=0 ; col<nrParts ; col++)
00448         {
00449             int startY = dstDA.GetRowStartOfPart(row);
00450             int endY = dstDA.GetRowEndOfPart(row);
00451             int startX = dstDA.GetColumnStartOfPart(col);
00452             int endX = dstDA.GetColumnEndOfPart(col);
00453             ILOG_INFO("row=" << row << ", col=" << col << ", startX=" << startX
00454                       << ", endX=" << endX << ", startY=:" << startY
00455                       << ", endY=" << endY);
00456             Mat32* mat = Matrix::MatCreate<Mat32>(endY - startY, endX - startX);
00457             for (int y=startY ; y<endY ; y++)
00458             {
00459                 srcDA->GetRow(y, lineBuf, srcDA->NrCol());
00460                 float* ptr = mat->CPB(0, y-startY);
00461                 for (int x=startX ; x<endX ; x++)
00462                     ptr[x-startX] = lineBuf[x];
00463             }
00464             Array::PrintDataCorners(mat, 2, 2);
00465 
00466             String filename = "PrecomputedKernels/chopped/" + model + "/"
00467                 + kernel + "/" + kernel + ".precomputed.part-R" + MakeString(row)
00468                 + "-C" + MakeString(col) + ".raw" ;
00469             Persistency::File file = RepositoryInFileSystem::GetInstance().
00470                 GetFile(dstLoc, "", filename, true, false);
00471             ILOG_INFO("Saving part in " << file.GetPath());
00472             Array::WriteRaw(mat, file, 1);
00473             delete mat;
00474         }
00475     }
00476 
00477     delete lineBuf;
00478     delete srcDA;
00479     return 0;
00480 }

Here is the call graph for this function:


Generated on Thu Jan 13 09:15:43 2011 for ImpalaSrc by  doxygen 1.5.1