2020-08-05 09:57:59 +08:00
|
|
|
name: Build and Test
|
|
|
|
|
2021-10-22 12:23:21 +08:00
|
|
|
on:
|
2021-10-06 07:26:26 +08:00
|
|
|
pull_request:
|
2022-08-12 07:35:15 +08:00
|
|
|
branches: [ main ]
|
|
|
|
push:
|
|
|
|
branches: [ main ]
|
2021-10-06 07:26:26 +08:00
|
|
|
workflow_dispatch:
|
2020-08-05 09:57:59 +08:00
|
|
|
|
2022-08-13 08:38:48 +08:00
|
|
|
# Ensure that only a single job or workflow using the same
|
|
|
|
# concurrency group will run at a time. This would cancel
|
|
|
|
# any in-progress jobs in the same github workflow and github
|
|
|
|
# ref (e.g. refs/heads/main or refs/pull/<pr_number>/merge).
|
|
|
|
concurrency:
|
|
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
|
|
cancel-in-progress: true
|
|
|
|
|
|
|
|
|
2022-08-12 07:35:15 +08:00
|
|
|
# Provisioned Jobs:
|
2022-09-03 09:35:40 +08:00
|
|
|
# ubuntu/docker - x86_64 - llvm in-tree - pytorch binary - build+test # most used dev flow and fastest signal
|
|
|
|
# ubuntu/docker - x86_64 - llvm out-of-tree - pytorch source - build+test # most elaborate build
|
2022-08-12 21:33:57 +08:00
|
|
|
# macos - arm64 - llvm in-tree - pytorch binary - build only # cross compile, can't test arm64
|
2020-08-05 09:57:59 +08:00
|
|
|
jobs:
|
2022-08-13 02:30:09 +08:00
|
|
|
build-test:
|
2022-07-30 01:52:46 +08:00
|
|
|
strategy:
|
|
|
|
fail-fast: true
|
|
|
|
matrix:
|
2022-08-13 02:30:09 +08:00
|
|
|
os-arch: [ubuntu-x86_64, macos-arm64]
|
2022-08-12 07:35:15 +08:00
|
|
|
llvm-build: [in-tree, out-of-tree]
|
2022-07-30 01:52:46 +08:00
|
|
|
torch-binary: [ON, OFF]
|
|
|
|
exclude:
|
2022-08-12 07:35:15 +08:00
|
|
|
# Exclude llvm in-tree and pytorch source
|
|
|
|
- llvm-build: in-tree
|
2022-07-30 01:52:46 +08:00
|
|
|
torch-binary: OFF
|
2022-08-12 07:35:15 +08:00
|
|
|
# Exclude llvm out-of-tree and pytorch binary
|
|
|
|
- llvm-build: out-of-tree
|
|
|
|
torch-binary: ON
|
2022-08-13 02:30:09 +08:00
|
|
|
# Exclude macos-arm64 and llvm out-of-tree altogether
|
|
|
|
- os-arch: macos-arm64
|
|
|
|
llvm-build: out-of-tree
|
|
|
|
include:
|
|
|
|
# Specify OS versions
|
|
|
|
- os-arch: ubuntu-x86_64
|
|
|
|
os: ubuntu-22.04
|
|
|
|
- os-arch: macos-arm64
|
|
|
|
os: macos-12
|
|
|
|
runs-on: ${{ matrix.os }}
|
2022-07-30 01:52:46 +08:00
|
|
|
|
2020-08-05 09:57:59 +08:00
|
|
|
steps:
|
2022-08-10 03:13:16 +08:00
|
|
|
- name: Checkout torch-mlir
|
2020-08-05 09:57:59 +08:00
|
|
|
uses: actions/checkout@v2
|
|
|
|
with:
|
|
|
|
submodules: 'true'
|
2022-07-30 01:52:46 +08:00
|
|
|
|
2022-10-18 13:42:42 +08:00
|
|
|
- name: Fetch PyTorch commit hash
|
|
|
|
run: |
|
|
|
|
PT_HASH="$(cat ${GITHUB_WORKSPACE}/pytorch-version.txt)"
|
|
|
|
echo "PT_HASH=${PT_HASH}" >> ${GITHUB_ENV}
|
|
|
|
|
2022-08-12 07:35:15 +08:00
|
|
|
- name: Setup ccache
|
|
|
|
uses: ./.github/actions/setup-build
|
|
|
|
with:
|
2022-08-13 02:30:09 +08:00
|
|
|
cache-suffix: ${{ matrix.os-arch }}-${{ matrix.llvm-build }}-${{ matrix.torch-binary }}
|
2022-08-10 23:48:39 +08:00
|
|
|
|
2022-10-18 13:42:42 +08:00
|
|
|
- name: Cache PyTorch Build
|
|
|
|
id: cache-pytorch
|
|
|
|
uses: actions/cache@v3
|
|
|
|
with:
|
|
|
|
path: ${{ github.workspace }}/build_tools/python_deploy/wheelhouse
|
|
|
|
key: ${{ matrix.os-arch }}-pytorch-${{ env.PT_HASH }}
|
|
|
|
|
2022-09-03 09:35:40 +08:00
|
|
|
- name: Build and Test os-arch='ubuntu-x86_64' llvm-build='${{ matrix.llvm-build }}' torch-binary='${{ matrix.torch-binary }}'
|
|
|
|
if: ${{ matrix.os-arch == 'ubuntu-x86_64' }}
|
2022-04-04 23:20:56 +08:00
|
|
|
run: |
|
2022-09-03 09:35:40 +08:00
|
|
|
cd $GITHUB_WORKSPACE
|
2022-10-18 13:42:42 +08:00
|
|
|
TORCH_MLIR_SRC_PYTORCH_BRANCH="$(cat pytorch-version.txt)" \
|
|
|
|
TM_PACKAGES="${{ matrix.llvm-build }}" \
|
|
|
|
TM_USE_PYTORCH_BINARY="${{ matrix.torch-binary }}" \
|
|
|
|
TM_PYTORCH_INSTALL_WITHOUT_REBUILD="${{ steps.cache-pytorch.outputs.cache-hit }}" \
|
|
|
|
./build_tools/python_deploy/build_linux_packages.sh
|
2022-08-13 02:30:09 +08:00
|
|
|
- name: Configure os-arch='macos-arm64' llvm-build='in-tree' torch-binary='${{ matrix.torch-binary }}'
|
|
|
|
# cross compile, can't test arm64
|
|
|
|
if: ${{ matrix.os-arch == 'macos-arm64' && matrix.llvm-build == 'in-tree' }}
|
2022-08-12 07:35:15 +08:00
|
|
|
run: |
|
2022-08-20 03:25:00 +08:00
|
|
|
# TODO: Reenable LTC after build on macOS-arm64 is fixed (https://github.com/llvm/torch-mlir/issues/1253)
|
2022-08-12 07:35:15 +08:00
|
|
|
cmake -GNinja -Bbuild_arm64 \
|
|
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
|
|
-DCMAKE_C_COMPILER=clang \
|
|
|
|
-DCMAKE_CXX_COMPILER=clang++ \
|
|
|
|
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
|
|
|
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
|
|
|
-DCMAKE_LINKER=lld \
|
|
|
|
-DCMAKE_OSX_ARCHITECTURES=arm64 \
|
|
|
|
-DLLVM_ENABLE_ASSERTIONS=ON \
|
|
|
|
-DLLVM_ENABLE_PROJECTS=mlir \
|
|
|
|
-DLLVM_EXTERNAL_PROJECTS="torch-mlir;torch-mlir-dialects" \
|
|
|
|
-DLLVM_EXTERNAL_TORCH_MLIR_SOURCE_DIR="$GITHUB_WORKSPACE" \
|
2022-08-13 06:38:25 +08:00
|
|
|
-DLLVM_EXTERNAL_TORCH_MLIR_DIALECTS_SOURCE_DIR="${GITHUB_WORKSPACE}/externals/llvm-external-projects/torch-mlir-dialects" \
|
2022-08-12 07:35:15 +08:00
|
|
|
-DLLVM_TARGETS_TO_BUILD=AArch64 \
|
|
|
|
-DLLVM_USE_HOST_TOOLS=ON \
|
|
|
|
-DLLVM_ENABLE_ZSTD=OFF \
|
|
|
|
-DMLIR_ENABLE_BINDINGS_PYTHON=ON \
|
|
|
|
-DTORCH_MLIR_ENABLE_MHLO=OFF \
|
2022-08-20 03:25:00 +08:00
|
|
|
-DTORCH_MLIR_ENABLE_LTC=OFF \
|
2022-08-12 07:35:15 +08:00
|
|
|
-DTORCH_MLIR_USE_INSTALLED_PYTORCH="${{ matrix.torch-binary }}" \
|
|
|
|
-DMACOSX_DEPLOYMENT_TARGET=12.0 \
|
|
|
|
-DPython3_EXECUTABLE="$(which python)" \
|
|
|
|
$GITHUB_WORKSPACE/externals/llvm-project/llvm
|
|
|
|
- name: Build torch-mlir (cross-compile)
|
2022-08-13 02:30:09 +08:00
|
|
|
if: ${{ matrix.os-arch == 'macos-arm64' }}
|
2022-08-12 07:35:15 +08:00
|
|
|
run: |
|
|
|
|
cmake --build build_arm64
|