2023-12-05 08:04:11 +08:00
|
|
|
version: 2.1
|
|
|
|
|
|
|
|
parameters:
|
|
|
|
nightly_build:
|
|
|
|
type: boolean
|
|
|
|
default: false
|
|
|
|
weekly_build:
|
|
|
|
type: boolean
|
|
|
|
default: false
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
linux_build_and_test:
|
|
|
|
docker:
|
|
|
|
- image: cimg/python:3.9
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- checkout
|
|
|
|
- run:
|
|
|
|
name: Run style checks
|
|
|
|
command: |
|
|
|
|
pip install pre-commit
|
|
|
|
pre-commit run --all
|
|
|
|
if ! git diff --quiet; then echo 'Style checks failed, please install pre-commit and run pre-commit run --all and push the change'; exit 1; fi
|
|
|
|
- run:
|
|
|
|
name: Install dependencies
|
|
|
|
command: |
|
|
|
|
pip install --upgrade cmake
|
|
|
|
pip install --upgrade pybind11[global]
|
2024-01-22 04:53:12 +08:00
|
|
|
pip install pybind11-stubgen
|
2023-12-05 08:04:11 +08:00
|
|
|
pip install numpy
|
|
|
|
sudo apt-get update
|
2024-01-27 01:27:31 +08:00
|
|
|
sudo apt-get install libblas-dev liblapack-dev liblapacke-dev
|
2023-12-05 08:04:11 +08:00
|
|
|
- run:
|
2024-01-22 04:53:12 +08:00
|
|
|
name: Install Python package
|
2023-12-05 08:04:11 +08:00
|
|
|
command: |
|
|
|
|
CMAKE_ARGS="-DMLX_BUILD_METAL=OFF" CMAKE_BUILD_PARALLEL_LEVEL="" python3 setup.py build_ext --inplace
|
|
|
|
CMAKE_ARGS="-DMLX_BUILD_METAL=OFF" CMAKE_BUILD_PARALLEL_LEVEL="" python3 setup.py develop
|
|
|
|
- run:
|
2024-01-22 04:53:12 +08:00
|
|
|
name: Generate package stubs
|
|
|
|
command: |
|
|
|
|
python3 setup.py generate_stubs
|
|
|
|
- run:
|
|
|
|
name: Run Python tests
|
2023-12-05 08:04:11 +08:00
|
|
|
command: |
|
2024-01-30 03:19:38 +08:00
|
|
|
python3 -m unittest discover python/tests -v
|
2024-01-18 04:07:05 +08:00
|
|
|
# TODO: Reenable when extension api becomes stable
|
|
|
|
# - run:
|
|
|
|
# name: Build example extension
|
|
|
|
# command: |
|
|
|
|
# cd examples/extensions && python3 -m pip install .
|
2023-12-05 08:04:11 +08:00
|
|
|
- run:
|
|
|
|
name: Build CPP only
|
|
|
|
command: |
|
|
|
|
mkdir -p build && cd build && cmake .. -DMLX_BUILD_METAL=OFF && make -j
|
|
|
|
- run:
|
|
|
|
name: Run CPP tests
|
|
|
|
command: ./build/tests/tests
|
|
|
|
|
|
|
|
mac_build_and_test:
|
2024-02-07 22:04:34 +08:00
|
|
|
macos:
|
|
|
|
xcode: "15.2.0"
|
|
|
|
resource_class: macos.m1.large.gen1
|
2023-12-05 08:04:11 +08:00
|
|
|
steps:
|
|
|
|
- checkout
|
|
|
|
- run:
|
|
|
|
name: Install dependencies
|
|
|
|
command: |
|
2024-02-07 22:04:34 +08:00
|
|
|
brew install python@3.9
|
|
|
|
python3.9 -m venv env
|
|
|
|
source env/bin/activate
|
|
|
|
pip install --upgrade pip
|
2023-12-05 08:04:11 +08:00
|
|
|
pip install --upgrade cmake
|
|
|
|
pip install --upgrade pybind11[global]
|
2024-01-22 04:53:12 +08:00
|
|
|
pip install pybind11-stubgen
|
2023-12-05 08:04:11 +08:00
|
|
|
pip install numpy
|
|
|
|
pip install torch
|
2024-01-06 07:58:33 +08:00
|
|
|
pip install tensorflow
|
2023-12-05 08:04:11 +08:00
|
|
|
pip install unittest-xml-reporting
|
|
|
|
- run:
|
2024-01-22 04:53:12 +08:00
|
|
|
name: Install Python package
|
2023-12-05 08:04:11 +08:00
|
|
|
command: |
|
2024-02-07 22:04:34 +08:00
|
|
|
source env/bin/activate
|
|
|
|
CMAKE_BUILD_PARALLEL_LEVEL="" pip install -e . -v
|
2023-12-05 08:04:11 +08:00
|
|
|
- run:
|
2024-01-22 04:53:12 +08:00
|
|
|
name: Generate package stubs
|
|
|
|
command: |
|
2024-02-07 22:04:34 +08:00
|
|
|
source env/bin/activate
|
2024-01-22 04:53:12 +08:00
|
|
|
python setup.py generate_stubs
|
|
|
|
- run:
|
|
|
|
name: Run Python tests
|
2023-12-05 08:04:11 +08:00
|
|
|
command: |
|
2024-02-07 22:04:34 +08:00
|
|
|
source env/bin/activate
|
|
|
|
LOW_MEMORY=1 DEVICE=cpu python -m xmlrunner discover -v python/tests -o test-results/cpu
|
|
|
|
# TODO: Reenable when Circle CI can run gpu jobs
|
|
|
|
# DEVICE=gpu python3.9 -m xmlrunner discover -v python/tests -o test-results/gpu
|
2024-01-18 04:07:05 +08:00
|
|
|
# TODO: Reenable when extension api becomes stable
|
|
|
|
# - run:
|
|
|
|
# name: Build example extension
|
|
|
|
# command: |
|
2024-02-07 22:04:34 +08:00
|
|
|
# cd examples/extensions && python3.11 -m pip install .
|
2023-12-05 08:04:11 +08:00
|
|
|
- store_test_results:
|
|
|
|
path: test-results
|
2024-01-12 03:57:24 +08:00
|
|
|
- run:
|
|
|
|
name: Build CPP only
|
|
|
|
command: |
|
2024-02-07 22:04:34 +08:00
|
|
|
source env/bin/activate
|
2024-01-12 03:57:24 +08:00
|
|
|
mkdir -p build && cd build && cmake .. && make -j
|
|
|
|
- run:
|
|
|
|
name: Run CPP tests
|
2024-02-07 22:04:34 +08:00
|
|
|
#command: METAL_DEVICE_WRAPPER_TYPE=1 METAL_DEBUG_ERROR_MODE=0 ./build/tests/tests
|
|
|
|
command: DEVICE=cpu ./build/tests/tests
|
2023-12-05 08:04:11 +08:00
|
|
|
|
|
|
|
build_release:
|
|
|
|
parameters:
|
|
|
|
python_version:
|
|
|
|
type: string
|
|
|
|
default: "3.9"
|
2024-02-07 22:04:34 +08:00
|
|
|
xcode_version:
|
2023-12-05 08:04:11 +08:00
|
|
|
type: string
|
2024-02-07 22:04:34 +08:00
|
|
|
default: "15.2.0"
|
|
|
|
build_env:
|
2023-12-05 08:04:11 +08:00
|
|
|
type: string
|
2024-02-07 22:04:34 +08:00
|
|
|
default: ""
|
|
|
|
macos:
|
|
|
|
xcode: << parameters.xcode_version >>
|
|
|
|
resource_class: macos.m1.large.gen1
|
2023-12-05 08:04:11 +08:00
|
|
|
steps:
|
|
|
|
- checkout
|
|
|
|
- run:
|
|
|
|
name: Install dependencies
|
|
|
|
command: |
|
2024-02-07 22:04:34 +08:00
|
|
|
brew install python@<< parameters.python_version >>
|
|
|
|
python<< parameters.python_version >> -m venv env
|
|
|
|
source env/bin/activate
|
|
|
|
pip install --upgrade pip
|
2023-12-05 08:04:11 +08:00
|
|
|
pip install --upgrade cmake
|
|
|
|
pip install --upgrade pybind11[global]
|
2024-02-07 22:04:34 +08:00
|
|
|
pip install --upgrade setuptools
|
2024-01-22 04:53:12 +08:00
|
|
|
pip install pybind11-stubgen
|
2023-12-05 08:04:11 +08:00
|
|
|
pip install numpy
|
|
|
|
pip install twine
|
2024-02-07 22:04:34 +08:00
|
|
|
pip install build
|
2023-12-05 08:04:11 +08:00
|
|
|
- run:
|
2024-01-22 04:53:12 +08:00
|
|
|
name: Install Python package
|
|
|
|
command: |
|
2024-02-07 22:04:34 +08:00
|
|
|
source env/bin/activate
|
|
|
|
DEV_RELEASE=1 \
|
2024-01-22 04:53:12 +08:00
|
|
|
CMAKE_BUILD_PARALLEL_LEVEL="" \
|
2024-02-07 22:04:34 +08:00
|
|
|
pip install . -v
|
2024-01-22 04:53:12 +08:00
|
|
|
- run:
|
|
|
|
name: Generate package stubs
|
|
|
|
command: |
|
2024-02-07 22:04:34 +08:00
|
|
|
source env/bin/activate
|
2024-01-22 04:53:12 +08:00
|
|
|
python setup.py generate_stubs
|
|
|
|
- run:
|
2024-02-07 22:04:34 +08:00
|
|
|
name: Build Python package
|
2023-12-05 08:04:11 +08:00
|
|
|
command: |
|
2024-02-07 22:04:34 +08:00
|
|
|
source env/bin/activate
|
|
|
|
<< parameters.build_env >> \
|
2023-12-05 08:04:11 +08:00
|
|
|
CMAKE_BUILD_PARALLEL_LEVEL="" \
|
2024-02-07 22:04:34 +08:00
|
|
|
python -m build -w
|
|
|
|
- when:
|
|
|
|
condition: << parameters.build_env >>
|
|
|
|
steps:
|
|
|
|
- run:
|
|
|
|
name: Upload package
|
|
|
|
command: |
|
|
|
|
source env/bin/activate
|
|
|
|
twine upload dist/*
|
2023-12-05 08:04:11 +08:00
|
|
|
- store_artifacts:
|
|
|
|
path: dist/
|
|
|
|
|
|
|
|
workflows:
|
|
|
|
build_and_test:
|
|
|
|
when:
|
|
|
|
and:
|
|
|
|
- not: << pipeline.parameters.nightly_build >>
|
|
|
|
- not: << pipeline.parameters.weekly_build >>
|
|
|
|
jobs:
|
|
|
|
- mac_build_and_test
|
2024-02-07 22:04:34 +08:00
|
|
|
- linux_build_and_test
|
2023-12-05 08:04:11 +08:00
|
|
|
- build_release:
|
|
|
|
filters:
|
|
|
|
tags:
|
|
|
|
only: /^v.*/
|
|
|
|
branches:
|
|
|
|
ignore: /.*/
|
|
|
|
matrix:
|
|
|
|
parameters:
|
2023-12-07 05:32:41 +08:00
|
|
|
python_version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
|
2024-02-07 22:04:34 +08:00
|
|
|
xcode_version: ["14.3.1", "15.2.0"]
|
|
|
|
build_env: ["PYPI_RELEASE=1"]
|
2023-12-05 08:04:11 +08:00
|
|
|
nightly_build:
|
|
|
|
when: << pipeline.parameters.nightly_build >>
|
|
|
|
jobs:
|
2024-02-07 22:04:34 +08:00
|
|
|
- build_release:
|
2023-12-05 08:04:11 +08:00
|
|
|
matrix:
|
|
|
|
parameters:
|
2023-12-07 05:32:41 +08:00
|
|
|
python_version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
|
2024-02-07 22:04:34 +08:00
|
|
|
xcode_version: ["14.3.1", "15.2.0"]
|
2023-12-05 08:04:11 +08:00
|
|
|
weekly_build:
|
|
|
|
when: << pipeline.parameters.weekly_build >>
|
|
|
|
jobs:
|
2024-02-07 22:04:34 +08:00
|
|
|
- build_release:
|
2023-12-05 08:04:11 +08:00
|
|
|
matrix:
|
|
|
|
parameters:
|
2023-12-07 05:32:41 +08:00
|
|
|
python_version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
|
2024-02-07 22:04:34 +08:00
|
|
|
xcode_version: ["14.3.1", "15.2.0"]
|
|
|
|
build_env: ["DEV_RELEASE=1"]
|