Implement the Concat CUDA kernel - #1333
Merged
Merged
Conversation
… instead of using cudaMemCpy in a loop.
Hector Li (HectorSVC)
requested review from
Ke Deng (ke1337) and
Yufeng Li (yufenglee)
July 2, 2019 21:14
| block_offset = block_index - range_left; | ||
| break; | ||
| } | ||
| } |
Contributor
There was a problem hiding this comment.
If you want to optimize for hundreds of inputs, running this loop for every CUDA thread might still be very expensive. I think it might be better to set it up as a lookup table in CPU and reuse, so CUDA kernel here only need to deal with a simple lookup. #Resolved
Contributor
Author
There was a problem hiding this comment.
jignparm
reviewed
Jul 2, 2019
| block_size_inside_axis_dim_div.d_ + | ||
| offset; | ||
|
|
||
| output_data[id] = reinterpret_cast<const T*>(input_ptr[input_index])[input_pos]; |
Contributor
There was a problem hiding this comment.
It seem like every thread writes into output_data[id] only 1 time -- so 1 thread implies 1 output index is populated. If the output tensor is large (i.e. larger than number of threads in the grid), how are the remaining indexes being populated? #Resolved
Contributor
Author
There was a problem hiding this comment.
Dmitri Smirnov (yuslepukhin)
pushed a commit
that referenced
this pull request
Mar 17, 2026
## Describe your changes ## Checklist before requesting a review - [ ] Add unit tests for this change. - [ ] Make sure all tests can pass. - [ ] Update documents if necessary. - [ ] Lint and apply fixes to your code by running `lintrunner -a` - [ ] Is this a user-facing change? If yes, give a description of this change to be included in the release notes. - [ ] Is this PR including examples changes? If yes, please remember to update [example documentation](https://github.com/microsoft/Olive/blob/main/docs/source/examples.md) in a follow-up PR. ## (Optional) Issue link
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.
Implement the Concat CUDA kernel instead of using cudaMemCpy in a loop which is slow.
The Concat may have hundreds or thousands of inputs or even more in some models. Current implementation using CudaMemCpy in a loop is very slow. Implement the CUDA kernel code will improve the performance.