migrate to Chase-Lev deque#235
Merged
Merged
Conversation
Contributor
|
Tested this PR on my engine:
#define TMC_NODISCARD_AWAIT
#define TMC_PRIORITY_COUNT 3
#define TMC_STANDALONE_COMPILATION
#define TMC_TRIVIAL_TASK
#define TMC_USE_HWLOC // hwloc master branch
// #define TMC_WORK_ITEM=CORO -- default
No compilation issues or new warnings, no runtime issues, no perf regressions. The diffstat is also nice. |
Owner
Author
|
Thanks. Performance in all benchmarks has been equivalent to the old queue, but it should result in less cache miss / TLB pressure overall, and the code is shorter / easier to understand. I'm going to delay merging this to main because it's technically a breaking change (requires the removal of TMC_WORK_ITEM=FUNC), and I'm considering releasing it along with some other breaking changes. |
tzcnt
added a commit
that referenced
this pull request
Jun 6, 2026
Owner
Author
|
I changed my mind; I think this can go with v1.6:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
There are 2 versions of the implementation, chosen based on the target platform.
Removed the old ExplicitProducer-based work stealing setup which was providing the equivalent functionality. The moodycamel queue contains only the ImplicitProducer-related code, and is still used to accept work from external threads.
Breaking changes: TMC_WORK_ITEM=FUNC is no longer supported, since the Chase-Lev queue requires the work item type to be trivially copyable and trivially destructible. Users of this configuration should migrate to TMC_WORK_ITEM=FUNCORO instead.