Hi,
I'm coming from Python/JAX, and quite new to Elixir. The overall user experience of Elixir/Nx has been great. What I care most is that Elixir offers distributed computations of out the box. But Nx's document doesn't touch too much on how things interact when using multiple processes with Nx.
Here are some problems:
- Is it zero-copy to send Nx tensors to other processes? I know BinaryBackend enables zero-copy, but could other backends do the same thing?
- Is there a way to easily control some commonly used environment variables for each process, like CUDA_VISIBLE_DEVICES, so that I can assign one process for each GPU.
- Does Nx/EXLA preallocates memory like JAX does? In JAX, you need to set environment variables like XLA_PYTHON_CLIENT_PREALLOCATE to allow multiple JAX processes to work together. Since EXLA is using XLA, I think Nx/EXLA might have similar behavior to JAX/Tensorflow, but I'm not so sure.
Thanks