-
Notifications
You must be signed in to change notification settings - Fork 112
Open
Description
i took care to use Float32 for everything i passed in, so somewhere in Interpolations.jl a Float64 is used.
julia> using Interpolations, Metal, Adapt
julia> itp = Interpolations.interpolate([1, 2, 3.0f0], BSpline(Linear()))
3-element interpolate(::Vector{Float32}, BSpline(Linear())) with element type Float32:
1.0
2.0
3.0
julia> mtlitp = adapt(MtlArray{Float32}, itp);
julia> mtlitp.(1f0)
1.0f0
julia> mtlitp.(1f0:3f0)
ERROR: InvalidIRError: compiling MethodInstance for (::Metal.var"#broadcast_linear#_copyto!##1")(::MtlDeviceVector{…}, ::Base.Broadcast.Broadcasted{…}) resulted in invalid LLVM IR
Reason: unsupported use of double value
Reason: unsupported use of double value
Reason: unsupported use of double value
Stacktrace:
[1] Float64
@ ./float.jl:245
[2] convert
@ ./number.jl:7
[3] _promote
@ ./promotion.jl:379
[4] promote
@ ./promotion.jl:404
[5] *
@ ./promotion.jl:434
[6] unsafe_getindex
@ ./range.jl:970
[7] _getindex
@ ./range.jl:936
[8] getindex
@ ./array.jl:3134
[9] _broadcast_getindex
@ ./broadcast.jl:665
[10] _getindex
@ ./broadcast.jl:696
[11] _broadcast_getindex
@ ./broadcast.jl:671
[12] _getindex
@ ./broadcast.jl:620
[13] getindex
@ ./broadcast.jl:616
[14] broadcast_linear
@ ~/.julia/packages/Metal/av3If/src/broadcast.jl:97
Metadata
Metadata
Assignees
Labels
No labels