Welcome to the ACT Tutorial at ICFP/SPLASH 2025! This guide will help you set up your environment for the hands-on exercises.
Prerequisites: A laptop with ~10GB free disk space and a working internet connection.
Time Required: 1-2 minutes (depending on internet speed)
If you already have Docker installed, follow these steps:
# 1. Clone the repository with submodules
git clone --recursive https://github.com/act-compiler/tutorials-splash25.git
cd tutorials-splash25
# 2. Pull the Docker image
docker pull devanshdvj/act-tutorials:splash25
# 3. Launch the environment
./docker.sh
# 4. Inside the container, verify the setup
ls /opt/cargo /opt/ortools /opt/nlohmann_json # Should exist
python --version # Should show Python 3.10.18If you don't have Docker installed, follow the Detailed Setup below.
Clone the tutorial repository with all submodules:
git clone --recursive https://github.com/act-compiler/tutorials-splash25.git
cd tutorials-splash25Already cloned without --recursive? Run this inside the cloned repository to fetch submodules:
cd tutorials-splash25
git submodule update --init --recursiveCheck if Docker is installed:
docker --versionIf Docker is already installed, skip to Step 3.
# Remove old Docker versions
sudo apt-get remove docker docker-engine docker.io containerd runc 2>/dev/null || true
# Update package index
sudo apt-get update
# Install dependencies
sudo apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release
# Add Docker's official GPG key
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Set up the Docker repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Start Docker service
sudo systemctl enable docker
sudo systemctl start docker
# Add your user to the docker group (to run without sudo)
sudo usermod -aG docker $USER
# Apply group changes (logout/login or use newgrp)
newgrp docker
# Verify installation
docker run hello-worldNote: If you see a permission error, you may need to log out and log back in for the group changes to take effect.
- Download Docker Desktop from: https://docs.docker.com/desktop/install/mac-install/
- Install the
.dmgfile - Launch Docker Desktop
- Verify installation:
docker --version
- Enable WSL 2 (Windows Subsystem for Linux)
- Download Docker Desktop from: https://docs.docker.com/desktop/install/windows-install/
- Install the
.exefile - Launch Docker Desktop
- Verify installation in PowerShell or WSL terminal:
docker --version
Pull the pre-built Docker image containing all tutorial dependencies:
docker pull devanshdvj/act-tutorials:splash25Expected Output:
splash25: Pulling from devanshdvj/act-tutorials
...
Status: Downloaded newer image for devanshdvj/act-tutorials:splash25
docker.io/devanshdvj/act-tutorials:splash25
Image Details:
- Base: Ubuntu 22.04 (Jammy)
- Size: ~5 GB
- Includes:
- Python 3.10 (via Miniconda)
- ML libraries (JAX, NumPy, etc.)
- ANTLR4 (for parsing)
- Rust toolchain (stable)
- C++ build tools (CMake, Ninja)
- nlohmann/json (JSON library)
- Google OR-Tools (constraint solver)
- Dockerfile: Dockerfile
We provide a convenience script to launch the Docker container:
./docker.shWhat this does:
- Mounts
code/directory at/workspace/in the container - Sets working directory to
/workspace/ - Preserves file ownership (uses your UID/GID)
- Removes container on exit (no leftover containers)
Once inside the Docker container, run these verification checks:
lsExpected Output:
README.md docker generators taidlv2 xla-debug
# Check Rust
/opt/cargo/bin/cargo --version
/opt/cargo/bin/rustc --version
# Check OR-Tools
find /opt/ortools/lib/ -name "libortools.so"
# Check nlohmann/json
find /opt/nlohmann_json/include/nlohmann/ -name "json.hpp"Expected Output:
cargo 1.90.0 (840b83a10 2025-07-30)
rustc 1.90.0 (1159e78c4 2025-09-14)
/opt/ortools/lib/libortools.so
/opt/nlohmann_json/include/nlohmann/json.hpp
# Check Python
python --version
python -c "import jax; print(f'JAX version: {jax.__version__}')"
python -c "import numpy as np; print(f'NumPy version: {np.__version__}')"Expected Output:
Python 3.10.18
JAX version: 0.4.33
NumPy version: 1.26.4
cd /workspace/ && python -c "from taidlv2.accelerator import *; print('TAIDLv2 import successful')"Expected Output:
TAIDLv2 import successful
Solution: Make sure Docker is running:
# Linux
sudo systemctl start docker
# macOS/Windows
# Launch Docker Desktop applicationSolution: Add your user to the docker group:
sudo usermod -aG docker $USER
newgrp docker # Or log out and log back inSolution: Initialize submodules manually:
cd tutorials-splash25
git submodule update --init --recursiveSolution: Check internet connection and try again:
docker pull devanshdvj/act-tutorials:splash25If pull continues to fail, the image may also be available on a USB drive at the tutorial venue.
Solution: Manually activate the environment:
source /opt/miniconda/etc/profile.d/conda.sh
conda activate actOnce your setup is verified, you're ready for the tutorial! During the tutorial, you'll:
- Session 1: Specify a QKV accelerator ISA using TAIDL
- Session 2: Write accelerator kernels using generated APIs
- Session 3: Generate a compiler backend automatically
- Session 4: Integrate with JAX and XLA for end-to-end compilation
Tutorial Materials:
- Exercises:
exercise1/README.md,exercise2/README.md,exercise3/README.md
- Tutorial Repository: https://github.com/act-compiler/tutorials-splash25
- Docker Documentation: https://docs.docker.com/
- TAIDL Paper: "TAIDL: Tensor Accelerator ISA Definition Language with Auto-generation of Scalable Test Oracles" (MICRO 2025)
- ACT Paper: "ACT: Automatically Generating Compiler Backends from Tensor Accelerator ISA Descriptions"
If you encounter issues during setup:
- Check troubleshooting section above
- Contact organizers:
- Devansh Jain (devansh9@illinois.edu)
- Akash Pardeshi (pardesh2@illinois.edu)
We look forward to seeing you at the tutorial! 🚀