本文整理汇总了C++中graph_type类的典型用法代码示例。如果您正苦于以下问题:C++ graph_type类的具体用法?C++ graph_type怎么用?C++ graph_type使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了graph_type类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WorkGraphPolicy
WorkGraphPolicy( const graph_type & arg_graph )
: m_graph(arg_graph)
, m_queue( view_alloc( "queue" , WithoutInitializing )
, arg_graph.numRows() * 2 + 2 )
{
{ // Initialize
using policy_type = RangePolicy<std::int32_t, execution_space, TagInit>;
using closure_type = Kokkos::Impl::ParallelFor<self_type, policy_type>;
const closure_type closure(*this, policy_type(0, m_queue.size()));
closure.execute();
execution_space::fence();
}
{ // execute-after counts
using policy_type = RangePolicy<std::int32_t, execution_space, TagCount>;
using closure_type = Kokkos::Impl::ParallelFor<self_type, policy_type>;
const closure_type closure(*this,policy_type(0,m_graph.entries.size()));
closure.execute();
execution_space::fence();
}
{ // Scheduling ready tasks
using policy_type = RangePolicy<std::int32_t, execution_space, TagReady>;
using closure_type = Kokkos::Impl::ParallelFor<self_type, policy_type>;
const closure_type closure(*this,policy_type(0,m_graph.numRows()));
closure.execute();
execution_space::fence();
}
}
示例2: merge_values
void merge_values(vid_vdata_vector_type& element, graph_type& graph) {
for (auto vertex : element) {
if (graph.contains_vertex(vertex.first)) {
const graphlab::lvid_type lvid = graph.local_vid(vertex.first);
graph.l_vertex(lvid).data() = vertex.second;
}
}
}
示例3:
SynchronousEngine<algorithm_t>::SynchronousEngine(graph_type& graph):
iteration_counter_(0), max_iterations_(5), graph_(graph) {
vertex_programs_.resize(graph.num_local_vertices());
gather_accum_.resize(graph.num_local_vertices());
has_msg_.resize(graph.num_local_vertices(), 0);
has_msg_.resize(graph.num_local_vertices(), message_type());
active_superstep_.resize(graph.num_local_vertices(), 0);
active_minorstep_.resize(graph.num_local_vertices(), 0);
}
示例4: rmi
graph_gather_apply<Graph,GatherType>::graph_gather_apply(
graph_type& graph,
gather_fun_type gather_fun,
apply_fun_type apply_fun,
const graphlab_options& opts) :
gather_fun(gather_fun), apply_fun(apply_fun), rmi(graph.dc(), this), graph(graph),
threads(opts.get_ncpus()),
thread_barrier(opts.get_ncpus()),
gather_exchange(graph.dc(), opts.get_ncpus(), 64 * 1024) { }
示例5:
SynchronousEngine<algorithm_t>::SynchronousEngine(graph_type& graph):
iteration_counter_(0), max_iterations_(5), graph_(graph) {
vertex_programs_.resize(graph.num_local_vertices());
gather_accum_.resize(graph.num_local_vertices());
has_msg_.resize(graph.num_local_vertices(), 0);
messages_.resize(graph.num_local_vertices(), message_type());
active_superstep_.resize(graph.num_local_vertices(), 0);
active_minorstep_.resize(graph.num_local_vertices(), 0);
context = new context_type(*this, graph);
aggregator = new aggregator_type(graph, context);
cout<<"sync engine init"<<endl;
}
示例6: visit_next_component
void visit_next_component(const graph_type& g, const int starting_vertex_id, Sequence& visited)
{
pk::queue<int, graph_type::max_num_of_vertices> q;
q.push(starting_vertex_id);
visited[starting_vertex_id] = true;
while(!q.empty())
{
const int v = q.front();
q.pop();
component_ids[v] = number_of_components;
const typename graph_type::adjacency_list& adj_v = g.get_adjacency_list(v);
for(int i = 0; i < adj_v.size(); ++i)
{
const int u = adj_v[i].to;
if(visited[u])
continue;
q.push(u);
visited[u] = true;
}
}
}
示例7: vertex_loader
// Second loader that only a single machine calls and pre-loads cameras.
bool vertex_loader(graph_type& graph, string img_path, vector<CameraParams>& cameras)
{
// force a "/" at the end of the path
// make sure to check that the path is non-empty. (you do not
// want to make the empty path "" the root path "/" )
string path = img_path;
if (path.length() > 0 && path[path.length() - 1] != '/') path = path + "/";
vector<string> graph_files;
string search_prefix;
graphlab::fs_util::list_files_with_prefix(path, search_prefix, graph_files);
if (graph_files.size() == 0)
logstream(LOG_WARNING) << "No files found in " << path << std::endl;
// vertex data & id
graphlab::vertex_id_type vid(-1);
///////////////////////////////////////////////////////
// Loop over files
for(size_t i = 0; i < graph_files.size(); ++i)
{
vid = i;
vertex_data vdata;
vdata.empty = false;
vdata.img_path = graph_files[i];
vdata.features.img_idx = i;
vdata.camera = cameras[i]; // addition to above function.
graph.add_vertex(vid, vdata);
}
return true;
}
示例8: dfs
static bool dfs(
const graph_type& graph,
const int vertex_id,
pk::vector<int, graph_type::max_num_of_vertices>& colors,
pk::stack<int, graph_type::max_num_of_vertices>& s)
{
if(colors[vertex_id] == 1)
return false;
if(colors[vertex_id] == 2)
return true;
colors[vertex_id] = 1;
const typename graph_type::adjacency_list& adjacent_edges = graph.get_adjacency_list(vertex_id);
for(int i = 0; i < adjacent_edges.size(); ++i)
{
if(!dfs(graph, adjacent_edges[i].to, colors, s))
return false;
}
colors[vertex_id] = 2;
s.push(vertex_id);
return true;
}
示例9: write_results
void write_results(char* ofile, graph_type& graph) {
std::cout << "PageRank: Writing results to: " << ofile << std::endl;
std::ofstream fout(ofile);
assert(fout.is_open());
for(graphlab::lvid_type lvid = 0; lvid < graph.get_local_graph().num_vertices(); ++lvid) {
if (!graph.l_is_master(lvid)) {
continue;
}
size_t id = graph.global_vid(lvid);
double val = graph.get_local_graph().vertex(lvid).data();
fout << id << "\t" << val << std::endl;
}
fout.close();
std::cout << "PageRank: Results written." << std::endl;
}
示例10: line_parser
/////////////////////////////////////////////////////////////////////////
// Load the distributed UAI file
bool line_parser(graph_type& graph, const std::string& filename, const std::string& textline) {
std::stringstream strm(textline);
graphlab::vertex_id_type vid;
vertex_data vdata;
vdata.dual_contrib = 0.0;
string type;
strm >> type;
if(type == "v") {
vdata.factor_type = VAR;
vdata.nvars = 1;
vdata.cards.resize(1);
strm>>vid;
strm >> vdata.cards[0];
vdata.potentials.resize(vdata.cards[0]);
//vdata.beliefs.setOnes(vdata.cards[0]);
//vdata.beliefs /= vdata.cards[0];
vdata.beliefs.setConstant(vdata.cards[0], 0.5);
vdata.unary_degree.resize(vdata.cards[0], 0);
//for(int i=0; i< vdata.cards[0]; i++){
// strm>>vdata.potentials[i];
// vdata.potentials[i] = log10(vdata.potentials[i]);
// }
// vdata.potentials.maxCoeff(&vdata.best_configuration);
graph.add_vertex(vid,vdata);
}
示例11: test_contains_edge
void test_contains_edge(graph_type g,
vector<typename graph_type::location_type> present_locs,
vector<typename graph_type::location_type> absent_locs)
{
for (auto loc : present_locs) {
if (!g.contains_edge(loc)) {
cout << "Test contains_egde failed on " << loc.first << ',' << loc.second << '\n';
exit(1);
}
}
for (auto loc : absent_locs) {
if (g.contains_edge(loc)) {
cout << "Test does not contains_egde failed on " << loc.first << ',' << loc.second << '\n';
exit(1);
}
}
cout << "Contains edge passed\n";
}
示例12: line_parser
bool line_parser(graph_type& graph, const std::string& filename,
const std::string& textline)
{
std::istringstream ssin(textline);
graphlab::vertex_id_type vid;
ssin >> vid;
int out_nb;
ssin >> out_nb;
if (out_nb == 0)
graph.add_vertex(vid);
while (out_nb--) {
graphlab::vertex_id_type other_vid;
ssin >> other_vid;
graph.add_edge(vid, other_vid);
}
return true;
}
示例13: test_delete_edges
void test_delete_edges(graph_type g,
vector<typename graph_type::location_type> kill_edges,
vector<weight_type> expected_weights)
{
for (auto k : kill_edges) {
g.delete_edge(k);
}
test_graph_iterator(g, expected_weights);
cout << "Delete edges passed\n";
}
示例14: edge_loader
/////////////////////////////////////////////////////////////////////////
// Edge Loader (used to read the adjacency list and add edges to the graph)
bool edge_loader(graph_type& graph, const std::string& fname,
const std::string& textline)
{
if ( textline.length() == 0 || textline[0] == '#' )
return true; // empty or comment line, return
std::stringstream strm(textline);
graphlab::vertex_id_type vid;
// first entry in the line is a vertex ID
strm >> vid;
if (opts.verbose > 0)
logstream(LOG_EMPH) << "Here's the input: "
<< textline << "\n"
<< vid << "\n";
// Line should contain at least 1 more number (degree of node)
if (!strm.good())
{
logstream(LOG_ERROR) << "The following ajacency list line is incomplete(check adj_list standard):\n"
<< textline << std::endl;
return EXIT_FAILURE;
}
// second entry is the out-degree
int outdeg;
strm >> outdeg;
graphlab::vertex_id_type other_vid;
for (int i=0; i!=outdeg; ++i)
{
// Line should contain more numbers (id of neighbours)
if (!strm.good())
{
logstream(LOG_ERROR) << "The following ajacency list line is incomplete(check adj_list standard):\n"
<< textline << std::endl;
return EXIT_FAILURE;
}
strm >> other_vid;
// only add edges in one direction
if (other_vid < vid)
continue;
if (opts.verbose > 0)
logstream(LOG_EMPH) << "Adding edge: (" << vid << "," << other_vid << ")\n";
edge_data edata; edata.empty = false;
graph.add_edge(vid,other_vid,edata);
}
return true;
}
示例15: test_edges_at
void test_edges_at(graph_type g,
vector<typename graph_type::location_type> modify_edges,
weight_type new_value,
vector<weight_type> expected_weights)
{
for (auto m : modify_edges) {
g.edge_at(m).weight() = new_value;
}
test_graph_iterator(g, expected_weights);
cout << "Edges at passed\n";
}