name: Build and Test on: push: pull_request: workflow_dispatch: inputs: release_id: description: 'Release id to upload artifacts to' default: '' jobs: build: name: Build and Test (Release Asserts) runs-on: ubuntu-20.04 steps: - name: Set up Python uses: actions/setup-python@v2 with: python-version: 3.9 - name: Get torch-mlir uses: actions/checkout@v2 with: submodules: 'true' - name: Install MLIR Python depends run: | python -m pip install -r $GITHUB_WORKSPACE/external/llvm-project/mlir/python/requirements.txt - name: Install PyTorch nightly depends run: | python -m pip install --pre torch torchvision -f https://download.pytorch.org/whl/nightly/cpu/torch_nightly.html - name: Install Ninja uses: llvm/actions/install-ninja@55d844821959226fab4911f96f37071c1d4c3268 - name: Get Submodule Hash id: get-submodule-hash run: echo "::set-output name=hash::$(md5sum $(git submodule status))" shell: bash - name: Ccache for C++ compilation uses: hendrikmuhs/ccache-action@4687d037e4d7cf725512d9b819137a3af34d39b3 with: key: ${{ runner.os }}-clangreleaseasserts-${{ steps.get-submodule-hash.outputs.hash }} - name: Build and Test torch-mlir (Assert) run: | cd $GITHUB_WORKSPACE mkdir build cd build cmake $GITHUB_WORKSPACE/external/llvm-project/llvm -GNinja \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_LINKER=lld \ -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \ -DPython3_EXECUTABLE=$(which python) \ -DLLVM_ENABLE_ASSERTIONS=ON \ -DLLVM_ENABLE_PROJECTS=mlir \ -DLLVM_EXTERNAL_PROJECTS=torch-mlir \ -DLLVM_EXTERNAL_TORCH_MLIR_SOURCE_DIR="$GITHUB_WORKSPACE" \ -DMLIR_ENABLE_BINDINGS_PYTHON=ON \ -DLLVM_TARGETS_TO_BUILD=host ninja check-torch-mlir-all - name: RefBackend integration tests run: | cd $GITHUB_WORKSPACE export PYTHONPATH="$GITHUB_WORKSPACE/build/tools/torch-mlir/python_packages/torch_mlir" python -m e2e_testing.torchscript.main --config=refbackend -v python -m e2e_testing.torchscript.main --config=tosa -v # TODO: Only build packages in full Release mode. # On the other hand, having assertions on isn't too bad of an idea at this # early stage. - name: Build Python wheels and smoke test. run: | cd $GITHUB_WORKSPACE python -m pip install wheel TORCH_MLIR_CMAKE_BUILD_DIR="$GITHUB_WORKSPACE/build" \ TORCH_MLIR_CMAKE_BUILD_DIR_ALREADY_BUILT=1 \ ./build_tools/build_python_wheels.sh # If we were given a release_id, then upload the package we just built # to the github releases page. - name: Upload Release Assets (if requested) if: github.event.inputs.release_id != '' id: upload-release-assets uses: dwenegar/upload-release-assets@v1 env: GITHUB_TOKEN: ${{ secrets.WORKFLOW_INVOCATION_TOKEN }} with: release_id: ${{ github.event.inputs.release_id }} assets_path: ./wheelhouse/*.whl # Publishing is necessary to make the release visible to `pip` # on the github releases page. - name: Publish Release (if requested) if: github.event.inputs.release_id != '' id: publish_release uses: eregon/publish-release@v1 env: GITHUB_TOKEN: ${{ secrets.WORKFLOW_INVOCATION_TOKEN }} with: release_id: ${{ github.event.inputs.release_id }}