You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Here, a is MtlVector and b is Vector. I imagine we don't want people to mix these things and work automatically. Perhaps the error message could be simpler.
julia> a .+ b
ERROR: GPU compilation of MethodInstance for (::GPUArrays.var"#broadcast_kernel#26")(::Metal.mtlKernelContext, ::MtlDeviceVector{Float32, 1}, ::Base.Broadcast.Broadcasted{Metal.MtlArrayStyle{1}, Tuple{Base.OneTo{Int64}}, typeof(+), Tuple{Base.Broadcast.Extruded{MtlDeviceVector{Float32, 1}, Tuple{Bool}, Tuple{Int64}}, Base.Broadcast.Extruded{Vector{Float32}, Tuple{Bool}, Tuple{Int64}}}}, ::Int64) failed
KernelError: passing and using non-bitstype argument
Argument 4 to your kernel function is of type Base.Broadcast.Broadcasted{Metal.MtlArrayStyle{1}, Tuple{Base.OneTo{Int64}}, typeof(+), Tuple{Base.Broadcast.Extruded{MtlDeviceVector{Float32, 1}, Tuple{Bool}, Tuple{Int64}}, Base.Broadcast.Extruded{Vector{Float32}, Tuple{Bool}, Tuple{Int64}}}}, which is not isbits:
.args is of type Tuple{Base.Broadcast.Extruded{MtlDeviceVector{Float32, 1}, Tuple{Bool}, Tuple{Int64}}, Base.Broadcast.Extruded{Vector{Float32}, Tuple{Bool}, Tuple{Int64}}} which is not isbits.
.2 is of type Base.Broadcast.Extruded{Vector{Float32}, Tuple{Bool}, Tuple{Int64}} which is not isbits.
.x is of type Vector{Float32} which is not isbits.
Stacktrace:
[1] check_invocation(job::GPUCompiler.CompilerJob)
@ GPUCompiler ~/.julia/packages/GPUCompiler/NVLGB/src/validation.jl:96
[2] macro expansion
@ ~/.julia/packages/GPUCompiler/NVLGB/src/driver.jl:99 [inlined]
[3] macro expansion
@ ~/.julia/packages/TimerOutputs/RsWnF/src/TimerOutput.jl:253 [inlined]
[4] codegen(output::Symbol, job::GPUCompiler.CompilerJob; libraries::Bool, toplevel::Bool, optimize::Bool, cleanup::Bool, strip::Bool, validate::Bool, only_entry::Bool, parent_job::Nothing, ctx::LLVM.ThreadSafeContext)
@ GPUCompiler ~/.julia/packages/GPUCompiler/NVLGB/src/driver.jl:97
[5] codegen
@ ~/.julia/packages/GPUCompiler/NVLGB/src/driver.jl:92 [inlined]
[6] compile(target::Symbol, job::GPUCompiler.CompilerJob; libraries::Bool, toplevel::Bool, optimize::Bool, cleanup::Bool, strip::Bool, validate::Bool, only_entry::Bool, ctx::LLVM.ThreadSafeContext)
@ GPUCompiler ~/.julia/packages/GPUCompiler/NVLGB/src/driver.jl:88
[7] compile
@ ~/.julia/packages/GPUCompiler/NVLGB/src/driver.jl:79 [inlined]
[8] compile(job::GPUCompiler.CompilerJob, ctx::LLVM.ThreadSafeContext)
@ Metal ~/.julia/packages/Metal/9shJi/src/compiler/compilation.jl:59
[9] #60
@ ~/.julia/packages/Metal/9shJi/src/compiler/compilation.jl:55 [inlined]
[10] LLVM.ThreadSafeContext(f::Metal.var"#60#61"{GPUCompiler.CompilerJob{GPUCompiler.MetalCompilerTarget, Metal.MetalCompilerParams}})
@ LLVM ~/.julia/packages/LLVM/5aiiG/src/executionengine/ts_module.jl:14
[11] JuliaContext
@ ~/.julia/packages/GPUCompiler/NVLGB/src/driver.jl:35 [inlined]
[12] compile
@ ~/.julia/packages/Metal/9shJi/src/compiler/compilation.jl:54 [inlined]
[13] actual_compilation(cache::Dict{Any, Any}, src::Core.MethodInstance, world::UInt64, cfg::GPUCompiler.CompilerConfig{GPUCompiler.MetalCompilerTarget, Metal.MetalCompilerParams}, compiler::typeof(Metal.compile), linker::typeof(Metal.link))
@ GPUCompiler ~/.julia/packages/GPUCompiler/NVLGB/src/execution.jl:125
[14] cached_compilation(cache::Dict{Any, Any}, src::Core.MethodInstance, cfg::GPUCompiler.CompilerConfig{GPUCompiler.MetalCompilerTarget, Metal.MetalCompilerParams}, compiler::Function, linker::Function)
@ GPUCompiler ~/.julia/packages/GPUCompiler/NVLGB/src/execution.jl:103
[15] macro expansion
@ ~/.julia/packages/Metal/9shJi/src/compiler/execution.jl:162 [inlined]
[16] macro expansion
@ ./lock.jl:267 [inlined]
[17] mtlfunction(f::GPUArrays.var"#broadcast_kernel#26", tt::Type{Tuple{Metal.mtlKernelContext, MtlDeviceVector{Float32, 1}, Base.Broadcast.Broadcasted{Metal.MtlArrayStyle{1}, Tuple{Base.OneTo{Int64}}, typeof(+), Tuple{Base.Broadcast.Extruded{MtlDeviceVector{Float32, 1}, Tuple{Bool}, Tuple{Int64}}, Base.Broadcast.Extruded{Vector{Float32}, Tuple{Bool}, Tuple{Int64}}}}, Int64}}; name::Nothing, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Metal ~/.julia/packages/Metal/9shJi/src/compiler/execution.jl:157
[18] mtlfunction
@ ~/.julia/packages/Metal/9shJi/src/compiler/execution.jl:155 [inlined]
[19] macro expansion
@ ~/.julia/packages/Metal/9shJi/src/compiler/execution.jl:77 [inlined]
[20] #launch_heuristic#107
@ ~/.julia/packages/Metal/9shJi/src/gpuarrays.jl:14 [inlined]
[21] launch_heuristic
@ ~/.julia/packages/Metal/9shJi/src/gpuarrays.jl:12 [inlined]
[22] _copyto!
@ ~/.julia/packages/GPUArrays/t0LfC/src/host/broadcast.jl:65 [inlined]
[23] copyto!
@ ~/.julia/packages/GPUArrays/t0LfC/src/host/broadcast.jl:46 [inlined]
[24] copy
@ ~/.julia/packages/GPUArrays/t0LfC/src/host/broadcast.jl:37 [inlined]
[25] materialize(bc::Base.Broadcast.Broadcasted{Metal.MtlArrayStyle{1}, Nothing, typeof(+), Tuple{MtlVector{Float32}, Vector{Float32}}})
@ Base.Broadcast ./broadcast.jl:873
[26] top-level scope
@ REPL[16]:1
[27] top-level scope
@ ~/.julia/packages/Metal/9shJi/src/initialization.jl:51
The text was updated successfully, but these errors were encountered:
Here, a is MtlVector and b is Vector. I imagine we don't want people to mix these things and work automatically. Perhaps the error message could be simpler.
The text was updated successfully, but these errors were encountered: