Skip to content

v1.12.0

Latest

Choose a tag to compare

@github-actions github-actions released this 26 Oct 13:13
· 27 commits to main since this release
1352649

Metal v1.12.0

Diff since v1.11.1

Merged pull requests:

  • Default to SharedStorage (#822) (@christiangnrd)
  • Use separate history for validation testsuite (#971) (@christiangnrd)
  • Remove a quirk that never applies (#974) (@maleadt)
  • Use GPUToolbox's Float64-free overrides of Base math (#975) (@maleadt)
  • Stop excluding device code from coverage (#976) (@maleadt)
  • Emit atomics as LLVM atomics, lowered by GPUCompiler (#977) (@maleadt)
  • Test @fastmath integer powers (#978) (@maleadt)
  • Julia 1.14 compatibility; CI step selection (#979) (@maleadt)
  • Fix resize! to zero elements (#983) (@tgymnich)
  • Compute Float16 sin, cos and sincos in Float32 (#988) (@arcusbuilds)
  • Revert accidental change to default binary archives max size (#989) (@christiangnrd)
  • Support wrapping arbitrary arrays with unsafe_wrap(MtlArray, ...) (#991) (@maleadt)
  • Convert the kernel callable at launch, like its arguments (#992) (@maleadt)
  • Decide kernel argument slots from the compiled signature (#993) (@maleadt)
  • Implement KernelInterface, and support KernelAbstractions 0.10 (#994) (@maleadt)
  • Make synchronization cooperative, using GPUToolbox (#995) (@maleadt)
  • Upgrade to LLVM.jl 10 (#997) (@maleadt)
  • Support fastmath in @metal (#999) (@christiangnrd)
  • Don't try to precompile when no devices are present (#1000) (@christiangnrd)
  • Synchronize work left behind by finished tasks (#1001) (@maleadt)
  • Synchronize host access per allocation (#1002) (@maleadt)
  • Support minthreads and maxthreads kernel options (#1007) (@christiangnrd)
  • Update LLVMDowngrader_jll requirement from 0.11 to 0.11, 0.12 (#1008) (@dependabot[bot])
  • Remove the binary archive cache (#1009) (@maleadt)
  • Report kernel lookups to the compile hook instead of recompiling (#1010) (@maleadt)
  • Emit LLVM math intrinsics, lowered to AIR by GPUCompiler (#1011) (@maleadt)
  • Publish benchmarks when Buildkite reports them (#1012) (@maleadt)
  • Use GPUArrays 12's reductions, scans, sorting and findall (#1013) (@maleadt)
  • Reduce host compilation when launching a kernel with a new signature (#1015) (@maleadt)
  • Fix error messages for too large grids (#1016) (@christiangnrd)
  • Remove useless large broadcasting tests (#1020) (@christiangnrd)
  • Tell GPUCompiler the GPU family, for its Apple10 atomics workaround (#1025) (@maleadt)
  • Avoid boxing variables captured by closures (#1026) (@maleadt)
  • Adapt to ObjectiveC.jl 7's per-call autorelease pools (#1027) (@maleadt)
  • Test Symbols in arrays and closures read in place (#1028) (@maleadt)
  • Allow CEnum 1.0 (#1030) (@maleadt)
  • Hash compiler configuration kwargs without boxing them (#1031) (@maleadt)
  • Make the MPSGraph array operations a documented, public API (#1033) (@maleadt)
  • Fix Const and connect it to KernelAbstractions' @Const (#1034) (@maleadt)
  • Check the destination size in mul! (#1035) (@maleadt)
  • Fix three metallib container bugs: function types, UUID byte order, group sizes (#1036) (@maleadt)
  • Fix comparisons with Rationals (#1037) (@maleadt)
  • Recognize MSL 4.1 and keep loading when the default language version is unknown (#1038) (@maleadt)
  • Declare BFloat16s as a dependency of the examples (#1039) (@maleadt)
  • Derive AIR, metallib and platform versions from one effective deployment target (#1040) (@maleadt)
  • Wrap the Metal 4 command API (#1042) (@maleadt)
  • Read and write Metal libraries losslessly (#1043) (@maleadt)
  • Put the command-submission backend behind an interface (#1044) (@maleadt)
  • Skip precompilation workloads in the load tests (#1045) (@maleadt)
  • Fail when Metal returns a null GPU address (#1047) (@maleadt)
  • Detect a non-responsive driver on compilation failure (#1048) (@maleadt)
  • Test integer three-way comparisons (#1049) (@maleadt)
  • Derive library function metadata (type, versions, CNST, DEBI) from AIR modules (#1050) (@maleadt)
  • Add an opt-in Metal 4 command backend (#1051) (@maleadt)
  • Add a metallib command-line tool (#1052) (@maleadt)
  • Decode the reflection data of Metal libraries (#1053) (@maleadt)
  • Fix Rational{Int64} arithmetic (#1055) (@maleadt)
  • Add memory order and scope arguments to barriers (#1056) (@maleadt)
  • Generate the reflection data of Metal libraries (#1057) (@maleadt)
  • Label kernels, buffers and dispatches in GPU frame captures (#1058) (@maleadt)
  • Embed kernel sources for Xcode's GPU frame capture (#1059) (@maleadt)
  • Name capture traces, explain METAL_CAPTURE_ENABLED, record with Metal System Trace (#1060) (@maleadt)
  • Show Metal.jl's signposts in Instruments, and add launch and wait intervals (#1061) (@maleadt)
  • Turn the Xcode and Instruments docs into a tutorial (#1062) (@maleadt)
  • Readable kernel names and source-archive fixes for Xcode (#1063) (@maleadt)
  • Readable kernel names and source-archive fixes for Xcode (#1064) (@maleadt)
  • Include BatchedCommandQueue in the API reference (#1066) (@maleadt)
  • Label the Metal 4 argument table through its descriptor (#1067) (@maleadt)
  • Make the tests work when Metal is installed as a package (#1068) (@maleadt)
  • Use plain accesses around threadgroup atomics in tests (#1069) (@maleadt)
  • Keep checked conversions out of the exception runtime (#1070) (@maleadt)
  • Fill unspecified type parameters when adapting to MtlArray (#1076) (@maleadt)
  • Raise a clear error when passing CPU arrays to kernels (#1077) (@maleadt)
  • Report the back-end's abort reason when Metal's compiler service crashes (#1078) (@maleadt)
  • Use AIR's i16 quad-group ballot and vote intrinsics (#1079) (@maleadt)
  • Pass the AIR 2.9 operands of the tensor intrinsics (#1080) (@maleadt)
  • Build the documentation on GitHub Actions, and rework it (#1081) (@maleadt)
  • Precompile the first operations of a session (#1083) (@maleadt)
  • Add metalcall for launching compute pipelines (#1084) (@maleadt)
  • Launch @metal kernels through metalcall's path (#1085) (@maleadt)
  • Fix MPS decompositions of Float16 and singular matrices (#1087) (@maleadt)
  • Show the command_api preference in versioninfo (#1088) (@maleadt)
  • Keep the file name of long paths in device stack traces (#1089) (@maleadt)
  • Fix @mtlprintf without arguments on LLVM.jl 10.3 (#1091) (@maleadt)
  • Solves view of view bug (#1093) (@jagoosw)
  • Encode cached MPSGraphs instead of compiled executables (#1094) (@maleadt)
  • Fail the benchmarks when they leak device memory (#1095) (@maleadt)
  • Document where AIR intrinsics are legalized (#1097) (@maleadt)
  • Don't let a GC pause abort the cooperative synchronization tests (#1098) (@maleadt)
  • Legalize barriers for the target AIR version here, not in GPUCompiler (#1099) (@maleadt)
  • Precompile displaying Metal.@profile results in their common shapes (#1100) (@maleadt)
  • Drop raw LLVM C API uses and workarounds, require LLVM.jl 10.4 (#1102) (@maleadt)
  • Make host-to-device copies non-blocking by staging through newBufferWithBytes (#1103) (@maleadt)
  • Only draw the device RNG seed for kernels that use it (#1104) (@maleadt)
  • Keep the parent's preferences in the precompilation test's child sessions (#1105) (@maleadt)
  • Check the alignment of arrays passed to kernels (#1106) (@maleadt)
  • Test KernelAbstractions launches by their behavior, not the launch kind (#1107) (@maleadt)
  • Support arrays of isbits unions (#1108) (@maleadt)
  • Render code blocks with DocumenterCodeBlocks (#1109) (@maleadt)
  • Cache the kernel lookup of mtlfunction with GPUCompiler's cached_lookup (#1110) (@maleadt)

Closed issues:

  • Better error message for mixing MtlArray and Array operations (#212)
  • Compilation failure due to high register usage (#214)
  • Threadgroup atomics require all-atomic operation (#217)
  • Missing public/exported docstrings (#358)
  • Generalize adapt to allow specifying the storage mode but not the element type and/or number of dimensions (#363)
  • Things to port from CUDA.jl (#443)
  • macOS 14: large MTLBuffers can complete commands successfully but return zeros / drop writes (#476)
  • Native LLVM atomics (#478)
  • Enhance Support for Reading and Writing Metal Libraries (#511)
  • Can't compare Float32 with Rational on Metal (#550)
  • Improve constant-propagation (#567)
  • Multiplication of some types with Rational causes compiler error (#570)
  • Support for Metal 4 (#603)
  • Segfaults when using Adapt for custom struct with Int as parametric type (#684)
  • Inversion of ComplexF32 numbers uses Float64 numbers and fails to compile (#871)
  • Const is broken (#901)
  • 2D @index(Global, NTuple) is ~5x slower than linear indexing (#910)
  • div(::Float32, ::Float32) uses Float64 on Julia ≥ 1.12 (#972)
  • sind/cosd/tand on Float32 use Float64 (#973)
  • Kernel launches with an empty ndrange throw DivideError (#980)
  • resize! to zero elements throws an AssertionError (#981)
  • Float16 sin/cos are inaccurate on M1 (#985)
  • Binary archives slow down first launch and exit of every session (#986)
  • Documentation hasn't been deployed since June (stable stuck at v1.9.3) (#987)
  • Closure kernels read zeros from captured arrays under shader validation (#990)
  • Precompilation fails on Apple silicon when no Metal device is visible (#996)
  • Launching a new kernel signature takes ~0.1 s of host compilation (#1014)
  • Symbols are broken on Apple M2 (#1017)
  • Closures are broken on Apple M2 (#1018)
  • Float atomics crash the shader compiler on M5 + macOS 26 (XPC_ERROR_CONNECTION_INTERRUPTED) (#1024)
  • Make the MPSGraph reduction and scan APIs public, so AcceleratedKernels can use them (#1029)
  • mul! does not check the destination size (#1032)
  • Some tests fail when not run from a dev environment (#1054)
  • Make host-to-device copies non-blocking by staging through newBufferWithBytes (#1071)
  • Fix AIR quad ballot/vote intrinsic declarations for Metal 4.1 (#1072)
  • Match AIR 2.9 tensor intrinsic signatures and descriptor type (#1073)
  • Preserve compiler NSError details when pipeline creation fails (#1074)
  • G17 macOS 26 Float32 atomic add fails with AIR compile options (#1075)
  • View of a view is broken (#1092)
  • Kernel launches advance the host RNG even when the kernel doesn't use the device RNG (#1101)