cru_mapreducer - parallel graph metric computation specification
#include <cru/cru.h>
typedef struct
cru_mapreducer_s
{
struct
cru_zone_s
ma_zone;
struct
cru_prop_s
ma_prop;
} *cru_mapreducer;
This structure parameterizes the cru_mapreduced library function with necessary information initialized by the application to compute an arbitrary user-defined metric about a graph. The metric is computed according to the usual calling conventions for a cru_prop as given by the ma_prop field. The computation can pertain to a section of the graph restricted by the cru_zone structure in the ma_zone field. Alternatively, the ma_zone field may be omitted or zero-filled, in which case the whole graph is used.
Unlike an induction, all vertices are visited effectively in parallel in the course of this operation. The value derived from each vertex can depend on its adjacent vertices in either direction but not on the values derived from its adjacent vertices.
The reduction phase proceeds under the assumption of a commutative and associative user-defined vertex reduction operator. Non-deterministic results are possible if this condition is not met but cru has no way of enforcing it.
/usr/local/include/cru/data_types.h
cru, cru_bop, cru_bpred, cru_builder, cru_built, cru_cbop, cru_classifier, cru_class_of, cru_class_size, cru_composed, cru_composer, cru_connect, cru_connector, cru_cqop, cru_crossed, cru_crosser, cru_ctop, cru_ctop_pair, cru_ctop_quad, cru_data_types, cru_deduplicated, cru_destructor, cru_destructor_pair, cru_edge_count, cru_fabricated, cru_fabricator, cru_filter, cru_filtered, cru_fold, cru_free_kill_switch, cru_free_later, cru_free_now, cru_free_partition, cru_function_types, cru_get, cru_hash, cru_induced, cru_inducer, cru_kernel, cru_kill, cru_killed, cru_mapreduced, cru_merged, cru_merger, cru_mutated, cru_mutator, cru_new_kill_switch, cru_nop, cru_order, cru_order_pair, cru_partition_of, cru_plan, cru_postponed, cru_postponer, cru_prop, cru_prop_pair, cru_pruner, cru_qop, cru_qpred, cru_set, cru_sig, cru_singleton, cru_split, cru_splitter, cru_spread, cru_strerror, cru_stretch, cru_stretched, cru_stretcher, cru_subconnector, cru_terminus_count, cru_top, cru_tpred, cru_united, cru_uop, cru_vertex_count, cru_zone
Dennis Furey (milonga@delayinsensitive.com)
https://github.com/gueststar/cru