Compare commits

...

3 Commits

Author SHA1 Message Date
Cheng
86765cce34 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
2025-11-16 07:58:14 +09:00
Cheng
1bedcbd556 Fix warnings with cmake 4.1 (#2774) 2025-11-16 07:12:47 +09:00
Cheng
9ac7dbe877 Fix MPI distributed tests with CUDA backend (#2775) 2025-11-16 07:12:18 +09:00
8 changed files with 28 additions and 22 deletions

View File

@@ -15,7 +15,7 @@ runs:
env: env:
DEBUG: 1 DEBUG: 1
CMAKE_ARGS: -DMLX_BUILD_CUDA=ON -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DCMAKE_CUDA_COMPILER=${{ inputs.nvcc-location }} 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 - name: Build CPP only
shell: bash shell: bash

View File

@@ -9,7 +9,7 @@ runs:
env: env:
CMAKE_ARGS: "-DCMAKE_COMPILE_WARNING_AS_ERROR=ON" CMAKE_ARGS: "-DCMAKE_COMPILE_WARNING_AS_ERROR=ON"
DEBUG: 1 DEBUG: 1
run: pip install -e ".[dev]" -v run: pip install --no-build-isolation -e ".[dev]" -v
- name: Generate package stubs - name: Generate package stubs
shell: sh shell: sh

View File

@@ -18,42 +18,39 @@ inputs:
runs: runs:
using: "composite" using: "composite"
steps: steps:
- name: Free disk space - name: Use ccache
shell: sh uses: hendrikmuhs/ccache-action@v1.2
if: inputs.runner-type == 'linux' with:
run: sudo rm -rf "$AGENT_TOOLSDIRECTORY" key: ccache-${{ inputs.runner-type }}-${{ runner.arch }}-py${{ inputs.python-version }}
max-size: 1GB
- name: Install common dependencies - name: Install common dependencies
env:
TZ: Etc/UTC
shell: bash shell: bash
run: | run: |
sudo apt-get update sudo apt-get update
sudo apt-get install -y libblas-dev liblapack-dev liblapacke-dev tzdata zip sudo apt-get install -y libblas-dev liblapack-dev liblapacke-dev zip
sudo apt autoremove -y
- uses: actions/setup-python@v6 - uses: actions/setup-python@v6
with: with:
python-version: ${{ inputs.python-version }} python-version: ${{ inputs.python-version }}
cache: 'pip' cache: 'pip'
- name: setup python venv - name: Setup Python venv
shell: bash shell: bash
run: | run: |
python -m venv .venv python -m venv .venv
source .venv/bin/activate source .venv/bin/activate
pip install cmake nanobind==2.4.0
echo PATH=$PATH >> $GITHUB_ENV 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 - name: Install MPI
shell: bash shell: bash
run: sudo apt-get install -y openmpi-bin openmpi-common libopenmpi-dev run: sudo apt-get install -y openmpi-bin openmpi-common libopenmpi-dev
- name: Network CUDA installation from packages - name: Network CUDA installation from packages
id: install-cuda
if: inputs.runner-type == 'cuda' if: inputs.runner-type == 'cuda'
env:
TZ: Etc/UTC
shell: bash ## Specific to Ubuntu 22.04 & Architecture x86_64 shell: bash ## Specific to Ubuntu 22.04 & Architecture x86_64
run: | run: |
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb

View File

@@ -9,13 +9,18 @@ inputs:
runs: runs:
using: "composite" using: "composite"
steps: steps:
- name: Run MPI tests
shell: bash
run: |
echo "::group::MPI tests"
mpirun --bind-to none --allow-run-as-root -host localhost:8 -np 8 python python/tests/mpi_test_distributed.py
echo "::endgroup::"
- name: Run distributed tests - name: Run distributed tests
# FIXME: This test fails with CUDA build.
if: ${{ inputs.cpu-only == 'true' }} if: ${{ inputs.cpu-only == 'true' }}
shell: bash shell: bash
run: | run: |
echo "::group::Distributed tests" echo "::group::Distributed tests"
mpirun --bind-to none --allow-run-as-root -host localhost:8 -np 8 python python/tests/mpi_test_distributed.py
mlx.launch --verbose -n 8 python/tests/ring_test_distributed.py -v 2> >(tee -a stderr.log >&2) mlx.launch --verbose -n 8 python/tests/ring_test_distributed.py -v 2> >(tee -a stderr.log >&2)
if grep -Fq '[WARN]' stderr.log ; then if grep -Fq '[WARN]' stderr.log ; then
grep -F '[WARN]' stderr.log grep -F '[WARN]' stderr.log
@@ -34,7 +39,7 @@ runs:
echo "::endgroup::" echo "::endgroup::"
- name: Run Python tests - GPU - name: Run Python tests - GPU
if: ${{ !inputs.cpu-only }} if: ${{ inputs.cpu-only == 'false' }}
shell: bash shell: bash
env: env:
DEVICE: gpu DEVICE: gpu
@@ -53,7 +58,7 @@ runs:
echo "::endgroup::" echo "::endgroup::"
- name: Run CPP tests - GPU - name: Run CPP tests - GPU
if: ${{ !inputs.cpu-only }} if: ${{ inputs.cpu-only == 'false' }}
shell: bash shell: bash
env: env:
DEVICE: gpu DEVICE: gpu

View File

@@ -74,6 +74,7 @@ endif()
if(MLX_USE_CCACHE) if(MLX_USE_CCACHE)
find_program(CCACHE_PROGRAM ccache) find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM) if(CCACHE_PROGRAM)
message(STATUS "Found CCache: ${CCACHE_PROGRAM}")
set(CMAKE_C_COMPILER_LAUNCHER "${CCACHE_PROGRAM}") set(CMAKE_C_COMPILER_LAUNCHER "${CCACHE_PROGRAM}")
set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PROGRAM}") set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PROGRAM}")
set(CMAKE_CUDA_COMPILER_LAUNCHER "${CCACHE_PROGRAM}") set(CMAKE_CUDA_COMPILER_LAUNCHER "${CCACHE_PROGRAM}")

3
cmake/Findnvpl.cmake Normal file
View File

@@ -0,0 +1,3 @@
# This file does nothing but to suppress the cmake warning: "By not providing
# Findnvpl.cmake in CMAKE_MODULE_PATH...", which is caused by the
# find_package(nvpl) from cmake's builtin FindLAPACK.cmake module.

View File

@@ -60,7 +60,7 @@ const char* dtype_to_cuda_type(const Dtype& dtype) {
case float64: case float64:
return "double"; return "double";
case complex64: case complex64:
return "complex64_t"; return "mlx::core::cu::complex64_t";
default: default:
return "unknown"; return "unknown";
} }

View File

@@ -2,6 +2,6 @@
requires = [ requires = [
"setuptools>=80", "setuptools>=80",
"nanobind==2.4.0", "nanobind==2.4.0",
"cmake>=3.25,<4.1", "cmake>=3.25",
] ]
build-backend = "setuptools.build_meta" build-backend = "setuptools.build_meta"