Hi Alexandre, When you use the powerlaw option, GraphLab generates a synthetic graph with powerlaw edge distribution. There are parameters that control the exact degree probability for each vertex, and whether the power-law will apply to the in- or out-degree. In our case, the generated power-law graph follows an out-degree powerlaw distribution, where each vertex has an outdegree d with probability [http://latex.codecogs.com/gif.latex?%5Cf%5B%20P%28d%29%20%5Cpropto%20d%5E%7B-%5Calpha%7D%20%5Cf%5D] , α = 2.
We initialize each vertex's value to 1. These parameters can be changed within the tunkrank code, which you can find here: graph-release/toolkits/graph_analytics/tunkrank.cpp When you use the asynchronous engine, the execution continues until convergence. Convergence is again user-defined. In our case, we stop the execution when for all vertices (|latest value - previous value| < 0.01). In the source code, this convergence criterion is defined via the TOLERANCE value (currently set tp 0.01). Finally, when you use --saveprefix, the graph's final state will be dumped into a bunch of output files. These files contain each vertex along with its final value, in the following format: <vertex_id vertex_value> I hope this helps! Regards, Alexandros ________________________________ From: Alexandre Ternis Ferreira [[email protected]] Sent: Monday, June 09, 2014 5:03 PM To: [email protected] Subject: Graph Analytics output Hi, I could run the benchmark Graph Analytics, but I could not understand the output. I had this output: piabanha{127} ./tunkrank --powerlaw=10000000 --ncpus=2 --engine=asynchronous GRAPHLAB_SUBNET_ID/GRAPHLAB_SUBNET_MASK environment variables not defined. Using default values Subnet ID: 0.0.0.0 Subnet Mask: 0.0.0.0 Will find first IPv4 non-loopback address matching the subnet INFO: dc.cpp(init:573): Cluster of 1 instances created. INFO: distributed_graph.hpp(set_ingress_method:3201): Automatically determine ingress method: grid Loading synthetic Powerlaw graph. INFO: distributed_graph.hpp(load_synthetic_powerlaw:2375): constructing pdf INFO: distributed_graph.hpp(load_synthetic_powerlaw:2378): constructing cdf INFO: distributed_graph.hpp(load_synthetic_powerlaw:2380): Building graph INFO: distributed_graph.hpp(load_synthetic_powerlaw:2399): 10000000 inserted INFO: distributed_graph.hpp(finalize:702): Distributed graph: enter finalize INFO: distributed_ingress_base.hpp(finalize:199): Finalizing Graph... INFO: memory_info.cpp(log_usage:90): Memory Info: Post Flush Heap: 2565.3 MB Allocated: 2467.2 MB INFO: distributed_ingress_base.hpp(finalize:259): Graph Finalize: constructing local graph INFO: memory_info.cpp(log_usage:90): Memory Info: Finished populating local graph. Heap: 4880.27 MB Allocated: 2048.56 MB INFO: distributed_ingress_base.hpp(finalize:304): Graph Finalize: finalizing local graph. tcmalloc: large alloc 1672404992 bytes == 0x197c94000 @ 0x643e16 0x4cd728 tcmalloc: large alloc 1672404992 bytes == 0x1fb912000 @ 0x643e16 0x4cd728 INFO: dynamic_local_graph.hpp(finalize:339): Graph finalized in 244.451 secs INFO: distributed_ingress_base.hpp(finalize:307): Local graph info: nverts: 10000000 nedges: 104525299 INFO: memory_info.cpp(log_usage:90): Memory Info: Finished finalizing local graph. Heap: 9665.06 MB Allocated: 3999.31 MB INFO: memory_info.cpp(log_usage:90): Memory Info: Finished adding vertex data Heap: 9665.06 MB Allocated: 3999.24 MB INFO: memory_info.cpp(log_usage:90): Memory Info: Finihsed allocating lvid2record Heap: 9665.06 MB Allocated: 4457 MB INFO: memory_info.cpp(log_usage:90): Memory Info: Finished synchronizing vertex (meta)data Heap: 9665.06 MB Allocated: 4849.6 MB INFO: distributed_ingress_base.hpp(exchange_global_info:521): Graph Finalize: exchange global statistics INFO: distributed_ingress_base.hpp(exchange_global_info:546): Graph info: nverts: 10000000 nedges: 104525299 nreplicas: 10000000 replication factor: 1 #vertices: 10000000 #edges:104525299 INFO: omni_engine.hpp(omni_engine:194): Using the Synchronous engine. INFO: distributed_graph.hpp(finalize:702): Distributed graph: enter finalize INFO: distributed_ingress_base.hpp(finalize:199): Finalizing Graph... INFO: distributed_ingress_base.hpp(finalize:244): Skipping Graph Finalization because no changes happened... INFO: distributed_graph.hpp(finalize:702): Distributed graph: enter finalize INFO: distributed_ingress_base.hpp(finalize:199): Finalizing Graph... INFO: distributed_ingress_base.hpp(finalize:244): Skipping Graph Finalization because no changes happened... INFO: async_consistent_engine.hpp(start:1212): Spawning 10000 threads INFO: async_consistent_engine.hpp(start:1238): Total Allocated Bytes: 4834485504 INFO: async_consistent_engine.hpp(try_to_quit:834): Endgame mode INFO: fiber_async_consensus.cpp(end_done_critical_section:105): 0: Termination Possible INFO: fiber_async_consensus.cpp(pass_the_token:211): Completed Token: 0 0 Completed Tasks: 26103386 Schedule Joins: 127449425 Schedule Adds: 153552811 Finished Running engine in 105.8 seconds. INFO: dc.cpp(~distributed_control:166): Shutting down distributed control INFO: dc_tcp_comm.cpp(close:247): Closing listening socket INFO: dc_tcp_comm.cpp(send_loop:653): Send loop Stopped INFO: dc_tcp_comm.cpp(close:267): Closing outgoing sockets INFO: dc_tcp_comm.cpp(receive_loop:594): Receive loop Stopped INFO: dc_tcp_comm.cpp(close:285): Closing incoming sockets INFO: dc.cpp(~distributed_control:198): Bytes Sent: 1043983109 INFO: dc.cpp(~distributed_control:199): Calls Sent: 26565 INFO: dc.cpp(~distributed_control:200): Network Sent: 1044063109 INFO: dc.cpp(~distributed_control:201): Bytes Received: 1043850589 INFO: dc.cpp(~distributed_control:202): Calls Received: 26565 Could you explain me this output? What does the --saveprefix arg files has when I use this option? Best, Alexandre
