Skip to content

Commit 3ceaf34

Browse files
committed
docs: update readme
1 parent 19ab2cf commit 3ceaf34

1 file changed

Lines changed: 5 additions & 4 deletions

File tree

README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@ on both macOS and Linux.
1212

1313
The M-Series Macs have an unified memory architecture, which allows for more passing data between the CPU and GPU to be effectively a no-op.
1414

15-
Besides the backend, this library also provides an Nx.Defn.Compiler implementation that allows for JIT compilation of Nx functions to MLX kernels.
16-
Using this compiler is not much different from just using the default `Nx.Defn.Evaluator`, but because it sets an explicit `EMLX.eval` call,
17-
it allows for better caching of Nx-defined functions by MLX itself.
15+
Besides the backend, this library also provides a `Nx.Defn.Compiler` implementation that JIT-compiles Nx functions with smart use of MLX command queues.
16+
17+
- **Worker-thread dispatch** — MLX ops run on dedicated threads instead of BEAM dirty schedulers, eliminating scheduler starvation under load.
18+
- **Per-process Metal command queues (`EMLX.CommandQueue`)** — each BEAM process can get its own GPU command queue for true process-level GPU isolation.
19+
- **GPU pointer interop**`Nx.Backend.from_pointer/5` and `to_pointer/2` for zero-copy Metal buffer sharing with other languages, such as with Python via Pythonx.
1820

1921
Metal does not support 64-bit floats, so neither MLX nor EMLX do either.
2022

@@ -49,7 +51,6 @@ config :nx, :default_backend, {EMLX.Backend, device: :gpu}
4951
```
5052

5153
If you want to use the JIT compiler, you can set the default compiler as shown below.
52-
In the current version, this delegates to `Nx.Defn.Evaluator` and sets EMLX as the backend of choice for the compiler.
5354

5455
```elixir
5556
Nx.Defn.default_options(compiler: EMLX)

0 commit comments

Comments
 (0)