// Main entry point for graph coloring. void color( const RCP<ColoringSolution<Adapter> > &solution, const RCP<Teuchos::ParameterList> &pl ) { HELLO; // Color local graph. Global coloring is supported in Zoltan (not Zoltan2). // Get local graph. ArrayView<const lno_t> edgeIds; ArrayView<const lno_t> offsets; ArrayView<StridedData<lno_t, scalar_t> > wgts; // Not used; needed by getLocalEdgeList const lno_t nVtx = model_->getLocalNumVertices(); model_->getLocalEdgeList(edgeIds, offsets, wgts); // Don't need wgts #if 0 // Debug cout << "Debug: Local graph from getLocalEdgeList" << endl; cout << "rank " << comm_->getRank() << ": nVtx= " << nVtx << endl; cout << "rank " << comm_->getRank() << ": edgeIds: " << edgeIds << endl; cout << "rank " << comm_->getRank() << ": offsets: " << offsets << endl; #endif // Get color array to fill. // TODO: Allow user to input an old coloring. ArrayRCP<int> colors = solution->getColorsRCP(); for (lno_t i=0; i<nVtx; i++){ colors[i] = 0; } // Let colorCrsGraph do the real work. colorCrsGraph(nVtx, edgeIds, offsets, colors, pl); return; }
// Main entry point for graph coloring. void color( const RCP<ColoringSolution<Adapter> > &solution ) { HELLO; // Color local graph. Global coloring is supported in Zoltan (not Zoltan2). // Get local graph. ArrayView<const gno_t> edgeIds; ArrayView<const lno_t> offsets; ArrayView<StridedData<lno_t, scalar_t> > wgts; // Not used; needed by getLocalEdgeList const size_t nVtx = model_->getLocalNumVertices(); // Assume (0,nvtx-1) model_->getEdgeList(edgeIds, offsets, wgts); // Don't need wgts #if 0 // Debug cout << "Debug: Local graph from getLocalEdgeList" << endl; cout << "rank " << comm_->getRank() << ": nVtx= " << nVtx << endl; cout << "rank " << comm_->getRank() << ": edgeIds: " << edgeIds << endl; cout << "rank " << comm_->getRank() << ": offsets: " << offsets << endl; #endif // Get color array to fill. // TODO: Allow user to input an old coloring. ArrayRCP<int> colors = solution->getColorsRCP(); for (size_t i=0; i<nVtx; i++){ colors[i] = 0; } // Let colorCrsGraph do the real work. env_->timerStart(MACRO_TIMERS, "Coloring algorithm"); colorCrsGraph(nVtx, edgeIds, offsets, colors); env_->timerStop(MACRO_TIMERS, "Coloring algorithm"); return; }