Repository navigation
Metal v1.12.0
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
@fastmathinteger 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
Constand 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
metallibcommand-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
metalcallfor launching compute pipelines (#1084) (@maleadt) - Launch
@metalkernels throughmetalcall'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
@mtlprintfwithout 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.@profileresults 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
mtlfunctionwith GPUCompiler'scached_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
adaptto 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
Float32withRationalon Metal (#550) - Improve constant-propagation (#567)
- Multiplication of some types with
Rationalcauses compiler error (#570) - Support for Metal 4 (#603)
- Segfaults when using Adapt for custom struct with Int as parametric type (#684)
- Inversion of
ComplexF32numbers usesFloat64numbers and fails to compile (#871) Constis 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/tandon Float32 use Float64 (#973)- Kernel launches with an empty ndrange throw DivideError (#980)
- resize! to zero elements throws an AssertionError (#981)
- Float16
sin/cosare 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)