EASIER is a domain specific language embedded in PyTorch to automatically scale physical simulations up and out. It just-in-time (JIT) distributes tensor dataflows that describe physical simulations to any number of workers and compiles them for extendable hardware backends without requiring users to make any code changes. This makes the development of large-scale high-performance physical simulations on explosively growing AI supercomputers is as easy as that of large language models.
To ensure the compatibility of all dependencies, the Python verion should be fixed to 3.8 for now.
# for conda
conda create -n ENV_NAME python=3.8
conda activate ENV_NAME
# for conda, run this only when you see compile/link errors with following `pip` commands
conda install gxx_linux-64
Clone the repo and install EASIER as well as all dependencies:
git clone https://github.com/microsoft/EASIER.git
cd EASIER
# for Ubuntu
sudo apt-get install libopenmpi-dev
pip install Cython==3.0.11 mpi4py==3.1.5 # must be installed separately
pip install -r dev-requirements.txt
pip install -e . # equals `python setup.py develop`
Simulating water waves in a square tub by solving shallow water equations with EASIER:
# create folder to store simulation results
mkdir res
# launch the simulation in a `torchrun` style
easierrun --nnodes=1 --nproc_per_node=4 tutorial/shallow_water_equation.py --backend=cpu --output=res
# Visualize simulation results
python tutorial/swe_plot.py --data_dir res --filename swe.gif
EASIER launcher easierrun
provides similar user experience to that of torchrun
.
Just add --master_addr
argument to the launcher if there are multiple nodes.
Detailed tutorial and more examples are coming soon.
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.