v0.5.0
Metal v0.5.0
Metal.jl 0.5 is a feature release, bringing initial support for atomic operations (#168).
Low-level atomics that mimic Metal C are supported (atomic_store_explicit
,
atomic_load_explicit
, etc), as well as a higher-level Metal.@atomic
that can be used to
update array values similar to how CUDA.jl's @atomic
works. This uses native atomics when
supported, and falls back to a compare-exchange loop otherwise.
Minor changes include an update for the @device_code_agx
disassembler, the addition of a
type variable to MtlArray
encoding the storage mode (#194), and support for MPSVector
(#199) which should accelerate matrix/vector multiplications.
Also note that Metal.jl now disallows the construction of Float64 arrays, as these are not
support by the Metal libraries.
Closed issues:
- Support for atomics (#79)
- Make
MtlArray
storage mode a type parameter (#190) - Long stacktrace when trying to create Float64 rand arrays (#205)
- allowscalar equivalent for Metal.jl (#206)
- Define map! ? (#219)
Merged pull requests:
- Implement atomics using compiler intrinsics (#168) (@maleadt)
- Parameterize MtlArray storage mode (#194) (@christiangnrd)
- Implement MPSVector (#199) (@tgymnich)
- Update manifest (#200) (@github-actions[bot])
- Add Metal 3.1 to MTLLanguageVersion (#202) (@christiangnrd)
- Update manifest (#203) (@github-actions[bot])
- CompatHelper: bump compat for GPUCompiler to 0.21, (keep existing compat) (#204) (@github-actions[bot])
- Update manifest (#207) (@github-actions[bot])
- Disallow Float64 arrays entirely. (#209) (@maleadt)
- Adapt to LLVM.jl 6. (#213) (@maleadt)
- Update manifest (#215) (@github-actions[bot])
- Bump disassembler. (#216) (@maleadt)