Skip to content
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

Remove unnecessary edge list scan during insert. #222

Merged
merged 6 commits into from
Feb 21, 2017

Conversation

ehein6
Copy link
Contributor

@ehein6 ehein6 commented Feb 8, 2017

When a thread reaches the end of the edge list without finding a
spot for the edge it is trying to insert/update, it tries to atomically
swap in a new edge block on the end of the list. If this fails, the
existing code would return to the beginning of the list and re-scan
the entire thing before trying to swap in a new block. With this patch,
the thread just keeps searching from its current position.


This change is Reviewable

@ehein6
Copy link
Contributor Author

ehein6 commented Feb 8, 2017

I'm running performance regressions now, but this ought to help a lot when adding edges to a high-degree vertex. Please review and make sure I'm not introducing a subtle race condition here, especially in the presence of concurrent deletions.

@ehein6 ehein6 force-pushed the remove-edge-list-scan branch from 260d020 to 73a6ab8 Compare February 21, 2017 18:36
davidediger and others added 6 commits February 21, 2017 13:59
Update year in LICENSE.
Update README.
Remove SOURCEME script.
Despite BUILD_SHARED_LIBS being displayed as an option, CMake would always build
shared libraries because each add_library command also specified the SHARED argument.
By removing this argument, each library added will look at the global BUILD_SHARED_LIBS
variable when deciding to generate a static or shared library. As a result, stinger can
now be built with either static or shared libraries.
Several files in stinger_alg were including headers from
stinger_net and stinger_utils, despite not using any functions
from these libraries. stinger_alg now depends only on stinger_core
and libcompat, as it should.
streaming_connected_components uses a struct defined in a stinger_net
header. This dependency wasn't getting picked up by CMake because
of the order in which subdirectories in lib were getting added.
There is still no link dependency between stinger_alg and stinger_net.
When a thread reaches the end of the edge list without finding a
spot for the edge it is trying to insert/update, it tries to atomically
swap in a new edge block on the end of the list. If this fails, the
existing code would return to the beginning of the list and re-scan
the entire thing before trying to swap in a new block. With this patch,
the thread just keeps searching from its current position.
@ehein6 ehein6 force-pushed the remove-edge-list-scan branch from 73a6ab8 to 8b6434f Compare February 21, 2017 19:13
@davidediger davidediger merged commit 92348d4 into stingergraph:dev Feb 21, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants