Michael Abbott
Michael Abbott
Note also that this is just `@tullio ฮพHats[x] := log1p(- ฮธHats[x] * sample[y]) / n`. Dividing inside the loop or outside it gives the same result; you could invert `invn...
You can also leave it open as a reminder to me, to make this generate less ugly code... if you like. I have not started, though.
Tullio is certainly a powerful tool for discovering LoopVectorization bugs :) If you have an example do make an issue... or if energetic you can find the loop in `@tullio...
Right, `@tensor` will often win, on cases they both handle, on large arrays. But not always -- sometimes it needs to call `permutedims` which is quite expensive, while `@tullio` can...
Not really, I'm sorry! I guess I don't think very simple heuristics would work all that well, and that anything more complicated would need a lot of tuning, which doesn't...
Notice that if you give slightly nonzero arguments, you get different results: ``` julia> H = [1 2 3; 4 5 6; 7 8 9]; julia> ForwardDiff.hessian(x->dot(x,H,x), zeros(3)) 3ร3 Matrix{Float64}:...
Kernel that works on CPU only: `@tullio z[r] := sum(m[r,:])` now gives this: ```julia @kernel function kern(res::AbstractArray{T}, @Const(m), @Const(ax_r), @Const(keep), @Const(final)) where T (r,) = @index(Global, NTuple) @views begin res[r]...
I'm surprised that fails, it's so simple. But maybe something is tripping over the type of `to_sum`? Can you post the error message, or the warning?
Ideally Tullio's own check should not send LV things it can't handle. But perhaps it can be made smarter. What are the types of the arrays here?
This writes the following function: ``` # @tullio a[x] = b[x,y] * a[y] verbose=2 function ๐๐ธ๐!(::Type, โ::AbstractArray{๐ฏ}, b, a, ๐ถ๐x, ๐ถ๐y, โป๏ธ = nothing, ๐ = true) where ๐ฏ for...