void NaughtyProcessMonitor::slotTimeout() { uint cpu = cpuLoad(); emit(load(cpu)); if(cpu > d->triggerLevel_ * (d->interval_ / 1000)) { uint load; QValueList< ulong > l(pidList()); for(QValueList< ulong >::ConstIterator it(l.begin()); it != l.end(); ++it) if(getLoad(*it, load)) _process(*it, load); } d->timer_->start(d->interval_, true); }
CrsMatrix_SubCopy::NewTypeRef CrsMatrix_SubCopy:: operator()( OriginalTypeRef orig ) { origObj_ = &orig; //Error, must be local indices assert( orig.Filled() ); //test maps, new map must be subset of old const Epetra_Map & oRowMap = orig.RowMap(); const Epetra_Map & oColMap = orig.ColMap(); int oNumRows = oRowMap.NumMyElements(); (void) oNumRows; // Silence "unused variable" compiler warning. int oNumCols = oColMap.NumMyElements(); int nNumRows = newRowMap_.NumMyElements(); int nNumDomain = newDomainMap_.NumMyElements(); bool matched = true; // Make sure all rows in newRowMap are already on this processor for( int i = 0; i < nNumRows; ++i ) matched = matched && ( oRowMap.MyGID(newRowMap_.GID(i)) ); if( !matched ) std::cerr << "EDT_CrsMatrix_SubCopy: Bad new_row_Map. GIDs of new row map must be GIDs of the original row map on the same processor.\n"; // Make sure all GIDs in the new domain map are GIDs in the old domain map if( !newRangeMap_.SameAs(newDomainMap_) ) { Epetra_IntSerialDenseVector pidList(nNumDomain); oColMap.RemoteIDList(newDomainMap_.NumMyElements(), newDomainMap_.MyGlobalElements(), pidList.Values(), 0); for( int i = 0; i < nNumDomain; ++i ) matched = matched && ( pidList[i]>=0 ); } if( !matched ) std::cout << "EDT_CrsMatrix_SubCopy: Bad newDomainMap. One or more GIDs in new domain map are not part of original domain map.\n"; assert( matched ); // Next build new column map Epetra_IntSerialDenseVector pidList(oNumCols); Epetra_IntSerialDenseVector lidList(oNumCols); Epetra_IntSerialDenseVector sizeList(oNumCols); newDomainMap_.RemoteIDList(oColMap.NumMyElements(), oColMap.MyGlobalElements(), pidList.Values(), 0); int numNewCols = 0; Epetra_IntSerialDenseVector newColMapGidList(oNumCols); int * origColGidList = oColMap.MyGlobalElements(); for( int i = 0; i < oNumCols; ++i ) if (pidList[i] >=0) newColMapGidList[numNewCols++]= origColGidList[i]; newColMap_ = Epetra_Map(-1, numNewCols, newColMapGidList.Values(), 0, oColMap.Comm()); importer_ = new Epetra_Import(newRowMap_, oRowMap); Epetra_CrsMatrix * newMatrix = new Epetra_CrsMatrix(Copy, newRowMap_, newColMap_, 0); newObj_ = newMatrix; newObj_->Import(*origObj_, *importer_, Add); newObj_->FillComplete(); return *newObj_; }