[AutoDiff] Support '@differentiable(linear)' function conversion. #27687
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.
@differentiable(linear)
LinearFunctionExpr
.LinearFunctionExpr
tolinear_function
.@differentiable(linear)
to non-differentiableLinearFunctionExtractOriginalExpr
.LinearFunctionExtractOriginalExpr
tolinear_function_extract [original]
.@differentiable
to@differentiable(linear)
@differentiable
function can never come directly from a closure expression or from a declaration/member reference.@differentiable(linear)
to@differentiable
(TF-908)@differentiable(linear)
to a derivative (JVP) function where the derivative function returns the original result and the same linear map with@nondiff
parameters partial-applied away.linear_function
,differentiable_function_extract
, andlinear_function_extract
inswift::isGuaranteedForwardingValueKind
andswift::isOwnershipForwardingValueKind
. This fixed a previously uncaught assertion, which was becausedifferentiable_function_extract
was inswift::isOwnershipForwardingValueKind
while it should really be inswift::isGuaranteedForwardingValueKind
.For complete conversion rules among
@differentiable
functions, see Differentiable Programming Mega-Proposal - Type conversion.Resolves TF-900.