Add padding to temporary arrays to ensure we don't read beyond bounds. #505
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.
What do these changes do?
@Tombana and I had a conversation last week about the fact that in our (optimised) kernels we sometimes read beyond the bounds of our temporary arrays. For example, in the int16 accumulator kernel we read eight output transform multiplier/biases, even if there's only a single output channel (and so only one value in each array). This currently doesn't seem to be causing a problem in practice, but could lead to undefined behaviour and/or segfaults.
This PR adds a
LCE_EXTRA_BYTES
value (inspired by this definition in XNNPack), set to 16, and uses it to add padding to our intermediate tensors.How Has This Been Tested?
CI.
Benchmark Results
N/A.
Related issue number
N/A.