Michael Abbott
Michael Abbott
I was mostly, and I don't swear that I got that right! It would be great to have some shared trait-like way to query this. I think CuArrays are
Yes, I'm not sure what the logic was. On the "re-writing StridedArray in every package" front, well-behaved views of CuArrays are again of type CuArray, not SubArray, so that they...
Thanks for the aliasing links, these things get tricky fast. It took me a while but eventually I realise your UpperTriangular example is only reading the diagonal, which is fine....
OK, I think I see what you mean about keeping things as struct-of-SVecs, and a few definitions like this appear to be enough: ```julia function Base.:+(x::Dual{Z,T,D}, sv::SVec{N,S}) where {Z,T,D,N,S} y...
Re `ForwardDiff: partials`, that is in scope where I define these methods for `+` etc, although the latest version uses `x.partials.values[d]` instead of the function. But inside the `@avx` loop...
OK, great, had not looked hard at the expanded version. The alternative access like this gives immediate errors: ``` julia> @macroexpand @avx for i = 📏i for j = 📏j...
`A,B,C` are arrays of Float64, and functions `apply!`/`💥` are like `mul!` in that they work in-place, while `create`/`💧` is like `*` that first makes the necessary output array. (I got...
OK here's an example small enough just to paste in here: ```julia using LoopVectorization, ForwardDiff, BenchmarkTools function dualinv!(B,A) @assert size(A) == size(B) T = eltype(B) dx = ForwardDiff.Dual(zero(T), (one(T), zero(T)))...
OK, it would be great to fix things upstream. But do you just mean things in Base, or would SLEEFPirates be willing to depend on ForwardDiff to have these dual...
Ah indeed, that crash was Julia 1.3, but it's fixed on 1.5. And thanks, deleting that unused `where Z` fixes this example completely. It's identical to a loop with `B[i]...