-
Notifications
You must be signed in to change notification settings - Fork 448
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
implement louvain algorithm #183
Conversation
community quality testcompare the modularity of result partition with https://github.com/taynaud/python-louvain dataset: p2p (62586 nodes, 147892 edges)graphscope louvain: 0.571986 find community num: 103 com-youtube dataset (1134890 nodes, 2987624 edges), community num: 8,385graphscope louvain: 0.717838, find community_num: 4980 |
performance testdataset: com-friendster ( 65,608,366 nodes, 1,806,067,135 edges) parallel GraphScope louvain (8 worker)time: 7 min (remove the atomic operation, but bring in a three-level vector buffer to process messages to prevent thread conflict.) grape louvain( 8 worker, 128 frag)time: 5 min |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since it's will be open sourced, please revise the code style, such as function naming (Camel Style), class encapsulation, variable naming, comments, fixme, non-necessary header and so on.
Maybe you could add a python test case for louvain, mainly to demonstrate it's usage, and the format of result.
Reference: https://google.github.io/styleguide/cppguide.html
Hi, @siyuan0322, thanks for reviewing, could you quote some bad code examples as a hint, that would be much help. |
Codecov Report
@@ Coverage Diff @@
## main #183 +/- ##
==========================================
- Coverage 78.91% 78.35% -0.56%
==========================================
Files 52 53 +1
Lines 4767 4986 +219
==========================================
+ Hits 3762 3907 +145
- Misses 1005 1079 +74
Continue to review full report at Codecov.
|
4684fc5
to
31aaf25
Compare
add louvain context and vertex add louvain test update update fix fix fix update update update compiled update runnable runable update update add louvain to client update adapt to ArrowProjectedFragment sync community after comm ready vd_t be oid_t use SendToFragment runnable of p2p n = 4 fix use parallel worker fix sendp2p and aggregate fix pallell workers update update cleanup parallel processing messages revise parallel process messages clean up code remove halted aggregator edge weight as double format update update fix update revise code style remove unnecessary virtual declare update
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
@@ -89,8 +98,7 @@ class PregelComputeContext { | |||
message_manager_->SyncStateOnOuterVertex<fragment_t, MD_T>(*fragment_, | |||
v, value); | |||
} else { | |||
messages_in_[v].emplace_back(value); | |||
has_messages_ = true; | |||
messages_out_[v].emplace_back(value); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@lidongze0629 Any comment on this part?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. I'm also ccing @lidongze0629 for a quick review on the pregel app base related changes.
What do these changes do?
implement a distributed louvain algorithm
Related issue number
Fixes #182