Michael Abbott
Michael Abbott
> why should I take axes as arguments at all? A and B have 4 axes, and we're only going to iterate over 3 of them. But which 3 would...
> pre-compute `sin.(x)` Good point. This is something Tullio does not try to do, at all, at the moment. Assuming that `sin` is pure & that evaluating it N^2 or...
Should this be here or in Zygote? i.e. is this a mathematical property of `copy` or something more specific? Within Zygote, `copy(::Array)` could presumably be a no-op, since you can't...
I think we should do this. But the Zygote error in "nested AD hitting identity(::Tuple) pullback " is weird.
Yes, if you write `@tullio grad=false` with no expression to calculate, this should update a global setting, which will apply to all subsequent macro calls. (It isn't per-module or anything,...
It got written mostly as a way to run the same tests with different settings for gradients / threads / LoopVectorization etc. I agree it's not exactly an enterprise-grade mechanism,...
Should every `rrule` have a method for this, or should it be handled at a higher level, by not calling the rule at all? The former seems like a lot...
Yes, I guess if your function returns a tuple, then it may have to worry about getting back `(Zero(), something)`. Maybe this one would work? ``` julia> y, b =...
So the proposal is to always treat zero tangent (or cotangent) as a strong zero. I think that makes sense. The rule for `x^p` already treats `Δp` being zero strongly,...
This is the problematic expression: ```julia julia> @tullio grad=false ξHats[x] := log1p(- θHats[x] * sample[y]) |> (_ / n) verbose=2 ... │ verbosetidy(lex) = │ quote │ local @inline(function 𝒜𝒸𝓉!(::Type{