SciMLSensitivity.jl
SciMLSensitivity.jl copied to clipboard
EnzymeVJP does not support BLAS
This snippet segfaults on my machine.
using DiffEqFlux, Flux, OrdinaryDiffEq, DiffEqSensitivity
function system!(du, u, p, t, controller)
α, β, γ, δ = 0.5f0, 1.0f0, 1.0f0, 1.0f0
y1, y2 = u
c1, c2 = controller(u, p)
y1_prime = -(c1 + α * c1^2) * y1 + δ * c2
y2_prime = (β * c1 - γ * c2) * y1
@inbounds begin
du[1] = y1_prime
du[2] = y2_prime
end
end
function loss(params, prob, tsteps)
#sensealg=QuadratureAdjoint(autojacvec=EnzymeVJP())
sensealg=InterpolatingAdjoint(autojacvec=ReverseDiffVJP())
sol = solve(prob, Tsit5(); p=params, saveat=tsteps, sensealg) # integrate ODE system
return -Array(sol)[2, end] # second variable, last value, maximize
end
u0 = [1.0f0, 0.0f0]
tspan = (0.0f0, 1.0f0)
tsteps = 0.0f0:0.01f0:1.0f0
controller = FastChain(
FastDense(2, 12, tanh),
FastDense(12, 12, tanh),
FastDense(12, 2),
(x, p) -> 5 * σ.(x), # controllers ∈ (0, 5)
)
θ = initial_params(controller)
dudt!(du, u, p, t) = system!(du, u, p, t, controller)
prob = ODEProblem(dudt!, u0, tspan, θ)
loss(params) = loss(params, prob, tsteps)
Zygote.gradient(loss, θ)
Version info:
julia> versioninfo()
Julia Version 1.6.3
Commit ae8452a9e0 (2021-09-23 17:34 UTC)
Platform Info:
OS: Windows (x86_64-w64-mingw32)
CPU: AMD Ryzen 7 4800H with Radeon Graphics
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-11.0.1 (ORCJIT, znver2)
(@v1.6) pkg> st DiffEqFlux Flux OrdinaryDiffEq DiffEqSensitivity Enzyme Zygote
Status `C:\Users\ilyao\.julia\environments\v1.6\Project.toml`
[aae7a2af] DiffEqFlux v1.43.0
[41bf760c] DiffEqSensitivity v6.60.2
[7da242da] Enzyme v0.7.2
[587475ba] Flux v0.12.7
[1dea7af3] OrdinaryDiffEq v5.64.1
[e88e6eb3] Zygote v0.6.17
Error
; ModuleID = 'text'
source_filename = "text"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128-ni:10:11:12:13"
target triple = "x86_64-w64-mingw32"
; Function Attrs: uwtable
define internal fastcc nonnull {} addrspace(10)* @julia_dudt__10540({} addrspace(10)* nonnull align 16 dereferenceable(40) %0, {} addrspace(10)* nonnull align 16 dereferenceable(40) %1, {} addrspace(10)* nonnull align 16 dereferenceable(40) %2, float %3) unnamed_addr #0 !dbg !38 {
top:
%4 = call {}*** @julia.ptls_states()
%5 = load atomic {} addrspace(10)*, {} addrspace(10)** inttoptr (i64 276052248 to {} addrspace(10)**) unordered, align 8, !dbg !40, !tbaa !41
%6 = call {} addrspace(10)* bitcast ({}* (float)* @jl_box_float32 to {} addrspace(10)* (float)*)(float %3), !dbg !40
%7 = call cc37 nonnull {} addrspace(10)* bitcast ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @jl_apply_generic to {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*)*)({} addrspace(10)* addrspacecast ({}* inttoptr (i64 1495400936 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %0, {} addrspace(10)* nonnull %1, {} addrspace(10)* nonnull %2, {} addrspace(10)* %6, {} addrspace(10)* %5), !dbg !40
ret {} addrspace(10)* undef, !dbg !40
}
; Function Attrs: readnone
declare {}*** @julia.ptls_states() local_unnamed_addr SciML/DiffEqFlux.jl#1
declare nonnull {} addrspace(10)* @jl_apply_generic({} addrspace(10)*, {} addrspace(10)**, i32) local_unnamed_addr SciML/DiffEqFlux.jl#2
; Function Attrs: uwtable
define internal nonnull align 4 dereferenceable(4) {}* @jl_box_float32(float %0) unnamed_addr #0 !dbg !46 {
top:
%1 = call dereferenceable_or_null(12) i8* @malloc(i64 12), !dbg !47
%2 = load i64, i64* bitcast ({}* ()* @jl_float32_type to i64*), align 4, !dbg !57
%3 = or i64 %2, 3, !dbg !64
%4 = bitcast i8* %1 to i64*, !dbg !63
store i64 %3, i64* %4, align 8, !dbg !63, !tbaa !68
%5 = getelementptr i8, i8* %1, i64 8, !dbg !69
%6 = bitcast i8* %5 to float*, !dbg !73
store float %0, float* %6, align 4, !dbg !73, !tbaa !68
%7 = bitcast i8* %5 to {}*, !dbg !74
ret {}* %7, !dbg !56
}
declare {}* @jl_float32_type() local_unnamed_addr
declare i8* @malloc(i64) local_unnamed_addr
define void @julia__115_10537({} addrspace(10)* nonnull align 16 dereferenceable(40) %0, {} addrspace(10)* nonnull align 16 dereferenceable(40) %1, {} addrspace(10)* nonnull align 16 dereferenceable(40) %2, float %3) local_unnamed_addr !dbg !77 {
entry:
%4 = call {}*** @julia.ptls_states()
%5 = call fastcc nonnull {} addrspace(10)* @julia_dudt__10540({} addrspace(10)* nonnull align 16 dereferenceable(40) %0, {} addrspace(10)* nonnull align 16 dereferenceable(40) %1, {} addrspace(10)* nonnull align 16 dereferenceable(40) %2, float %3) #0, !dbg !78
ret void
}
; Function Attrs: argmemonly nounwind willreturn
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) SciML/DiffEqFlux.jl#3
; Function Attrs: argmemonly nounwind willreturn
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) SciML/DiffEqFlux.jl#3
define void @preprocess_julia__115_10537({} addrspace(10)* nonnull align 16 dereferenceable(40) %0, {} addrspace(10)* nonnull align 16 dereferenceable(40) %1, {} addrspace(10)* nonnull align 16 dereferenceable(40) %2, float %3) local_unnamed_addr !dbg !79 {
entry:
%4 = call {}*** @julia.ptls_states()
%5 = call fastcc nonnull {} addrspace(10)* @julia_dudt__10540({} addrspace(10)* nonnull align 16 dereferenceable(40) %0, {} addrspace(10)* nonnull align 16 dereferenceable(40) %1, {} addrspace(10)* nonnull align 16 dereferenceable(40) %2, float %3) #0, !dbg !80
ret void
}
define internal void @diffejulia__115_10537({} addrspace(10)* nonnull align 16 dereferenceable(40) %0, {} addrspace(10)* %"'", {} addrspace(10)* nonnull align 16 dereferenceable(40) %1, {} addrspace(10)* %"'1", {} addrspace(10)* nonnull align 16 dereferenceable(40) %2, {} addrspace(10)* %"'2", float %3) local_unnamed_addr !dbg !81 {
entry:
%4 = call {}*** @julia.ptls_states()
%5 = call fastcc nonnull {} addrspace(10)* @julia_dudt__10540({} addrspace(10)* nonnull align 16 dereferenceable(40) %0, {} addrspace(10)* nonnull align 16 dereferenceable(40) %1, {} addrspace(10)* nonnull align 16 dereferenceable(40) %2, float %3) #0, !dbg !82
br label %invertentry
allocsForInversion: ; No predecessors!
invertentry: ; preds = %entry
}
; Function Attrs: uwtable
define internal fastcc nonnull {} addrspace(10)* @preprocess_julia_dudt__10540({} addrspace(10)* nonnull align 16 dereferenceable(40) %0, {} addrspace(10)* nonnull align 16 dereferenceable(40) %1, {} addrspace(10)* nonnull align 16 dereferenceable(40) %2, float %3) unnamed_addr #0 !dbg !83 {
top:
%4 = call {}*** @julia.ptls_states()
%5 = load atomic {} addrspace(10)*, {} addrspace(10)** inttoptr (i64 276052248 to {} addrspace(10)**) unordered, align 8, !dbg !84, !tbaa !41
%6 = call {} addrspace(10)* bitcast ({}* (float)* @jl_box_float32 to {} addrspace(10)* (float)*)(float %3), !dbg !84
%7 = call cc37 nonnull {} addrspace(10)* bitcast ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @jl_apply_generic to {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*)*)({} addrspace(10)* addrspacecast ({}* inttoptr (i64 1495400936 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %0, {} addrspace(10)* nonnull %1, {} addrspace(10)* nonnull %2, {} addrspace(10)* %6, {} addrspace(10)* %5), !dbg !84
ret {} addrspace(10)* undef, !dbg !84
}
; Function Attrs: uwtable
define internal fastcc nonnull void @diffejulia_dudt__10540({} addrspace(10)* nonnull align 16 dereferenceable(40) %0, {} addrspace(10)* %"'", {} addrspace(10)* nonnull align 16 dereferenceable(40) %1, {} addrspace(10)* %"'1", {} addrspace(10)* nonnull align 16 dereferenceable(40) %2, {} addrspace(10)* %"'2", float %3) unnamed_addr #0 !dbg !85 {
top:
%4 = call {}*** @julia.ptls_states()
%5 = load atomic {} addrspace(10)*, {} addrspace(10)** inttoptr (i64 276052248 to {} addrspace(10)**) unordered, align 8, !dbg !86, !tbaa !41
%"'il_phi" = phi {} addrspace(10)* , !dbg !86
%6 = call {} addrspace(10)* bitcast ({}* (float)* @jl_box_float32 to {} addrspace(10)* (float)*)(float %3), !dbg !86
%"'ip_phi" = phi {} addrspace(10)* , !dbg !86
%7 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %36, i64 0, !dbg !86
store {} addrspace(10)* null, {} addrspace(10)** %7, align 8, !dbg !86
%8 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %36, i64 1, !dbg !86
store {} addrspace(10)* null, {} addrspace(10)** %8, align 8, !dbg !86
%9 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %36, i64 2, !dbg !86
store {} addrspace(10)* null, {} addrspace(10)** %9, align 8, !dbg !86
%10 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %37, i64 0, !dbg !86
store {} addrspace(10)* %0, {} addrspace(10)** %10, align 8, !dbg !86
%11 = getelementptr inbounds i8, i8* %39, i64 0, !dbg !86
store i8 1, i8* %11, align 1, !dbg !86
%12 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %38, i64 0, !dbg !86
%13 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %38, i64 0, !dbg !86
store {} addrspace(10)* %"'", {} addrspace(10)** %13, align 8, !dbg !86
%14 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %37, i64 1, !dbg !86
store {} addrspace(10)* %1, {} addrspace(10)** %14, align 8, !dbg !86
%15 = getelementptr inbounds i8, i8* %39, i64 1, !dbg !86
store i8 1, i8* %15, align 1, !dbg !86
%16 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %38, i64 1, !dbg !86
%17 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %38, i64 1, !dbg !86
store {} addrspace(10)* %"'1", {} addrspace(10)** %17, align 8, !dbg !86
%18 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %37, i64 2, !dbg !86
store {} addrspace(10)* %2, {} addrspace(10)** %18, align 8, !dbg !86
%19 = getelementptr inbounds i8, i8* %39, i64 2, !dbg !86
store i8 1, i8* %19, align 1, !dbg !86
%20 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %38, i64 2, !dbg !86
%21 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %38, i64 2, !dbg !86
store {} addrspace(10)* %"'2", {} addrspace(10)** %21, align 8, !dbg !86
%22 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %37, i64 3, !dbg !86
store {} addrspace(10)* %6, {} addrspace(10)** %22, align 8, !dbg !86
%23 = getelementptr inbounds i8, i8* %39, i64 3, !dbg !86
store i8 1, i8* %23, align 1, !dbg !86
%24 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %38, i64 3, !dbg !86
%25 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %38, i64 3, !dbg !86
store {} addrspace(10)* %"'ip_phi", {} addrspace(10)** %25, align 8, !dbg !86
%26 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %37, i64 4, !dbg !86
store {} addrspace(10)* %5, {} addrspace(10)** %26, align 8, !dbg !86
%27 = getelementptr inbounds i8, i8* %39, i64 4, !dbg !86
store i8 0, i8* %27, align 1, !dbg !86
%28 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %38, i64 4, !dbg !86
store {} addrspace(10)* null, {} addrspace(10)** %28, align 8, !dbg !86
%29 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* %0, {} addrspace(10)** %12, {} addrspace(10)* %1, {} addrspace(10)** %16, {} addrspace(10)* %2, {} addrspace(10)** %20, {} addrspace(10)* %6, {} addrspace(10)** %24, {} addrspace(10)* %5), !dbg !86
call void inttoptr (i64 1452034352 to void ({} addrspace(10)*, {} addrspace(10)**, {} addrspace(10)**, {} addrspace(10)**, i8*, i32)*)({} addrspace(10)* addrspacecast ({}* inttoptr (i64 1495400936 to {}*) to {} addrspace(10)*), {} addrspace(10)** %36, {} addrspace(10)** %37, {} addrspace(10)** %38, i8* %39, i32 5), !dbg !86
%30 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %36, i64 1, !dbg !86
%31 = load {} addrspace(10)*, {} addrspace(10)** %30, align 8, !dbg !86
%32 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %36, i64 0, !dbg !86
%33 = load {} addrspace(10)*, {} addrspace(10)** %32, align 8, !dbg !86
%34 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %36, i64 2, !dbg !86
%35 = load {} addrspace(10)*, {} addrspace(10)** %34, align 8, !dbg !86
call void @llvm.julia.gc_preserve_end(token %29), !dbg !86
br label %inverttop, !dbg !86
allocsForInversion: ; No predecessors!
%36 = alloca {} addrspace(10)*, i64 3, align 8
%37 = alloca {} addrspace(10)*, i32 5, align 8
%38 = alloca {} addrspace(10)*, i32 5, align 8
%39 = alloca i8, i32 5, align 1
%40 = alloca {} addrspace(10)*, i64 0, align 8
%41 = alloca {} addrspace(10)*, i32 5, align 8
%42 = alloca {} addrspace(10)*, i32 5, align 8
%43 = alloca i8, i32 5, align 1
inverttop: ; preds = %top
%44 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %41, i64 0
store {} addrspace(10)* %0, {} addrspace(10)** %44, align 8
%45 = getelementptr inbounds i8, i8* %43, i64 0
store i8 1, i8* %45, align 1
%46 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %42, i64 0
%47 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %42, i64 0
store {} addrspace(10)* %"'", {} addrspace(10)** %47, align 8
%48 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %41, i64 1
store {} addrspace(10)* %1, {} addrspace(10)** %48, align 8
%49 = getelementptr inbounds i8, i8* %43, i64 1
store i8 1, i8* %49, align 1
%50 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %42, i64 1
%51 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %42, i64 1
store {} addrspace(10)* %"'1", {} addrspace(10)** %51, align 8
%52 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %41, i64 2
store {} addrspace(10)* %2, {} addrspace(10)** %52, align 8
%53 = getelementptr inbounds i8, i8* %43, i64 2
store i8 1, i8* %53, align 1
%54 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %42, i64 2
%55 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %42, i64 2
store {} addrspace(10)* %"'2", {} addrspace(10)** %55, align 8
%56 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %41, i64 3
store {} addrspace(10)* %6, {} addrspace(10)** %56, align 8
%57 = getelementptr inbounds i8, i8* %43, i64 3
store i8 1, i8* %57, align 1
%58 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %42, i64 3
%59 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %42, i64 3
store {} addrspace(10)* %"'ip_phi", {} addrspace(10)** %59, align 8
%60 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %41, i64 4
store {} addrspace(10)* %5, {} addrspace(10)** %60, align 8
%61 = getelementptr inbounds i8, i8* %43, i64 4
store i8 0, i8* %61, align 1
%62 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)** %42, i64 4
store {} addrspace(10)* null, {} addrspace(10)** %62, align 8
%63 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* %0, {} addrspace(10)** %46, {} addrspace(10)* %1, {} addrspace(10)** %50, {} addrspace(10)* %2, {} addrspace(10)** %54, {} addrspace(10)* %6, {} addrspace(10)** %58, {} addrspace(10)* %5)
call void inttoptr (i64 1452036880 to void ({} addrspace(10)*, {} addrspace(10)**, {} addrspace(10)**, {} addrspace(10)**, i8*, i32, {} addrspace(10)*)*)({} addrspace(10)* addrspacecast ({}* inttoptr (i64 1495400936 to {}*) to {} addrspace(10)*), {} addrspace(10)** %40, {} addrspace(10)** %41, {} addrspace(10)** %42, i8* %43, i32 5, {} addrspace(10)* %35)
call void @llvm.julia.gc_preserve_end(token %63)
}
declare token @llvm.julia.gc_preserve_begin(...)
declare void @llvm.julia.gc_preserve_end(token)
; Function Attrs: uwtable
define internal nonnull align 4 dereferenceable(4) {}* @preprocess_jl_box_float32(float %0) unnamed_addr #0 !dbg !87 {
top:
%1 = call dereferenceable_or_null(12) i8* @malloc(i64 12), !dbg !88
%2 = load i64, i64* bitcast ({}* ()* @jl_float32_type to i64*), align 4, !dbg !93
%3 = or i64 %2, 3, !dbg !97
%4 = bitcast i8* %1 to i64*, !dbg !96
store i64 %3, i64* %4, align 8, !dbg !96, !tbaa !68
%5 = getelementptr i8, i8* %1, i64 8, !dbg !99
%6 = bitcast i8* %5 to float*, !dbg !101
store float %0, float* %6, align 4, !dbg !101, !tbaa !68
%7 = bitcast i8* %5 to {}*, !dbg !102
ret {}* %7, !dbg !92
}
; Function Attrs: uwtable
define internal nonnull align 4 dereferenceable(4) { i8*, {}*, {}* } @fakeaugmented_jl_box_float32(float %0) unnamed_addr #0 !dbg !104 {
top:
%1 = call dereferenceable_or_null(12) i8* @malloc(i64 12), !dbg !105
%"'mi" = phi i8* , !dbg !110
%2 = load i64, i64* bitcast ({}* ()* @jl_float32_type to i64*), align 4, !dbg !110
%"'il_phi" = phi i64 , !dbg !114
%3 = or i64 %2, 3, !dbg !114
%4 = bitcast i8* %1 to i64*, !dbg !113
store i64 %3, i64* %4, align 8, !dbg !113, !tbaa !68
%5 = getelementptr i8, i8* %1, i64 8, !dbg !116
%6 = bitcast i8* %5 to float*, !dbg !118
store float %0, float* %6, align 4, !dbg !118, !tbaa !68
%7 = bitcast i8* %5 to {}*, !dbg !119
%8 = insertvalue { i8*, {}*, {}* } undef, {}* %7, 1, !dbg !109
ret { i8*, {}*, {}* } %8, !dbg !109
allocsForInversion: ; No predecessors!
}
attributes #0 = { uwtable "frame-pointer"="all" }
attributes SciML/DiffEqFlux.jl#1 = { readnone "enzyme_inactive" }
attributes SciML/DiffEqFlux.jl#2 = { "thunk" }
attributes SciML/DiffEqFlux.jl#3 = { argmemonly nounwind willreturn }
!llvm.module.flags = !{!0, !1}
!llvm.dbg.cu = !{!2, !5, !7, !9, !10, !11, !13, !14, !15, !16, !17, !18, !19, !20, !21, !22, !23, !24, !25, !26, !27, !28, !29, !30, !31, !32, !33, !34, !35, !36, !37}
!0 = !{i32 2, !"Dwarf Version", i32 4}
!1 = !{i32 2, !"Debug Info Version", i32 3}
!2 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !3, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!3 = !DIFile(filename: "REPL[15]", directory: ".")
!4 = !{}
!5 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !6, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!6 = !DIFile(filename: "C:\\Users\\ilyao\\.julia\\packages\\DiffEqSensitivity\\ItIGE\\src\\adjoint_common.jl", directory: ".")
!7 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!8 = !DIFile(filename: "C:\\Users\\ilyao\\.julia\\packages\\GPUCompiler\\9rK1I\\src\\runtime.jl", directory: ".")
!9 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!10 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!11 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !12, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!12 = !DIFile(filename: "C:\\Users\\ilyao\\.julia\\packages\\Enzyme\\g5epq\\src\\compiler.jl", directory: ".")
!13 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!14 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!15 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !12, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!16 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!17 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!18 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !12, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!19 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!20 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !12, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!21 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!22 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!23 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!24 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!25 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!26 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!27 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!28 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!29 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!30 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!31 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!32 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!33 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!34 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!35 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!36 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !12, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!37 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !12, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None)
!38 = distinct !DISubprogram(name: "dudt!", linkageName: "julia_dudt!_10540", scope: null, file: !3, line: 1, type: !39, scopeLine: 1, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !4)
!39 = !DISubroutineType(types: !4)
!40 = !DILocation(line: 1, scope: !38)
!41 = !{!42, !42, i64 0}
!42 = !{!"jtbaa_binding", !43, i64 0}
!43 = !{!"jtbaa_data", !44, i64 0}
!44 = !{!"jtbaa", !45, i64 0}
!45 = !{!"jtbaa"}
!46 = distinct !DISubprogram(name: "box_float32", linkageName: "julia_box_float32_14843", scope: null, file: !8, line: 219, type: !39, scopeLine: 219, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !4)
!47 = !DILocation(line: 95, scope: !48, inlinedAt: !49)
!48 = distinct !DISubprogram(name: "malloc;", linkageName: "malloc", scope: !8, file: !8, type: !39, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !4)
!49 = !DILocation(line: 190, scope: !50, inlinedAt: !51)
!50 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !8, file: !8, type: !39, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !4)
!51 = !DILocation(line: 0, scope: !52, inlinedAt: !54)
!52 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !53, file: !53, type: !39, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !4)
!53 = !DIFile(filename: "none", directory: ".")
!54 = !DILocation(line: 0, scope: !55, inlinedAt: !56)
!55 = distinct !DISubprogram(name: "box;", linkageName: "box", scope: !53, file: !53, type: !39, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !4)
!56 = !DILocation(line: 219, scope: !46)
!57 = !DILocation(line: 45, scope: !58, inlinedAt: !60)
!58 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !59, file: !59, type: !39, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !4)
!59 = !DIFile(filename: "C:\\Users\\ilyao\\.julia\\packages\\LLVM\\wnejv\\src\\interop\\base.jl", directory: ".")
!60 = !DILocation(line: 148, scope: !50, inlinedAt: !61)
!61 = !DILocation(line: 148, scope: !62, inlinedAt: !63)
!62 = distinct !DISubprogram(name: "type_tag;", linkageName: "type_tag", scope: !8, file: !8, type: !39, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !4)
!63 = !DILocation(line: 194, scope: !50, inlinedAt: !51)
!64 = !DILocation(line: 332, scope: !65, inlinedAt: !67)
!65 = distinct !DISubprogram(name: "|;", linkageName: "|", scope: !66, file: !66, type: !39, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !4)
!66 = !DIFile(filename: "int.jl", directory: ".")
!67 = !DILocation(line: 923, scope: !65, inlinedAt: !63)
!68 = !{!43, !43, i64 0}
!69 = !DILocation(line: 159, scope: !70, inlinedAt: !72)
!70 = distinct !DISubprogram(name: "+;", linkageName: "+", scope: !71, file: !71, type: !39, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !4)
!71 = !DIFile(filename: "pointer.jl", directory: ".")
!72 = !DILocation(line: 197, scope: !50, inlinedAt: !51)
!73 = !DILocation(line: 198, scope: !50, inlinedAt: !51)
!74 = !DILocation(line: 130, scope: !75, inlinedAt: !76)
!75 = distinct !DISubprogram(name: "unsafe_pointer_to_objref;", linkageName: "unsafe_pointer_to_objref", scope: !71, file: !71, type: !39, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !4)
!76 = !DILocation(line: 200, scope: !50, inlinedAt: !51)
!77 = distinct !DISubprogram(name: "#115", linkageName: "julia_#115_10537", scope: null, file: !6, line: 196, type: !39, scopeLine: 196, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !5, retainedNodes: !4)
!78 = !DILocation(line: 197, scope: !77)
!79 = distinct !DISubprogram(name: "#115", linkageName: "julia_#115_10537", scope: null, file: !6, line: 196, type: !39, scopeLine: 196, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !5, retainedNodes: !4)
!80 = !DILocation(line: 197, scope: !79)
!81 = distinct !DISubprogram(name: "#115", linkageName: "julia_#115_10537", scope: null, file: !6, line: 196, type: !39, scopeLine: 196, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !5, retainedNodes: !4)
!82 = !DILocation(line: 197, scope: !81)
!83 = distinct !DISubprogram(name: "dudt!", linkageName: "julia_dudt!_10540", scope: null, file: !3, line: 1, type: !39, scopeLine: 1, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !4)
!84 = !DILocation(line: 1, scope: !83)
!85 = distinct !DISubprogram(name: "dudt!", linkageName: "julia_dudt!_10540", scope: null, file: !3, line: 1, type: !39, scopeLine: 1, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !4)
!86 = !DILocation(line: 1, scope: !85)
!87 = distinct !DISubprogram(name: "box_float32", linkageName: "julia_box_float32_14843", scope: null, file: !8, line: 219, type: !39, scopeLine: 219, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !4)
!88 = !DILocation(line: 95, scope: !48, inlinedAt: !89)
!89 = !DILocation(line: 190, scope: !50, inlinedAt: !90)
!90 = !DILocation(line: 0, scope: !52, inlinedAt: !91)
!91 = !DILocation(line: 0, scope: !55, inlinedAt: !92)
!92 = !DILocation(line: 219, scope: !87)
!93 = !DILocation(line: 45, scope: !58, inlinedAt: !94)
!94 = !DILocation(line: 148, scope: !50, inlinedAt: !95)
!95 = !DILocation(line: 148, scope: !62, inlinedAt: !96)
!96 = !DILocation(line: 194, scope: !50, inlinedAt: !90)
!97 = !DILocation(line: 332, scope: !65, inlinedAt: !98)
!98 = !DILocation(line: 923, scope: !65, inlinedAt: !96)
!99 = !DILocation(line: 159, scope: !70, inlinedAt: !100)
!100 = !DILocation(line: 197, scope: !50, inlinedAt: !90)
!101 = !DILocation(line: 198, scope: !50, inlinedAt: !90)
!102 = !DILocation(line: 130, scope: !75, inlinedAt: !103)
!103 = !DILocation(line: 200, scope: !50, inlinedAt: !90)
!104 = distinct !DISubprogram(name: "box_float32", linkageName: "julia_box_float32_14843", scope: null, file: !8, line: 219, type: !39, scopeLine: 219, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !4)
!105 = !DILocation(line: 95, scope: !48, inlinedAt: !106)
!106 = !DILocation(line: 190, scope: !50, inlinedAt: !107)
!107 = !DILocation(line: 0, scope: !52, inlinedAt: !108)
!108 = !DILocation(line: 0, scope: !55, inlinedAt: !109)
!109 = !DILocation(line: 219, scope: !104)
!110 = !DILocation(line: 45, scope: !58, inlinedAt: !111)
!111 = !DILocation(line: 148, scope: !50, inlinedAt: !112)
!112 = !DILocation(line: 148, scope: !62, inlinedAt: !113)
!113 = !DILocation(line: 194, scope: !50, inlinedAt: !107)
!114 = !DILocation(line: 332, scope: !65, inlinedAt: !115)
!115 = !DILocation(line: 923, scope: !65, inlinedAt: !113)
!116 = !DILocation(line: 159, scope: !70, inlinedAt: !117)
!117 = !DILocation(line: 197, scope: !50, inlinedAt: !107)
!118 = !DILocation(line: 198, scope: !50, inlinedAt: !107)
!119 = !DILocation(line: 130, scope: !75, inlinedAt: !120)
!120 = !DILocation(line: 200, scope: !50, inlinedAt: !107)
; Function Attrs: uwtable
define internal nonnull align 4 dereferenceable(4) {}* @preprocess_jl_box_float32(float %0) unnamed_addr #0 !dbg !87 {
top:
%1 = call dereferenceable_or_null(12) i8* @malloc(i64 12), !dbg !88
%2 = load i64, i64* bitcast ({}* ()* @jl_float32_type to i64*), align 4, !dbg !93
%3 = or i64 %2, 3, !dbg !97
%4 = bitcast i8* %1 to i64*, !dbg !96
store i64 %3, i64* %4, align 8, !dbg !96, !tbaa !68
%5 = getelementptr i8, i8* %1, i64 8, !dbg !99
%6 = bitcast i8* %5 to float*, !dbg !101
store float %0, float* %6, align 4, !dbg !101, !tbaa !68
%7 = bitcast i8* %5 to {}*, !dbg !102
ret {}* %7, !dbg !92
}
val: i64 8 - {[-1]:Integer} int: {8,}
val: i64 3 - {[-1]:Integer} int: {3,}
val: %7 = bitcast i8* %5 to {}*, !dbg !70 - {[-1]:Pointer, [-1,0]:Float@float} int: {}
val: %6 = bitcast i8* %5 to float*, !dbg !69 - {[-1]:Pointer, [-1,0]:Float@float} int: {}
val: %2 = load i64, i64* bitcast ({}* ()* @jl_float32_type to i64*), align 4, !dbg !50 - {} int: {}
val: %4 = bitcast i8* %1 to i64*, !dbg !56 - {[-1]:Pointer, [-1,8]:Float@float} int: {}
val: ret {}* %7, !dbg !49 - {} int: {}
val: i64* bitcast ({}* ()* @jl_float32_type to i64*) - {[-1]:Pointer} int: {}
val: %5 = getelementptr i8, i8* %1, i64 8, !dbg !65 - {[-1]:Pointer, [-1,0]:Float@float} int: {}
val: %1 = call dereferenceable_or_null(12) i8* @malloc(i64 12), !dbg !40 - {[-1]:Pointer, [-1,8]:Float@float} int: {}
val: store i64 %3, i64* %4, align 8, !dbg !56, !tbaa !61 - {} int: {}
val: store float %0, float* %6, align 4, !dbg !69, !tbaa !61 - {} int: {}
val: %3 = or i64 %2, 3, !dbg !57 - {} int: {}
val: declare {}* @jl_float32_type() local_unnamed_addr
- {[-1]:Pointer} int: {}
val: float %0 - {[-1]:Float@float} int: {}
fn: ; Function Attrs: uwtable
define internal nonnull align 4 dereferenceable(4) {}* @preprocess_jl_box_float32(float %0) unnamed_addr #0 !dbg !87 {
top:
%1 = call dereferenceable_or_null(12) i8* @malloc(i64 12), !dbg !88
%2 = load i64, i64* bitcast ({}* ()* @jl_float32_type to i64*), align 4, !dbg !93
%3 = or i64 %2, 3, !dbg !97
%4 = bitcast i8* %1 to i64*, !dbg !96
store i64 %3, i64* %4, align 8, !dbg !96, !tbaa !68
%5 = getelementptr i8, i8* %1, i64 8, !dbg !99
%6 = bitcast i8* %5 to float*, !dbg !101
store float %0, float* %6, align 4, !dbg !101, !tbaa !68
%7 = bitcast i8* %5 to {}*, !dbg !102
ret {}* %7, !dbg !92
}
<analysis>
i64 8: {[-1]:Integer}, intvals: {8,}
i64 3: {[-1]:Integer}, intvals: {3,}
%7 = bitcast i8* %5 to {}*, !dbg !70: {[-1]:Pointer, [-1,0]:Float@float}, intvals: {}
%6 = bitcast i8* %5 to float*, !dbg !69: {[-1]:Pointer, [-1,0]:Float@float}, intvals: {}
%2 = load i64, i64* bitcast ({}* ()* @jl_float32_type to i64*), align 4, !dbg !50: {}, intvals: {}
%4 = bitcast i8* %1 to i64*, !dbg !56: {[-1]:Pointer, [-1,8]:Float@float}, intvals: {}
ret {}* %7, !dbg !49: {}, intvals: {}
i64* bitcast ({}* ()* @jl_float32_type to i64*): {[-1]:Pointer}, intvals: {}
%5 = getelementptr i8, i8* %1, i64 8, !dbg !65: {[-1]:Pointer, [-1,0]:Float@float}, intvals: {}
%1 = call dereferenceable_or_null(12) i8* @malloc(i64 12), !dbg !40: {[-1]:Pointer, [-1,8]:Float@float}, intvals: {}
store i64 %3, i64* %4, align 8, !dbg !56, !tbaa !61: {}, intvals: {}
store float %0, float* %6, align 4, !dbg !69, !tbaa !61: {}, intvals: {}
%3 = or i64 %2, 3, !dbg !57: {}, intvals: {}
declare {}* @jl_float32_type() local_unnamed_addr
: {[-1]:Pointer}, intvals: {}
float %0: {[-1]:Float@float}, intvals: {}
</analysis>
could not deduce type of integer %4 = bitcast i8* %1 to i64*, !dbg !56 num:8 q:{[]:Pointer, [8]:Float@float}
warning: C:\Users\ilyao\.julia\packages\GPUCompiler\9rK1I\src\runtime.jl:194:0: failed to deduce type of value %4 = bitcast i8* %1 to i64*, !dbg !56
Assertion failed: 0 && "could not deduce type of integer", file /workspace/srcdir/Enzyme/enzyme/Enzyme/TypeAnalysis/TypeAnalysis.cpp, line 4633
signal (22): SIGABRT
in expression starting at REPL[19]:1
crt_sig_handler at /cygdrive/c/buildbot/worker/package_win64/build/src\signals-win.c:93
raise at C:\WINDOWS\System32\msvcrt.dll (unknown line)
abort at C:\WINDOWS\System32\msvcrt.dll (unknown line)
assert at C:\WINDOWS\System32\msvcrt.dll (unknown line)
firstPointer at /workspace/srcdir/Enzyme/enzyme/Enzyme/TypeAnalysis\TypeAnalysis.cpp:4633
visitStoreInst at /workspace/srcdir/Enzyme/enzyme/Enzyme\AdjointGenerator.h:700
visitStore at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:173 [inlined]
visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:173
visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\InstVisitor.h:112 [inlined]
CreateAugmentedPrimal at /workspace/srcdir/Enzyme/enzyme/Enzyme\EnzymeLogic.cpp:1846
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme\AdjointGenerator.h:7823
delegateCallInst at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\InstVisitor.h:299 [inlined]
visitCall at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:209 [inlined]
visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:209
visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\InstVisitor.h:112 [inlined]
CreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme\EnzymeLogic.cpp:3313
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme\AdjointGenerator.h:8135
delegateCallInst at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\InstVisitor.h:299 [inlined]
visitCall at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:209 [inlined]
visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:209
visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\InstVisitor.h:112 [inlined]
CreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme\EnzymeLogic.cpp:3313
EnzymeCreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme\CApi.cpp:366
EnzymeCreatePrimalAndGradient at C:\Users\ilyao\.julia\packages\Enzyme\g5epq\src\api.jl:94
enzyme! at C:\Users\ilyao\.julia\packages\Enzyme\g5epq\src\compiler.jl:1160
unknown function (ip: 00000000024beb8e)
#codegen#34 at C:\Users\ilyao\.julia\packages\Enzyme\g5epq\src\compiler.jl:1455
codegen##kw at C:\Users\ilyao\.julia\packages\Enzyme\g5epq\src\compiler.jl:1323 [inlined]
_thunk at C:\Users\ilyao\.julia\packages\Enzyme\g5epq\src\compiler.jl:1822
unknown function (ip: 0000000000f161e0)
cached_compilation at C:\Users\ilyao\.julia\packages\GPUCompiler\9rK1I\src\cache.jl:89
thunk at C:\Users\ilyao\.julia\packages\Enzyme\g5epq\src\compiler.jl:1871
autodiff at C:\Users\ilyao\.julia\packages\Enzyme\g5epq\src\Enzyme.jl:169 [inlined]
autodiff at C:\Users\ilyao\.julia\packages\Enzyme\g5epq\src\Enzyme.jl:188 [inlined]
_vecjacobian! at C:\Users\ilyao\.julia\packages\DiffEqSensitivity\ItIGE\src\derivative_wrappers.jl:496
#vecjacobian!#37 at C:\Users\ilyao\.julia\packages\DiffEqSensitivity\ItIGE\src\derivative_wrappers.jl:224 [inlined]
vecjacobian! at C:\Users\ilyao\.julia\packages\DiffEqSensitivity\ItIGE\src\derivative_wrappers.jl:224 [inlined]
ODEQuadratureAdjointSensitivityFunction at C:\Users\ilyao\.julia\packages\DiffEqSensitivity\ItIGE\src\quadrature_adjoint.jl:24
ODEFunction at C:\Users\ilyao\.julia\packages\SciMLBase\h4Gxc\src\scimlfunctions.jl:334 [inlined]
initialize! at C:\Users\ilyao\.julia\packages\OrdinaryDiffEq\Zi9Zh\src\perform_step\low_order_rk_perform_step.jl:623
#__init#472 at C:\Users\ilyao\.julia\packages\OrdinaryDiffEq\Zi9Zh\src\solve.jl:456
__init##kw at C:\Users\ilyao\.julia\packages\OrdinaryDiffEq\Zi9Zh\src\solve.jl:67
__init##kw at C:\Users\ilyao\.julia\packages\OrdinaryDiffEq\Zi9Zh\src\solve.jl:67 [inlined]
__init##kw at C:\Users\ilyao\.julia\packages\OrdinaryDiffEq\Zi9Zh\src\solve.jl:67 [inlined]
__init##kw at C:\Users\ilyao\.julia\packages\OrdinaryDiffEq\Zi9Zh\src\solve.jl:67 [inlined]
__init##kw at C:\Users\ilyao\.julia\packages\OrdinaryDiffEq\Zi9Zh\src\solve.jl:67 [inlined]
#__solve#471 at C:\Users\ilyao\.julia\packages\OrdinaryDiffEq\Zi9Zh\src\solve.jl:4 [inlined]
__solve##kw at C:\Users\ilyao\.julia\packages\OrdinaryDiffEq\Zi9Zh\src\solve.jl:4 [inlined]
#solve_call#42 at C:\Users\ilyao\.julia\packages\DiffEqBase\FtYIB\src\solve.jl:61 [inlined]
solve_call##kw at C:\Users\ilyao\.julia\packages\DiffEqBase\FtYIB\src\solve.jl:48 [inlined]
#solve_up#44 at C:\Users\ilyao\.julia\packages\DiffEqBase\FtYIB\src\solve.jl:87
solve_up##kw at C:\Users\ilyao\.julia\packages\DiffEqBase\FtYIB\src\solve.jl:78 [inlined]
#solve#43 at C:\Users\ilyao\.julia\packages\DiffEqBase\FtYIB\src\solve.jl:73 [inlined]
solve##kw at C:\Users\ilyao\.julia\packages\DiffEqBase\FtYIB\src\solve.jl:68
unknown function (ip: 0000000000f06511)
#_adjoint_sensitivities#209 at C:\Users\ilyao\.julia\packages\DiffEqSensitivity\ItIGE\src\quadrature_adjoint.jl:253
unknown function (ip: 0000000000eb6160)
_adjoint_sensitivities##kw at C:\Users\ilyao\.julia\packages\DiffEqSensitivity\ItIGE\src\quadrature_adjoint.jl:251
_adjoint_sensitivities##kw at C:\Users\ilyao\.julia\packages\DiffEqSensitivity\ItIGE\src\quadrature_adjoint.jl:251
unknown function (ip: 0000000000eb4a56)
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\builtins.c:670
#adjoint_sensitivities#71 at C:\Users\ilyao\.julia\packages\DiffEqSensitivity\ItIGE\src\sensitivity_interface.jl:6
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\builtins.c:670
adjoint_sensitivities##kw at C:\Users\ilyao\.julia\packages\DiffEqSensitivity\ItIGE\src\sensitivity_interface.jl:6
adjoint_sensitivity_backpass at C:\Users\ilyao\.julia\packages\DiffEqSensitivity\ItIGE\src\concrete_solve.jl:272
ZBack at C:\Users\ilyao\.julia\packages\Zygote\TaBlo\src\compiler\chainrules.jl:91 [inlined]
kw_zpullback at C:\Users\ilyao\.julia\packages\Zygote\TaBlo\src\compiler\chainrules.jl:117
SciML/DiffEqFlux.jl#209 at C:\Users\ilyao\.julia\packages\Zygote\TaBlo\src\lib\lib.jl:203 [inlined]
#1753#back at C:\Users\ilyao\.julia\packages\ZygoteRules\AIbCs\src\adjoint.jl:67
unknown function (ip: 0000000000eb2957)
Pullback at C:\Users\ilyao\.julia\packages\DiffEqBase\FtYIB\src\solve.jl:73 [inlined]
Pullback at C:\Users\ilyao\.julia\packages\Zygote\TaBlo\src\compiler\interface2.jl:0
SciML/DiffEqFlux.jl#209 at C:\Users\ilyao\.julia\packages\Zygote\TaBlo\src\lib\lib.jl:203
#1753#back at C:\Users\ilyao\.julia\packages\ZygoteRules\AIbCs\src\adjoint.jl:67
unknown function (ip: 0000000000eb0d27)
Pullback at C:\Users\ilyao\.julia\packages\DiffEqBase\FtYIB\src\solve.jl:68 [inlined]
Pullback at C:\Users\ilyao\.julia\packages\Zygote\TaBlo\src\compiler\interface2.jl:0
Pullback at .\REPL[5]:3 [inlined]
Pullback at C:\Users\ilyao\.julia\packages\Zygote\TaBlo\src\compiler\interface2.jl:0
Pullback at .\REPL[18]:1 [inlined]
Pullback at C:\Users\ilyao\.julia\packages\Zygote\TaBlo\src\compiler\interface2.jl:0
SciML/DiffEqFlux.jl#46 at C:\Users\ilyao\.julia\packages\Zygote\TaBlo\src\compiler\interface.jl:41
unknown function (ip: 0000000000ead23a)
gradient at C:\Users\ilyao\.julia\packages\Zygote\TaBlo\src\compiler\interface.jl:76
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_call at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:115
eval_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:204
eval_stmt_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:155 [inlined]
eval_body at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:576
jl_interpret_toplevel_thunk at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:670
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:877
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:825
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:825
eval_body at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:525
eval_body at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:490
jl_interpret_toplevel_thunk at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:670
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:877
jl_toplevel_eval at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:886 [inlined]
jl_toplevel_eval_in at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:929
eval at .\boot.jl:360 [inlined]
eval_user_input at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:139
repl_backend_loop at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:200
start_repl_backend at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:185
#run_repl#42 at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:317
run_repl at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:305
#874 at .\client.jl:387
jfptr_YY.874_32319.clone_1 at C:\Users\ilyao\.julia\juliaup\julia-1.6.3+0~x64\lib\julia\sys.dll (unknown line)
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
jl_f__call_latest at /cygdrive/c/buildbot/worker/package_win64/build/src\builtins.c:714
#invokelatest#2 at .\essentials.jl:708 [inlined]
invokelatest at .\essentials.jl:706 [inlined]
run_main_repl at .\client.jl:372
exec_options at .\client.jl:302
_start at .\client.jl:485
jfptr__start_22917.clone_1 at C:\Users\ilyao\.julia\juliaup\julia-1.6.3+0~x64\lib\julia\sys.dll (unknown line)
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
true_main at /cygdrive/c/buildbot/worker/package_win64/build/src\jlapi.c:560
repl_entrypoint at /cygdrive/c/buildbot/worker/package_win64/build/src\jlapi.c:702
mainCRTStartup at /cygdrive/c/buildbot/worker/package_win64/build/cli\loader_exe.c:51
BaseThreadInitThunk at C:\WINDOWS\System32\KERNEL32.DLL (unknown line)
RtlUserThreadStart at C:\WINDOWS\SYSTEM32\ntdll.dll (unknown line)
Allocations: 321466587 (Pool: 321420697; Big: 45890); GC: 135
@wsmoses ?
https://github.com/wsmoses/Enzyme.jl/pull/151 will partially resolve (or rather will resolve the immediate error).
This, however, eventually hits a blas kernel (sgemv_64_) which @tansongchen was looking into adding so I'll defer the remainder to them.
let me see...
What's the current state of this?
There is already a fallback BLAS that should be able to handle sgemv
kernel in Enzyme.jl
which we can have a try. If it doesn't work then there may be some calling convention or function name issues that we need to take care of
Upstream and is fine now