Question about Ray for HPC

Is Ray developed for doing shared memory computing or can I use it for distributed memory computing ? (there will be multiple nodes)

If you have any experience with MPI:
Can it be used as an alternative for Message Passing Interface (MPI)? If I develop my program with Ray, would its speed be significantly slower than an equivalent MPI program? Or will it be similar? Is Ray a suitable tool for high performance computing?

Is Ray developed for doing shared memory computing or can I use it for distributed memory computing ? (there will be multiple nodes)

Both. Ray’s object store is distributed memory, but we implement the shared memory optimization whenever possible. If you call ray.get on a large tensor, it will get transferred once per node, then multiple workers on the same node will access the same object in shared memory. See https://docs.ray.io/en/master/serialization.html#numpy-arrays for more details.

Can it be used as an alternative for Message Passing Interface (MPI)?

Ray is meant to provide a simpler API than MPI, but given a well designed program, you should be able to achieve similar performance for many workloads.

Thank you for the reply.