This repository was archived by the owner on Apr 28, 2023. It is now read-only.
Drop duplicate state in tuner / options cache which resulted in intermittent disagreements between tune and load from cache #576
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.
This PR supposedly addresses issue #523 (only supposedly because
there is no easy repro). The problem is conjectured to come from
the tuner keeping the best time/option in a private field whereas the
functions that interact with the cache files operate on the cache.
When multiple entries have the same runtime, it is conjectured (by @ftynse)
that the ordering of the cache entries do not match the private field.
In hindsight this can easily happen with thread/block sizes because once
the number of threads/blocks is one per loop element, one can increase the
values passed to mapping options but the same code will be generated after
tightening. It is not too much of a stretch to imagine that the same code
will occasionally have the same runtime.
This commit drops the private state and ensures we always fetch the
requires values from the options cache (under its lock).