First off, for those working on the development of Metal.jl, if you read this, thank you!
Now for my issue / bug. In trying to do something with metal, I ran into the following reproducible problem. Consider the simple matrix multiply code below. Running this in the REPL, if I go line by line through this, the benchmark run of mat_mul will run just fine. However, if I try to run the benchmark command a second time, it kills my REPL before I can even read what error it is throwing. This happens every time. If I start a new REPL, the final command testing the mat_mul! function runs, but if you run it a second time, it kills the REPL. I wish I could provide an error trace, but the REPL dies immediately. Anyone run into something like this? Any thoughts? Am I just doing something silly here?
All version info is in a screenshot below.
using Metal, BenchmarkTools
Metal.versioninfo()
A, B, C = Float32.(randn(100,100)), Float32.(randn(100,100)), Float32.(randn(100,100));
Am, Bm, Cm = MtlArray(A), MtlArray(B), MtlArray(C);
function mat_mul!(Out,M,N)
Out .= M*N
end
@benchmark mat_mul!($Cm,$Am,$Bm)