void TermMgrModel::init() { slistHeader << tr("编号") << tr("机构编号") << tr("商户编号") << tr("终端编号") << tr("终端密钥") << tr("终端密钥长度") << tr("日期"); recData(); }
void MPIDistribution::MakeActivityValuesLocal(bool fullLayer) { if(m_commsHCsCreated == false && fullLayer == false) { this->MPICreateCommsHypercolumns(); } else if(m_commsLayersCreated == false && fullLayer == true) { this->MPICreateCommLayer(); } vector<int> localHypercolumns = ((PopulationColumns*)m_population)->GetLocalHypercolumnIndexes(); vector<Unit*> units = ((PopulationColumns*)m_population)->GetUnits(); int totMcs = ((PopulationColumns*)m_population)->GetNrUnitsTotal(); vector<float> data; MPI_Comm* comm; bool allLocal = true; if(fullLayer == true && localHypercolumns.size()>0) { data = vector<float>(totMcs); // for(int i=0;i<units.size();i++) data[units[i]->GetUnitIdLocal()] = units[i]->GetValue(); vector<float> recData(data.size()); if(recData.size()>0) { comm = m_mpiCommLayer; MPI_Allreduce(&data[0],&recData[0],data.size(),MPI_FLOAT,MPI_SUM,*comm); m_population->SetValuesBuffer(recData); } } else { for(int i=0;i<localHypercolumns.size();i++) { Hypercolumn* h = (Hypercolumn*)((PopulationColumns*)m_population)->GetHypercolumn(i); vector<RateUnit*> mcs = h->GetRateUnits(); if(fullLayer == false) { vector<MPI_Comm*> mpiComms = MPIGetCommHCs(); if(mpiComms.size()>0) { if(mpiComms.size()!=1) { //cerr<<"Assumption about locality of hypercolumns not correct!"; } //assuming only one non-local hypercolumn on process comm = mpiComms[localHypercolumns[i]]; data = vector<float>(h->GetTotalNrRateUnits()); allLocal = true; } } else { data = vector<float>(totMcs);//mcsIndexes.size()); } for(int j=0;j<mcs.size();j++) { data[mcs[j]->GetUnitIdLocalInHypercolumn()] = mcs[j]->GetValue(); } if(units.size() < h->GetTotalNrRateUnits()) allLocal = false; if(allLocal == false && fullLayer == false) // all local, no need to update { vector<float> recData(data.size()); // using allreduce MPI_Allreduce(&data[0],&recData[0],data.size(),MPI_FLOAT,MPI_SUM,*comm); // using allgatherv /*for(int j=1;j<rcounts.size();j++) { displs[j] = rcounts[j-1]+displs[j-1]; } MPI_Allgatherv( &data[i][0],data[i].size(),MPI_INT,&totalIndexes[0],&rcounts[0],&displs[0],MPI_INT,*comm);*/ h->SetValues(recData); } else if(allLocal == true) h->SetValues(data); } } }