Пример #1
0
    void create_from_graph(const graph<VertexData, EdgeData> &g,
                           const std::vector<vertex_id_type> &partids) {
      clear();
      size_t nv = g.num_vertices();
      logger(LOG_WARNING, "storing vertices...");
#pragma omp parallel for 
      for (int i = 0;i < (int)nv; ++i) {
        vertex_id_type vid = i;
        size_t hashloc = (vid) % atoms.size();
        //place vertices sequentially
        uint16_t owner = partids[i] % atoms.size();
        atoms[hashloc]->set_owner(vid, owner);
        atoms[owner]->add_vertex(vid, owner, g.vertex_data(i));
        atoms[owner]->set_color(vid, g.color(vid));
      }
      logger(LOG_WARNING, "storing edges...");
#pragma omp parallel for 
      for (int i = 0;i < (int)(g.num_edges()); ++i) {
        vertex_id_type target = g.target(i);
        vertex_id_type source = g.source(i);
        uint16_t sourceowner = partids[source] % atoms.size();
        uint16_t targetowner = partids[target] % atoms.size();
        if (sourceowner != targetowner) atoms[sourceowner]->add_edge(source, sourceowner, target, targetowner);
        atoms[targetowner]->add_edge(source, sourceowner, target, targetowner, g.edge_data(i));
      }
    
      numv.value = g.num_vertices();
      nume.value = g.num_edges();
      finalize();
    }
Пример #2
0
 stats_t(graph& g):searchtree_nodes(0), searchtree_depth(0){
   input_vertices = g.vertices.size();
   input_edges = g.num_edges();
   input_FES = get_FES(g);
 }