Comments (1)
Currently,
MTL
is reexported. Do we want that?
Ideally not, but the package wasn't ready for that initially, i.e., you needed to use lower-level APIs to get to basic functionality. We should probably revisit that.
(A similar argument can be made for CUDA.jl)
What if we didn't, and everything in the module were renamed so that they would be qualified without redundancy. Ex.
MTLDevice
->MTL.Device
. I don't actually know if this would be a good idea, but I would be curious to know what people think.
I personally wouldn't do that. One of my goals was for people familiar with the Metal APIs to feel at home using Metal.jl (the same applies to CUDA/CUDA.jl). So after importing MTL it should be possible to do as much as possible using names and semantics that are very similar (but more high-level) than what Metal itself offers.
MPS
is not reexported. Do we want to reexport it? Regardless, which functions/objects ofMPS
should be considered public?
Similar situation as MTL (so I wouldn't reexport it if needed), with the difference that even Metal.jl doesn't use anything of the MPS submodule directly I think (it's all interface methods implemented inside of the MPS module). So in principle, nothing even needs to be exported at all.
There are some inconsistencies between the way
device
andcurrent_device
work in Metal.jl and CUDA.jl, do we want to bring the functionality closer?
FWIW, oneAPI.jl also uses device
, so I guess it makes sense to switch Metal.jl to that too.
from metal.jl.
Related Issues (20)
- Segmentation Faults HOT 11
- Port `accmulate!` and `findall` from CUDA.jl HOT 8
- `MTL.append_copy!` silently ignores Metal documentation restriction HOT 2
- Tests failing with `GPUCompiler` v0.26.5 and `LLVM` v7.1 HOT 3
- downgrades LLVM HOT 2
- Missing public/exported docstrings HOT 1
- Generalize `adapt` to allow specifying the storage mode but not the element type and/or number of dimensions HOT 3
- sqrt(::Complex) unsupported due to conversion exceptions HOT 3
- Compilation failure on 1.11 HOT 1
- Metal 3.1 and 3.2 HOT 3
- M1/M2: Large matrix multiplications can contains NaNs HOT 18
- `MTLBinaryArchive`
- `Metal.code_agx()` failing in MacOS 15 Beta 3 HOT 2
- Test for min / max broadcasting issue HOT 3
- Add a `metal_version` function
- Type piracy HOT 1
- Potentially unused code in gpuarrays.jl
- Control flow-related miscompilation:
- Backslash operator failing HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from metal.jl.