Skip to content

Conversation

@asl
Copy link
Contributor

@asl asl commented Jul 26, 2023

No description provided.

@asl
Copy link
Contributor Author

asl commented Jul 26, 2023

Tagging @rxwei @BradLarson @dan-zheng

Currently there are some known issues mostly around derivative thunks. Tests were not updated as well.

This PR is on top of #67230

@asl asl changed the title [WIP] Initial support for class-values differentiation [WIP] [AutoDiff] Initial support for class-values differentiation Jul 26, 2023
…ters there, not just

semantic results.

The rationale for this change is as follows: the interface type of linear maps (pullback in
particular) depends on whether there are semantic result parameters. E.g. the pullback type
for (T1, T2) -> R might be (R.Tan) -> (T1.Tan, T2.Tan) or (R.Tan, T2.Tan) -> (T1.Tan) depending
on whether T2 is a semantic result parameter (inout or class-bound) or not.

There was no way to deduce this just from the generic function signature and param / result indices
as previously result indices included number of semantic result parameters only (first semantic result
parameter, second semantic result parameter and so on). E.g. in the example above we might have result
indices to be (0, 1), however, this will not give any information if T1 or T2 is a semantic result
parameter type given a generic signature.

This change extends result indices. Now their capacity is assumed to be number of results plus number
of all function parameters and we encode indices of all parameters that are assumed to be semantic
result parameter. So, in the example above we will have result indices to be (0, 1) if T1 is a semantic
result parameter or (0, 2) is T2 is a semantic result parameter.

This allows one to correctly deduce the generic linear map types for reabstraction thunks and also keep
a variety of other invariants.
@asl asl added the AutoDiff label Aug 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants