JuliaSIMD / JuliaSIMD/LoopVectorization.jl

no method matching similar in broadcasting expression

Open
#119 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Julia
Stars
789
Forks
73
PR merge metrics
No merged PRs in 30d

Description

On LV v0.8.1
```julia
julia> using StaticArrays, LoopVectorization

julia> function softmin_avx(a::T, b, c, γ) where T
γ = -γ
v = SVector(a, b, c, zero(T))
v = @avx v ./ γ
maxv = maximum(v)
ve = @avx exp.(v .- maxv) #.* SVector(one(T), one(T), one(T), zero(T))
γ*(log(sum(ve)) + maxv)
end
softmin_avx (generic function with 1 method)

julia> softmin_avx(1.0, 1.0, 1.0, 1.0)
ERROR: MethodError: no method matching similar(::Base.Broadcast.Broadcasted{StaticArrays.StaticArrayStyle{1},Nothing,typeof(/),Tuple{SArray{Tuple{4},Float64,1,4},Float64}}, ::Type{Float64})
Closest candidates are:
similar(::JuliaInterpreter.Compiled, ::Any) at /home/fredrikb/.julia/packages/JuliaInterpreter/sZur5/src/types.jl:7
similar(::Array{T,1}, ::Type) where T at array.jl:358
similar(::Array{T,2}, ::Type) where T at array.jl:359
...
Stacktrace:
[1] vmaterialize at /home/fredrikb/.julia/packages/LoopVectorization/lmGAZ/src/broadcast.jl:316 [inlined]
[2] softmin_avx(::Float64, ::Float64, ::Float64, ::Float64) at ./none:4
[3] top-level scope at none:0
```

Trying the same thing with `vmap` produces another error
```julia
jjulia> function softmin_avx(a::T, b, c, γ) where T
γ = -γ
v = SVector(a, b, c, zero(T))
v = vmap(v->v / γ, v)
maxv = maximum(v)
ve = vmap(v->exp(v - maxv), v) #.* SVector(one(T), one(T), one(T), zero(T))
γ*(log(sum(ve)) + maxv)
end
softmin_avx (generic function with 1 method)

julia> softmin_avx(1.0, 1.0, 1.0, 1.0)
ERROR: Abstract type Any does not have a definite size.
Stacktrace:
[1] sizeof(::Type{T} where T) at ./essentials.jl:451
[2] #s19#58(::Any, ::Any, ::Any) at /home/fredrikb/.julia/packages/VectorizationBase/e8k1q/src/vector_width.jl:26
[3] (::Core.GeneratedFunctionStub)(::Any, ::Vararg{Any,N} where N) at ./boot.jl:526
[4] #s18#60(::Any, ::Any, ::Any) at /home/fredrikb/.julia/packages/VectorizationBase/e8k1q/src/vector_width.jl:33
[5] (::Core.GeneratedFunctionStub)(::Any, ::Vararg{Any,N} where N) at ./boot.jl:526
[6] vmap_quote(::Int64, ::Type{Any}) at /home/fredrikb/.julia/packages/LoopVectorization/lmGAZ/src/map.jl:3
[7] #s16#5(::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any) at /home/fredrikb/.julia/packages/LoopVectorization/lmGAZ/src/map.jl:32
[8] (::Core.GeneratedFunctionStub)(::Any, ::Vararg{Any,N} where N) at ./boot.jl:526
[9] vmap_call at /home/fredrikb/.julia/packages/LoopVectorization/lmGAZ/src/map.jl:165 [inlined]
[10] vmap at /home/fredrikb/.julia/packages/LoopVectorization/lmGAZ/src/map.jl:175 [inlined]
[11] softmin_avx(::Float64, ::Float64, ::Float64, ::Float64) at ./none:4
[12] top-level scope at none:0
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.