Replace c10::optional with std::optional #5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# yamllint disable rule:line-length | |
name: Build and Test | |
on: | |
# pull_request: | |
# branches: [main] | |
# push: | |
# branches: [main] | |
# workflow_dispatch: | |
# 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: | |
# A PR number if a pull request and otherwise the commit hash. This cancels | |
# queued and in-progress runs for the same PR (presubmit) or commit | |
# (postsubmit). The workflow name is prepended to avoid conflicts between | |
# different workflows. | |
group: ${{ github.workflow }}-${{ github.event.number || github.sha }} | |
cancel-in-progress: true | |
# Provisioned Jobs: | |
# 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 | |
# macos - arm64 - llvm in-tree - pytorch binary - build only # cross compile, can't test arm64 | |
jobs: | |
build-test: | |
strategy: | |
fail-fast: true | |
matrix: | |
os-arch: [macos-arm64, windows-x86_64] | |
llvm-build: [in-tree, out-of-tree] | |
torch-binary: [ON] | |
torch-version: [nightly, stable] | |
exclude: | |
# Exclude llvm out-of-tree and pytorch stable (to save resources) | |
- llvm-build: out-of-tree | |
torch-version: stable | |
# Exclude macos-arm64 and llvm out-of-tree altogether | |
- os-arch: macos-arm64 | |
llvm-build: out-of-tree | |
- os-arch: macos-arm64 | |
torch-version: stable | |
- os-arch: windows-x86_64 | |
llvm-build: out-of-tree | |
- os-arch: windows-x86_64 | |
torch-version: stable | |
include: | |
# Specify OS versions | |
- os-arch: ubuntu-x86_64 | |
os: a100 | |
- os-arch: macos-arm64 | |
os: macos-latest | |
- os-arch: windows-x86_64 | |
os: windows-latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Prepare workspace | |
if: ${{ matrix.os-arch == 'ubuntu-x86_64' }} | |
run: | | |
# Clear the workspace directory so that we don't run into errors about | |
# existing lock files. | |
sudo rm -rf $GITHUB_WORKSPACE/* | |
- name: Checkout torch-mlir | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'true' | |
fetch-depth: 0 | |
- name: Fetch PyTorch commit hash | |
if: ${{ matrix.os-arch != 'windows-x86_64' }} | |
run: | | |
PT_HASH="$(cat ${GITHUB_WORKSPACE}/pytorch-hash.txt)" | |
echo "PT_HASH=${PT_HASH}" >> ${GITHUB_ENV} | |
- name: Setup ccache | |
uses: ./.github/actions/setup-build | |
with: | |
cache-suffix: 'build-${{ matrix.llvm-build }}-${{ matrix.torch-version }}' | |
torch-version: ${{ matrix.torch-version }} | |
- name: Set up Visual Studio shell | |
if: ${{ matrix.os-arch == 'windows-x86_64' }} | |
uses: egor-tensin/vs-shell@v2 | |
with: | |
arch: x64 | |
- name: Try to Restore PyTorch Build Cache | |
if: ${{ matrix.torch-binary == 'OFF' }} | |
id: cache-pytorch | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ github.workspace }}/build_tools/python_deploy/wheelhouse | |
key: ${{ runner.os }}-pytorch-${{ env.PT_HASH }} | |
- 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' }} | |
run: | | |
cd $GITHUB_WORKSPACE | |
TORCH_MLIR_SRC_PYTORCH_BRANCH="$(cat pytorch-hash.txt)" \ | |
TM_PACKAGES="${{ matrix.llvm-build }}" \ | |
TM_USE_PYTORCH_BINARY="${{ matrix.torch-binary }}" \ | |
TM_PYTORCH_INSTALL_WITHOUT_REBUILD="${{ steps.cache-pytorch.outputs.cache-hit }}" \ | |
TM_TORCH_VERSION="${{ matrix.torch-version }}" \ | |
./build_tools/python_deploy/build_linux_packages.sh | |
- 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' }} | |
run: | | |
# TODO: Reenable LTC after build on macOS-arm64 is fixed (https://github.com/llvm/torch-mlir/issues/1253) | |
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" \ | |
-DLLVM_EXTERNAL_TORCH_MLIR_SOURCE_DIR="$GITHUB_WORKSPACE" \ | |
-DLLVM_TARGETS_TO_BUILD=AArch64 \ | |
-DLLVM_USE_HOST_TOOLS=ON \ | |
-DLLVM_ENABLE_ZSTD=OFF \ | |
-DMLIR_ENABLE_BINDINGS_PYTHON=ON \ | |
-DTORCH_MLIR_ENABLE_STABLEHLO=OFF \ | |
-DTORCH_MLIR_ENABLE_LTC=OFF \ | |
-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) | |
if: ${{ matrix.os-arch == 'macos-arm64' }} | |
run: | | |
cmake --build build_arm64 | |
- name: Build (Windows) | |
if: ${{ matrix.os-arch == 'windows-x86_64' }} | |
shell: bash | |
run: ./build_tools/python_deploy/build_windows_ci.sh | |
- name: Save PyTorch Build Cache | |
if: ${{ github.ref_name == 'main' && matrix.torch-binary == 'OFF' }} | |
uses: actions/cache/save@v3 | |
with: | |
path: ${{ github.workspace }}/build_tools/python_deploy/wheelhouse | |
key: ${{ runner.os }}-pytorch-${{ env.PT_HASH }} | |
- name: Print ccache statistics | |
shell: bash | |
run: ccache --show-stats |