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.
Replace
std::vector
withsmall_vector
implementation for uses in the runtime where the number of elements is expected to be small. This can substantially reduce memory allocation requests.The library used is https://github.com/KonanM/small_vector which works by injecting
small_vector
semantics intostd::vector
using a clever custom allocator. While it is not the fastest small vector implementation around, it is a drop-in replacement forstd::vector
by design (which is not the case for other implementations) and it is very small so that we can easily ship it alongside our code.In the future we could investigate faster implementations like LLVM's small vector.
In my testing I so far found only negligible impact on performance (which for me with PR #1128 is bound by backend kernel launch functionality like
hipLaunchKernel
anyway), but in any case semantic distinguishing between small and large vectors can still have some value for future optimization.