#include <graphchi_dynamicgraph_engine.hpp>
Public Types | |
typedef graphchi_engine < VertexDataType, EdgeDataType > | base_engine |
typedef edge_buffer_flat < EdgeDataType > | edge_buffer |
![]() | |
typedef sliding_shard < VertexDataType, EdgeDataType, svertex_t > | slidingshard_t |
typedef memory_shard < VertexDataType, EdgeDataType, svertex_t > | memshard_t |
Public Member Functions | |
graphchi_dynamicgraph_engine (std::string base_filename, int nshards, bool selective_scheduling, metrics &_m) | |
size_t | num_edges_safe () |
size_t | num_buffered_edges () |
bool | add_edge (vid_t src, vid_t dst, EdgeDataType edata) |
void | add_task (vid_t vid) |
void | finish_after_iters (int extra_iters) |
std::string | get_info_json () |
![]() | |
graphchi_engine (std::string _base_filename, int _nshards, bool _selective_scheduling, metrics &_m) | |
virtual std::pair< vid_t, vid_t > | get_interval (int i) |
vid_t | get_interval_start (int i) |
vid_t | get_interval_end (int i) |
virtual size_t | num_vertices () |
graphchi_context & | get_context () |
size_t | num_updates () |
bool | is_any_vertex_scheduled (vid_t st, vid_t en) |
void | run (GraphChiProgram< VertexDataType, EdgeDataType, svertex_t > &userprogram, int _niters) |
stripedio * | get_iomanager () |
virtual void | set_modifies_inedges (bool b) |
virtual void | set_modifies_outedges (bool b) |
virtual void | set_only_adjacency (bool b) |
void | set_blocksize (size_t blocksize_in_bytes) |
void | set_membudget_mb (int mbs) |
void | set_load_threads (int lt) |
void | set_exec_threads (int et) |
void | set_enable_deterministic_parallelism (bool b) |
void | set_json (std::string key, std::string value) |
template<typename T > | |
void | set_json (std::string key, T val) |
Protected Member Functions | |
virtual bool | disable_preloading () |
virtual degree_data * | create_degree_handler () |
virtual size_t | num_edges () |
void | init_buffers () |
size_t | cp (std::string origfile, std::string dstfile, bool zeroout=false) |
virtual base_engine::memshard_t * | create_memshard (vid_t interval_st, vid_t interval_en) |
virtual void | initialize_sliding_shards () |
void | prepare_clean_slate () |
int | get_shard_for (vid_t dst) |
void | incorporate_buffered_edges (int window, vid_t window_st, vid_t window_en, std::vector< svertex_t > &vertices) |
bool | incorporate_new_edge_degrees (int window, vid_t window_st, vid_t window_en) |
void | adjust_degrees_for_deleted (std::vector< svertex_t > &vertices, vid_t window_st) |
virtual vid_t | determine_next_window (vid_t iinterval, vid_t fromvid, vid_t maxvid, size_t membudget) |
virtual void | load_before_updates (std::vector< svertex_t > &vertices) |
virtual void | init_vertices (std::vector< svertex_t > &vertices, graphchi_edge< EdgeDataType > *&edata) |
virtual void | initialize_iter () |
virtual void | iteration_finished () |
virtual void | initialize_before_run () |
virtual void | load_after_updates (std::vector< svertex_t > &vertices) |
void | commit_graph_changes () |
template<typename T > | |
void | bwrite (int f, char *buf, char *&bufptr, T val) |
![]() | |
void | print_config () |
int | discover_shard_num () |
virtual void | initialize_scheduler () |
size_t | num_edges_subinterval (vid_t st, vid_t en) |
void | exec_updates (GraphChiProgram< VertexDataType, EdgeDataType, svertex_t > &userprogram, std::vector< svertex_t > &vertices) |
void | save_vertices (std::vector< svertex_t > &vertices) |
virtual void | write_delta_log () |
virtual void | load_vertex_intervals () |
Protected Attributes | |
std::vector< std::vector < edge_buffer * > > | new_edge_buffers |
std::vector< int > | deletecounts |
std::vector< std::string > | shard_suffices |
vid_t | max_vertex_id |
size_t | max_edge_buffer |
size_t | last_commit |
size_t | added_edges |
std::string | state |
size_t | maxshardsize |
size_t | edges_in_shards |
mutex | modification_lock |
mutex | schedulerlock |
mutex | shardlock |
![]() | |
std::string | base_filename |
int | nshards |
stripedio * | iomgr |
std::vector< slidingshard_t * > | sliding_shards |
memshard_t * | memoryshard |
std::vector< std::pair< vid_t, vid_t > > | intervals |
degree_data * | degree_handler |
vertex_data_store < VertexDataType > * | vertex_data_handler |
graphchi_context | chicontext |
bitset_scheduler * | scheduler |
bool | modifies_outedges |
bool | modifies_inedges |
bool | only_adjacency |
bool | use_selective_scheduling |
bool | enable_deterministic_parallelism |
bool | store_inedges |
size_t | blocksize |
int | membudget_mb |
int | load_threads |
int | exec_threads |
vid_t | sub_interval_st |
vid_t | sub_interval_en |
int | iter |
int | niters |
int | exec_interval |
size_t | nupdates |
size_t | nedges |
size_t | work |
metrics & | m |
mutex | httplock |
std::map< std::string, std::string > | json_params |
The actual engine
|
inlineprotected |
Code for committing changes to disk.
|
inlineprotected |
In the beginning of run, we copy the shards into dynamic versions.
|
inlineprotectedvirtual |
Create a dynamic version of the degree file.
Reimplemented from graphchi::graphchi_engine< VertexDataType, EdgeDataType, svertex_t >.
|
inlineprotectedvirtual |
Extends the window to fill the memory budget, but not over maxvid
Reimplemented from graphchi::graphchi_engine< VertexDataType, EdgeDataType, svertex_t >.
|
inlineprotectedvirtual |
Preloading will interfere with the operation.
Reimplemented from graphchi::graphchi_engine< VertexDataType, EdgeDataType, svertex_t >.
|
inline |
HTTP admin
FIXME: too much duplicate with graphchi_engine
Reimplemented from graphchi::graphchi_engine< VertexDataType, EdgeDataType, svertex_t >.
|
inlineprotectedvirtual |
Initialize streaming shards in the start of each iteration.
Reimplemented from graphchi::graphchi_engine< VertexDataType, EdgeDataType, svertex_t >.
|
inlineprotectedvirtual |
Counts the number of edges from shard sizes.
Reimplemented from graphchi::graphchi_engine< VertexDataType, EdgeDataType, svertex_t >.
|
inlinevirtual |
Thread-safe version of num_edges
Reimplemented from graphchi::graphchi_engine< VertexDataType, EdgeDataType, svertex_t >.
|
protected |
Concurrency control
|
protected |
Bookkeeping of buffered and deleted edges.