ChrichriMBP:~/.julia/dev/Metal$ j --proj --trace-compile=stderr --trace-compile-timing -e"using REPL, Metal; @time Metal.@sync @metal identity(nothing);"
#= 8.6 ms =# precompile(Tuple{typeof(Base.vect), Array{String, 1}, Vararg{Array{String, 1}}})
#= 6.0 ms =# precompile(Tuple{typeof(Base.iterate), Array{Array{String, 1}, 1}})
#= 3.4 ms =# precompile(Tuple{typeof(Base.vect), Base.Dict{String, Any}, Vararg{Any}})
#= 3.1 ms =# precompile(Tuple{typeof(Base.vect), Array{String, 1}, Vararg{Any}})
#= 7.4 ms =# precompile(Tuple{typeof(Base.getindex), Type{Union{Nothing, Array{String, 1}}}, Array{String, 1}, Nothing})
#= 2.5 ms =# precompile(Tuple{typeof(Base.iterate), Array{Union{Nothing, Array{String, 1}}, 1}})
#= 4.6 ms =# precompile(Tuple{typeof(Artifacts._artifact_str), Module, String, Base.SubString{String}, String, Base.Dict{String, Any}, Base.SHA1, Base.BinaryPlatforms.Platform, Base.Val{LazyArtifacts}})
#= 26.6 ms =# precompile(Tuple{typeof(Artifacts.__artifact_str), Module, String, Base.SubString{String}, String, Base.Dict{String, Any}, Base.SHA1, Base.BinaryPlatforms.Platform, Base.Val{LazyArtifacts}})
#= 0.0 ms =# precompile(Tuple{typeof(JLLWrappers.get_julia_libpaths)})
#= 52.2 ms =# precompile(Tuple{typeof(Base.get), Base.TTY, Symbol, Bool}) # recompile
#= 4.8 ms =# precompile(Tuple{typeof(Base.issorted), Array{String, 1}, Base.Order.ReverseOrdering{Base.Order.ForwardOrdering}})
#= 17.8 ms =# precompile(Tuple{typeof(GPUCompiler.assign_args!), Expr, Array{Any, 1}})
#= 2.0 ms =# precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Array{Symbol, 1}, Array{Any, 1}}, Int64})
#= 1.7 ms =# precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Array{Symbol, 1}, Array{Any, 1}}, Int64, Int64})
#= 26.7 ms =# precompile(Tuple{typeof(GPUCompiler.split_kwargs), Tuple{}, Array{Symbol, 1}, Vararg{Array{Symbol, 1}}})
#= 2.1 ms =# precompile(Tuple{typeof(Base.indexed_iterate), NTuple{4, Array{Any, 1}}, Int64})
#= 1.7 ms =# precompile(Tuple{typeof(Base.indexed_iterate), NTuple{4, Array{Any, 1}}, Int64, Int64})
#= 2.6 ms =# precompile(Tuple{typeof(Base.parse), Type{Bool}, String})
#= 1.3 ms =# precompile(Tuple{typeof(Base.:(>)), UInt32, UInt32})
#= 1.2 ms =# precompile(Tuple{typeof(Base.in), Symbol, NTuple{6, Symbol}})
#= 2.0 ms =# precompile(Tuple{typeof(Base.:(!=)), UInt32, UInt32})
#= 556.6 ms =# precompile(Tuple{typeof(GPUCompiler.compile), Symbol, GPUCompiler.CompilerJob{T, P} where P where T})
#= 4.7 ms =# precompile(Tuple{typeof(Base.getindex), Core.SimpleVector, Base.UnitRange{Int64}})
#= 1.5 ms =# precompile(Tuple{typeof(Base.Iterators.enumerate), Core.SimpleVector})
#= 2.4 ms =# precompile(Tuple{typeof(Base.iterate), Base.Iterators.Enumerate{Core.SimpleVector}, Tuple{Int64}})
#= 2.5 ms =# precompile(Tuple{typeof(Base.iterate), Base.Iterators.Enumerate{Core.SimpleVector}, Tuple{Int64, Int64}})
#= 1.5 ms =# precompile(Tuple{typeof(Base.getindex), Base.RefValue{Any}})
#= 2.1 ms =# precompile(Tuple{typeof(Base.indexed_iterate), Pair{Symbol, String}, Int64})
#= 2.0 ms =# precompile(Tuple{typeof(Base.indexed_iterate), Pair{Symbol, String}, Int64, Int64})
#= 4.0 ms =# precompile(Tuple{typeof(Base.haskey), Base.Dict{Symbol, Symbol}, Symbol})
#= 1.8 ms =# precompile(Tuple{typeof(Base.replace), String, Pair{String, String}})
#= 1.9 ms =# precompile(Tuple{Type{LLVM.MDTuple}, Ptr{LLVM.API.LLVMOpaqueMetadata}})
#= 1.5 ms =# precompile(Tuple{typeof(Base.length), Array{typeof(DataType), 1}})
#= 1.6 ms =# precompile(Tuple{Type{LLVM.PointerType}, Ptr{LLVM.API.LLVMOpaqueType}})
#= 1.6 ms =# precompile(Tuple{typeof(Base.getindex), Type{LLVM.LLVMType}})
#= 3.9 ms =# precompile(Tuple{typeof(Base.vect), LLVM.Function, Vararg{LLVM.Function}})
#= 1.9 ms =# precompile(Tuple{typeof(Base.getindex), Array{LLVM.LLVMType, 1}, Int64})
#= 2.5 ms =# precompile(Tuple{Type{LLVM.ConstantInt}, Int32})
#= 3.3 ms =# precompile(Tuple{typeof(Base.getproperty), GPUCompiler.MetalCompilerTarget, Symbol})
#= 1.5 ms =# precompile(Tuple{Type{Int32}, UInt32})
#= 0.0 ms =# precompile(Tuple{typeof(LLVMDowngrader_jll.llvm_downgrade)})
#= 0.0 ms =# precompile(Tuple{LLVMDowngrader_jll.var"##llvm_downgrade#8", Bool, Bool, typeof(LLVMDowngrader_jll.llvm_downgrade)})
#= 2.7 ms =# precompile(Tuple{typeof(Base.copy), Base.EnvDict})
#= 1.6 ms =# precompile(Tuple{typeof(Base.getindex), Base.RefValue{String}})
#= 0.0 ms =# precompile(Tuple{typeof(JLLWrappers.adjust_ENV!), Base.Dict{K, V} where V where K, String, String, Bool, Bool})
#= 1.6 ms =# precompile(Tuple{Type{Base.Cmd}, Array{String, 1}})
#= 1.6 ms =# precompile(Tuple{Type{NamedTuple{(:env,), T} where T<:Tuple}, Tuple{Base.Dict{String, String}}})
#= 3.1 ms =# precompile(Tuple{typeof(LLVM.name), LLVM.Function})
#= 1.2 ms =# precompile(Tuple{typeof(Base.convert), Type{Array{UInt8, 1}}, Array{UInt8, 1}})
#= 1.2 ms =# precompile(Tuple{typeof(Base.convert), Type{Base.UUID}, Base.UUID})
#= 1.4 ms =# precompile(Tuple{typeof(Base.Ryu.writefixed), Float64, Int64})
0.762647 seconds (3.76 M allocations: 184.910 MiB, 4.32% gc time, 81.23% compilation time: <1% of which was recompilation)
#= 1.5 ms =# precompile(Tuple{Base.var"#606#607"{Base.WeakKeyDict{Metal.MTL.MTLCommandQueue, Nothing}}, Metal.MTL.MTLCommandQueue})
ChrichriMBP:~/.julia/dev/Metal$ j --proj --trace-compile=stderr --trace-compile-timing -e"using Metal; @time Metal.@sync @metal identity(nothing);"
#= 7.9 ms =# precompile(Tuple{typeof(Base.vect), Array{String, 1}, Vararg{Array{String, 1}}})
#= 5.5 ms =# precompile(Tuple{typeof(Base.iterate), Array{Array{String, 1}, 1}})
#= 4.8 ms =# precompile(Tuple{typeof(Base.vect), Base.Dict{String, Any}, Vararg{Any}})
#= 3.3 ms =# precompile(Tuple{typeof(Base.vect), Array{String, 1}, Vararg{Any}})
#= 9.1 ms =# precompile(Tuple{typeof(Base.getindex), Type{Union{Nothing, Array{String, 1}}}, Array{String, 1}, Nothing})
#= 2.8 ms =# precompile(Tuple{typeof(Base.iterate), Array{Union{Nothing, Array{String, 1}}, 1}})
#= 4.6 ms =# precompile(Tuple{typeof(Artifacts._artifact_str), Module, String, Base.SubString{String}, String, Base.Dict{String, Any}, Base.SHA1, Base.BinaryPlatforms.Platform, Base.Val{LazyArtifacts}})
#= 30.2 ms =# precompile(Tuple{typeof(Artifacts.__artifact_str), Module, String, Base.SubString{String}, String, Base.Dict{String, Any}, Base.SHA1, Base.BinaryPlatforms.Platform, Base.Val{LazyArtifacts}})
#= 0.0 ms =# precompile(Tuple{typeof(JLLWrappers.get_julia_libpaths)})
#= 36.0 ms =# precompile(Tuple{typeof(Base.get), Base.TTY, Symbol, Bool}) # recompile
#= 5.0 ms =# precompile(Tuple{typeof(Base.issorted), Array{String, 1}, Base.Order.ReverseOrdering{Base.Order.ForwardOrdering}})
#= 18.1 ms =# precompile(Tuple{typeof(GPUCompiler.assign_args!), Expr, Array{Any, 1}})
#= 2.0 ms =# precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Array{Symbol, 1}, Array{Any, 1}}, Int64})
#= 1.7 ms =# precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Array{Symbol, 1}, Array{Any, 1}}, Int64, Int64})
#= 27.8 ms =# precompile(Tuple{typeof(GPUCompiler.split_kwargs), Tuple{}, Array{Symbol, 1}, Vararg{Array{Symbol, 1}}})
#= 2.0 ms =# precompile(Tuple{typeof(Base.indexed_iterate), NTuple{4, Array{Any, 1}}, Int64})
#= 1.7 ms =# precompile(Tuple{typeof(Base.indexed_iterate), NTuple{4, Array{Any, 1}}, Int64, Int64})
#= 2.7 ms =# precompile(Tuple{typeof(Base.parse), Type{Bool}, String})
#= 4.4 ms =# precompile(Tuple{typeof(Base.getindex), Core.SimpleVector, Base.UnitRange{Int64}})
#= 2.1 ms =# precompile(Tuple{typeof(Base.Iterators.enumerate), Core.SimpleVector})
#= 2.8 ms =# precompile(Tuple{typeof(Base.iterate), Base.Iterators.Enumerate{Core.SimpleVector}, Tuple{Int64}})
#= 3.1 ms =# precompile(Tuple{typeof(Base.iterate), Base.Iterators.Enumerate{Core.SimpleVector}, Tuple{Int64, Int64}})
#= 1.6 ms =# precompile(Tuple{typeof(Base.getindex), Base.RefValue{Any}})
#= 2.4 ms =# precompile(Tuple{typeof(Base.indexed_iterate), Pair{Symbol, String}, Int64})
#= 2.0 ms =# precompile(Tuple{typeof(Base.indexed_iterate), Pair{Symbol, String}, Int64, Int64})
#= 4.2 ms =# precompile(Tuple{typeof(Base.haskey), Base.Dict{Symbol, Symbol}, Symbol})
#= 2.2 ms =# precompile(Tuple{typeof(Base.replace), String, Pair{String, String}})
#= 1.8 ms =# precompile(Tuple{Type{LLVM.MDTuple}, Ptr{LLVM.API.LLVMOpaqueMetadata}})
#= 1.2 ms =# precompile(Tuple{typeof(Base.length), Array{typeof(DataType), 1}})
#= 1.5 ms =# precompile(Tuple{Type{LLVM.PointerType}, Ptr{LLVM.API.LLVMOpaqueType}})
#= 1.5 ms =# precompile(Tuple{typeof(Base.getindex), Type{LLVM.LLVMType}})
#= 4.0 ms =# precompile(Tuple{typeof(Base.vect), LLVM.Function, Vararg{LLVM.Function}})
#= 2.0 ms =# precompile(Tuple{typeof(Base.getindex), Array{LLVM.LLVMType, 1}, Int64})
#= 2.4 ms =# precompile(Tuple{Type{LLVM.ConstantInt}, Int32})
#= 3.6 ms =# precompile(Tuple{typeof(Base.getproperty), GPUCompiler.MetalCompilerTarget, Symbol})
#= 1.7 ms =# precompile(Tuple{Type{Int32}, UInt32})
#= 0.0 ms =# precompile(Tuple{typeof(LLVMDowngrader_jll.llvm_downgrade)})
#= 0.0 ms =# precompile(Tuple{LLVMDowngrader_jll.var"##llvm_downgrade#8", Bool, Bool, typeof(LLVMDowngrader_jll.llvm_downgrade)})
#= 2.3 ms =# precompile(Tuple{typeof(Base.copy), Base.EnvDict})
#= 1.4 ms =# precompile(Tuple{typeof(Base.getindex), Base.RefValue{String}})
#= 0.0 ms =# precompile(Tuple{typeof(JLLWrappers.adjust_ENV!), Base.Dict{K, V} where V where K, String, String, Bool, Bool})
#= 1.8 ms =# precompile(Tuple{Type{Base.Cmd}, Array{String, 1}})
#= 1.5 ms =# precompile(Tuple{Type{NamedTuple{(:env,), T} where T<:Tuple}, Tuple{Base.Dict{String, String}}})
#= 3.3 ms =# precompile(Tuple{typeof(LLVM.name), LLVM.Function})
#= 1.2 ms =# precompile(Tuple{typeof(Base.convert), Type{Array{UInt8, 1}}, Array{UInt8, 1}})
#= 1.3 ms =# precompile(Tuple{typeof(Base.convert), Type{Base.UUID}, Base.UUID})
#= 3.7 ms =# precompile(Tuple{typeof(Core.kwcall), NamedTuple{(:msg,), Tuple{Nothing}}, typeof(Base.time_print), Base.TTY, Float64, Int64, Int64, Int64, Int64, Float64, Float64, Bool})
#= 1.3 ms =# precompile(Tuple{typeof(Base.Ryu.writefixed), Float64, Int64})
0.188296 seconds (15.88 k allocations: 1.108 MiB, 34.58% compilation time: <1% of which was recompilation)
#= 1.4 ms =# precompile(Tuple{Base.var"#606#607"{Base.WeakKeyDict{Metal.MTL.MTLCommandQueue, Nothing}}, Metal.MTL.MTLCommandQueue})
When run in the REPL, things that should have been precompiled seem to be ignored.
1.12:
With
--trace-compile-timing. Notice the line that takes 556ms:Details
This is potentially a Base julia issue (See JuliaLang/julia#61851 (comment) cc @adienes) but I'm. reporting here since I've personally only noticed it here.