Nospecialize ::Channel functions that don't depend on {T}.#49509
Draft
Nospecialize ::Channel functions that don't depend on {T}.#49509
::Channel functions that don't depend on {T}.#49509Conversation
81cbad5 to
9ff5c32
Compare
Member
Author
|
Are there good threading benchmarks we can run that will exercise Channels sufficiently well to ensure this is perf neutral after compilation and perf-positive if you include compilation? |
Member
|
I think the julia> @nospecialize f(x) = x + 1
julia> f(1)
ERROR: UndefVarError: `f` not definedIf I'm not mistaken, this is why the tests fail. You need to do |
Member
Author
|
Oh, thanks. Sad beans! It's interesting because you can of course do but i guess the one-function usage isn't supported. Thanks! |
- Mark most of the functions on Channels nospecialize when they don't depend on the data type in the Channel, `T`. - Add precompile statement for `Base.close(::Channel, ::Exception)`
9ff5c32 to
9323ee1
Compare
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.
This is a follow up to #49508.
The expectation is that this should reduce compilation times (and possibly some dynamic dispatches, but probably not very often), with no penalty for the perf of the produced code, since we're only adding
@nospecialize(::Channel)on the functions that don't referencedata::Vector{T}.T.Base.close(::Channel, ::Exception)