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

Optimized Skiplist with unboxed Atomic_array #138

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

polytypic
Copy link
Contributor

@polytypic polytypic commented May 26, 2024

For background, see PR in multicore-magic.

This seems to give up to 40%-70% performance improvement in some cases and seems to generally improve performance. The reason for the speed up is obvious: 3x less words per a link in a node and 1 less indirection. This means things will better fit into caches and there will be less stalls waiting for memory.

It is interesting to note that despite having only a fenceless_get and not having an "atomic" get, this seems to pass the QCheck STM test. I assume this is due to the use of the linearizable size. All add and remove operations update the linearizable size, which means they will be linearizable. Read-only operations also potentially update the linearizable size. It seems that is enough to keep the data structure linearizable even when reads from the atomic arrays are relaxed reads rather than sequentially consistent reads.

TODO:

  • Update dscheck test to work with Atomic_array — this happened automatically after the switch to use multicore-magic-dscheck
  • Consider implementing resizing

@polytypic polytypic marked this pull request as draft May 26, 2024 08:08
@polytypic polytypic force-pushed the experimental-skiplist-with-atomic_array branch 6 times, most recently from 62b6b58 to 3d410fe Compare May 28, 2024 09:34
@polytypic polytypic marked this pull request as ready for review May 28, 2024 09:35
@polytypic polytypic changed the title Experimental Skiplist with Atomic_array Optimized Skiplist with unboxed Atomic_array May 28, 2024
@polytypic polytypic marked this pull request as draft May 28, 2024 10:15
@polytypic polytypic force-pushed the experimental-skiplist-with-atomic_array branch from 3d410fe to b0d36a0 Compare August 22, 2024 18:53
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.

1 participant