Valentin Churavy

Results 1411 comments of Valentin Churavy

No we can't pass an MI to a generated function. What I think the system should look like is something like this: ``` mutable struct EnzymeThunk adjoint_TT # and other...

> Given that we get issues opened for “100x slowdown” when the gradient function has a dynamic dispatch I’m worried of the impact on downstream folks I don't particularly care...

This not part ABI call. This is before to lookup the thunk that we need to call, IIRC. I would appreciate if you could take a stab at this. The...

Log-spam was triggered by https://github.com/EnzymeAD/Enzyme.jl/issues/1779#issuecomment-2328248954

> Why is this happening. where does it come from? This is likely LLVM optimizing a copy loop? But why 7 and not 9 I do not know.

So a part answer is something along this line: ``` function aliased(a::T, b::T) where T a === b end function recursive_aliased(a::T, b::T) where {T} if aliased(a, b) return true end...

A slightly better version is ```julia begin function recursive_aliased(a::T, b::T, seen_a::IdSet{Any}, seen_b::IdSet{Any}) where {T} if aliased(a, b) return true end if a ∈ seen_a return false elseif b ∈ seen_b...

@aplavin sorry for the ping :) We should have that conversation on Slack. The ting I was looking for was recursion over two objects of the same type (and structure)...

```diff diff --git a/src/errors.jl b/src/errors.jl index 0c91f738..38a691e9 100644 --- a/src/errors.jl +++ b/src/errors.jl @@ -336,6 +336,8 @@ parent_scope(@nospecialize(val::LLVM.Value), depth = 0) = parent_scope(LLVM.pare parent_scope(val::LLVM.Argument, depth = 0) = parent_scope(LLVM.Function(LLVM.API.LLVMGetParamParent(val)), depth +...

@wsmoses mentions that this should never be the `parent_scope(val) isa LLVM.Module`