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:
|