From 86765cce346b83c85559840898e30422cd3c16cc Mon Sep 17 00:00:00 2001 From: Cheng Date: Sun, 16 Nov 2025 07:58:14 +0900 Subject: [PATCH] Use ccache in GitHub Actions (#2773) * Remove unnecessary steps * Use ccache * Log when using ccache * Set max-size to 1GB * Pass --no-build-isolation * Remove more unused things --- .github/actions/build-cuda/action.yml | 2 +- .github/actions/build-linux/action.yml | 4 ++-- .github/actions/setup-linux/action.yml | 23 ++++++++++------------- CMakeLists.txt | 1 + 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/.github/actions/build-cuda/action.yml b/.github/actions/build-cuda/action.yml index 059ddc193..cb61aa880 100644 --- a/.github/actions/build-cuda/action.yml +++ b/.github/actions/build-cuda/action.yml @@ -15,7 +15,7 @@ runs: env: DEBUG: 1 CMAKE_ARGS: -DMLX_BUILD_CUDA=ON -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DCMAKE_CUDA_COMPILER=${{ inputs.nvcc-location }} - run: pip install -e ".[dev]" -v + run: pip install --no-build-isolation -e ".[dev]" -v - name: Build CPP only shell: bash diff --git a/.github/actions/build-linux/action.yml b/.github/actions/build-linux/action.yml index aacef66eb..6273ab8de 100644 --- a/.github/actions/build-linux/action.yml +++ b/.github/actions/build-linux/action.yml @@ -9,8 +9,8 @@ runs: env: CMAKE_ARGS: "-DCMAKE_COMPILE_WARNING_AS_ERROR=ON" DEBUG: 1 - run: pip install -e ".[dev]" -v - + run: pip install --no-build-isolation -e ".[dev]" -v + - name: Generate package stubs shell: sh run: | diff --git a/.github/actions/setup-linux/action.yml b/.github/actions/setup-linux/action.yml index 303679cfc..0661b283d 100644 --- a/.github/actions/setup-linux/action.yml +++ b/.github/actions/setup-linux/action.yml @@ -18,42 +18,39 @@ inputs: runs: using: "composite" steps: - - name: Free disk space - shell: sh - if: inputs.runner-type == 'linux' - run: sudo rm -rf "$AGENT_TOOLSDIRECTORY" + - name: Use ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ccache-${{ inputs.runner-type }}-${{ runner.arch }}-py${{ inputs.python-version }} + max-size: 1GB - name: Install common dependencies - env: - TZ: Etc/UTC shell: bash run: | sudo apt-get update - sudo apt-get install -y libblas-dev liblapack-dev liblapacke-dev tzdata zip - sudo apt autoremove -y + sudo apt-get install -y libblas-dev liblapack-dev liblapacke-dev zip - uses: actions/setup-python@v6 with: python-version: ${{ inputs.python-version }} cache: 'pip' - - name: setup python venv + - name: Setup Python venv shell: bash run: | python -m venv .venv source .venv/bin/activate + pip install cmake nanobind==2.4.0 echo PATH=$PATH >> $GITHUB_ENV - pip install --upgrade pip cmake + # Make cmake search .venv for nanobind + echo PYTHONPATH=`python -c 'import sys; print(sys.path[-1])'` >> $GITHUB_ENV - name: Install MPI shell: bash run: sudo apt-get install -y openmpi-bin openmpi-common libopenmpi-dev - name: Network CUDA installation from packages - id: install-cuda if: inputs.runner-type == 'cuda' - env: - TZ: Etc/UTC shell: bash ## Specific to Ubuntu 22.04 & Architecture x86_64 run: | wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb diff --git a/CMakeLists.txt b/CMakeLists.txt index d8889d1e8..3487c22c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,6 +74,7 @@ endif() if(MLX_USE_CCACHE) find_program(CCACHE_PROGRAM ccache) if(CCACHE_PROGRAM) + message(STATUS "Found CCache: ${CCACHE_PROGRAM}") set(CMAKE_C_COMPILER_LAUNCHER "${CCACHE_PROGRAM}") set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PROGRAM}") set(CMAKE_CUDA_COMPILER_LAUNCHER "${CCACHE_PROGRAM}")