| # Getting Started with IREE Development Containers |
| |
| VS Code Development Container is a feature of Visual Studio Code that allows |
| developers to create a consistent and isolated development environment for their |
| projects. It leverages Docker containers to provide an environment that is |
| identical to the production environment, which means developers can develop and |
| test their code in an environment that closely mimics the production |
| environment. |
| |
| With VS Code Development Container, developers can avoid the hassle of setting |
| up a local development environment, installing dependencies, and managing |
| different versions of software packages. Instead, they can use a pre-configured |
| container that contains all the required dependencies and tools to develop their |
| project. This makes it easier to share the development environment with other |
| team members and ensures that everyone is using the same environment. |
| |
| In addition, VS Code Development Container provides a seamless development |
| experience by allowing developers to work directly within the container using |
| Visual Studio Code. They can edit code, run tests, and debug their applications |
| as if they were working on their local machine. |
| |
| Overall, VS Code Development Container is a powerful tool for developers who |
| want to streamline their development process and ensure consistency across their |
| team's development environment. |
| |
| ## A. Prerequisites |
| |
| Please follow the following steps to prepare your working environment: |
| |
| 1. **Install Docker:** Before you can use VS Code Development Containers, you |
| need to have Docker installed on your machine. You can download and install |
| Docker for your operating system from the official Docker website. |
| |
| 2. **[Optional] Install the NVIDIA-Docker runtime:** If you have an NVIDIA GPU |
| and want to use it for accelerated computing in your container, you can |
| install the NVIDIA-Docker runtime. Follow the instructions on the |
| [NVIDIA-Docker GitHub page](https://github.com/NVIDIA/nvidia-docker) or on |
| [NVIDIA Developer Documentation](https://developer.nvidia.com/nvidia-container-runtime) |
| to install the runtime for your operating system. |
| |
| 3. **Install VS Code:** Naturally you will need VS Code to be installed on your |
| machine: https://code.visualstudio.com/download |
| |
| 4. **Install Dev Container VS Code Extension:** Once VS Code installed, you will |
| need *Microsoft's Dev Containers extension:* |
| [ms-vscode-remote.remote-containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers). |
| |
| 5. **[Optional] Install Remote Development VS Code Extension Pack:** If you wish |
| to setup the `Dev Container` on a remote machine over SSH, we recommend |
| installing *Microsoft's Remote Development extension pack:* : |
| [ms-vscode-remote.vscode-remote-extensionpack](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack). |
| |
| |
| ## B. Configuring your Development Container. |
| |
| IREE Project provides multiple possible development containers which corresponds |
| to different usecases (e.g CPU, NVIDIA GPUs, etc.). |
| |
| More containers will be integrated in the future, contributions are welcome. |
| |
| In order to setup the environment, please execute this script: |
| |
| ```sh |
| python3 .devcontainer/configure.py |
| |
| # This question is optional and will only appear if your environment was |
| # previously configured. It aims to avoid overriding an existing configuration |
| # inadvertently. |
| >>> A `docker-compose.yml` already exists. Are you certain you want to overwrite it [y/N]? |
| |
| # Google provides prebuilt container images hosted on `gcr.io`. We invite you |
| # and recommend using them. However, for expert users you can use locally built |
| # containers by answering `N`. |
| >>> Do you wish to use the official prebuild development containers [Y/n]? |
| |
| # We offer the option to mount a host directory to use as persistant local |
| # CCache cache. The directory needs to exist in order to be mounted. |
| >>> [OPTIONAL] Enter the the directory path to mount as CCache Cache. |
| It will be mounted in the container under: `/home/iree/.cache/ccache`. [Default: None]: |
| |
| # We offer the option to mount a host directory to use as persistant local |
| # build directory. The directory needs to exist in order to be mounted. |
| >>> [OPTIONAL] Enter the the directory path to mount as Build Directory. |
| It will mounted in the container under: `/home/iree/build` [Default: None]: |
| |
| # If your environment has any NVIDIA GPU with properly installed drivers and |
| # NVIDIA Docker Runtime, you will be asked if you wish to use an NVIDIA GPU |
| # ready container. |
| >>> [OPTIONAL] Do you wish to use NVIDIA GPU [y/N]? |
| |
| # Finally a success message will be printed. |
| >>> ================================================================================ |
| >>> |
| >>> Success! Wrote Docker Compose file to `/path/to/iree/.devcontainer/docker-compose.yml`. |
| ``` |
| |
| ## C. (Building and) Launching the Development |
| |
| We can now build or download, if necessary, and launch the development |
| container. In order to do so, we need to open the VS Code "Command Palette" with |
| the shortcut: `Ctrl + Shift + P`. |
| |
| We need to select and click `Dev Containers: Rebuild and Reopen in Container`. |
| |
|  |
| |
| A message will appear signifying that the environment is being setup (this step |
| might take some time if you need to download or build the container, you can |
| click on `show log` to see the details and watch the progress): |
| |
|  |
| |
| The window will refresh once the environment is ready, and the container will be |
| started (You can click on `show log` to watch the progress, this might take a |
| few minutes). |
| |
|  |
| |
| Once the container is started, you will be greeted by the container terminal |
| (notice the username `iree`): |
| |
|  |
| |
| **Once done, you are ready to start developing, building and contributing to |
| IREE 🎉🎉🎉.** |