From 67c7720eaff832bba425cc37ee59e4f8529e12bd Mon Sep 17 00:00:00 2001 From: Usman Aziz Date: Thu, 14 Nov 2024 11:15:53 -0500 Subject: [PATCH] Separate workflows for build and running tests. (#19) Separate workflows for build and running tests --- .github/on-pr.yml | 18 ---- .github/workflows/on-pr.yml | 8 +- .github/workflows/on-push.yml | 8 +- .../{build-and-test.yml => run-build.yml} | 39 ++++++--- .github/workflows/run-tests.yml | 85 +++++++++++++++++++ 5 files changed, 126 insertions(+), 32 deletions(-) delete mode 100644 .github/on-pr.yml rename .github/workflows/{build-and-test.yml => run-build.yml} (70%) create mode 100644 .github/workflows/run-tests.yml diff --git a/.github/on-pr.yml b/.github/on-pr.yml deleted file mode 100644 index ed5ae1f8..00000000 --- a/.github/on-pr.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: On PR - -on: - workflow_dispatch: - pull_request: - branches: [ "main" ] - -jobs: - pre-commit: - uses: ./.github/workflows/pre-commit.yml - secrets: inherit - spdx: - uses: ./.github/workflows/spdx.yml - secrets: inherit - build-and-test: - needs: [pre-commit, spdx] - uses: ./.github/workflows/build-and-test.yml - secrets: inherit diff --git a/.github/workflows/on-pr.yml b/.github/workflows/on-pr.yml index ed5ae1f8..6109ab95 100644 --- a/.github/workflows/on-pr.yml +++ b/.github/workflows/on-pr.yml @@ -12,7 +12,11 @@ jobs: spdx: uses: ./.github/workflows/spdx.yml secrets: inherit - build-and-test: + build: needs: [pre-commit, spdx] - uses: ./.github/workflows/build-and-test.yml + uses: ./.github/workflows/run-build.yml + secrets: inherit + test: + needs: build + uses: ./.github/workflows/run-tests.yml secrets: inherit diff --git a/.github/workflows/on-push.yml b/.github/workflows/on-push.yml index d3739ff2..05c6a45a 100644 --- a/.github/workflows/on-push.yml +++ b/.github/workflows/on-push.yml @@ -12,7 +12,11 @@ jobs: spdx: uses: ./.github/workflows/spdx.yml secrets: inherit - build-and-test: + build: needs: [pre-commit, spdx] - uses: ./.github/workflows/build-and-test.yml + uses: ./.github/workflows/run-build.yml + secrets: inherit + test: + needs: build + uses: ./.github/workflows/run-tests.yml secrets: inherit diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/run-build.yml similarity index 70% rename from .github/workflows/build-and-test.yml rename to .github/workflows/run-build.yml index 18dd6d61..d6ce7df6 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/run-build.yml @@ -1,4 +1,4 @@ -name: Build and Test +name: Build on: workflow_dispatch: @@ -84,7 +84,7 @@ jobs: # # Run tests on TT hardware - build-and-run-tests: + build: timeout-minutes: 120 strategy: fail-fast: false @@ -121,6 +121,9 @@ jobs: echo "build-output-dir=$(pwd)/build" >> "$GITHUB_OUTPUT" echo "install-output-dir=$(pwd)/install" >> "$GITHUB_OUTPUT" + - name: Git safe dir + run: git config --global --add safe.directory ${{ steps.strings.outputs.work-dir }} + - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: @@ -134,6 +137,7 @@ jobs: source env/activate cmake -G Ninja \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.install-output-dir }} \ -B ${{ steps.strings.outputs.build-output-dir }} \ -S ${{ steps.strings.outputs.work-dir }} @@ -144,16 +148,31 @@ jobs: cmake --build ${{ steps.strings.outputs.build-output-dir }} cmake --install ${{ steps.strings.outputs.build-output-dir }} - - name: Run PyTorch tests + - name: Copy tt-metal binaries shell: bash + working-directory: ${{ steps.strings.outputs.install-output-dir }} run: | - export LD_LIBRARY_PATH="/opt/ttmlir-toolchain/lib/:${{ steps.strings.outputs.install-output-dir }}/lib:${LD_LIBRARY_PATH}" - source env/activate - pytest -v tests/torch + cp ${{ steps.strings.outputs.work-dir }}/third_party/tt-mlir/src/tt-mlir/third_party/tt-metal/src/tt-metal-build/lib/*.so lib/ + cp ${{ steps.strings.outputs.work-dir }}/third_party/tt-mlir/src/tt-mlir/third_party/tt-metal/src/tt-metal-build/_deps/fmt-build/*.so* lib/ + cp ${{ steps.strings.outputs.work-dir }}/third_party/tt-mlir/src/tt-mlir/third_party/tt-metal/src/tt-metal-build/_deps/nanomsg-build/*.so* lib/ + cp ${{ steps.strings.outputs.work-dir }}/third_party/tt-mlir/src/tt-mlir/third_party/tt-metal/src/tt-metal-build/_deps/libuv-build/*.so* lib/ - - name: Run ONNX tests + - name: Copy tt-metal directories shell: bash + working-directory: ${{ steps.strings.outputs.install-output-dir }} run: | - export LD_LIBRARY_PATH="/opt/ttmlir-toolchain/lib/:${{ steps.strings.outputs.install-output-dir }}/lib:${LD_LIBRARY_PATH}" - source env/activate - pytest -v tests/onnx + mkdir tt-metal + cp -r ${{ steps.strings.outputs.work-dir }}/third_party/tt-mlir/src/tt-mlir/third_party/tt-metal/src/tt-metal/tt_metal tt-metal/ + cp -r ${{ steps.strings.outputs.work-dir }}/third_party/tt-mlir/src/tt-mlir/third_party/tt-metal/src/tt-metal/ttnn tt-metal/ + cp -r ${{ steps.strings.outputs.work-dir }}/third_party/tt-mlir/src/tt-mlir/third_party/tt-metal/src/tt-metal/runtime tt-metal/ + + - name: 'Tar install directory' + shell: bash + working-directory: ${{ steps.strings.outputs.install-output-dir }} + run: tar cvf artifact.tar . + + - name: Upload install folder to archive + uses: actions/upload-artifact@v4 + with: + name: install-artifacts + path: ${{ steps.strings.outputs.install-output-dir }}/artifact.tar diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml new file mode 100644 index 00000000..b6789ce3 --- /dev/null +++ b/.github/workflows/run-tests.yml @@ -0,0 +1,85 @@ +name: Run Tests + +on: + workflow_dispatch: + workflow_call: + workflow_run: + workflows: [Build] + types: [completed] + +jobs: + tests: + timeout-minutes: 120 + strategy: + fail-fast: false + matrix: + build: [ + {runs-on: n150, name: "run"}, + ] + + runs-on: + - in-service + - ${{ matrix.build.runs-on }} + + container: + image: ghcr.io/tenstorrent/tt-torch/tt-torch-ci-ubuntu-22-04:latest + options: --user root --device /dev/tenstorrent/0 + volumes: + - /dev/hugepages:/dev/hugepages + - /dev/hugepages-1G:/dev/hugepages-1G + - /etc/udev/rules.d:/etc/udev/rules.d + - /lib/modules:/lib/modules + - /opt/tt_metal_infra/provisioning/provisioning_env:/opt/tt_metal_infra/provisioning/provisioning_env + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + lfs: true + + - name: Set reusable strings + id: strings + shell: bash + run: | + echo "work-dir=$(pwd)" >> "$GITHUB_OUTPUT" + echo "build-output-dir=$(pwd)/build" >> "$GITHUB_OUTPUT" + echo "install-output-dir=$(pwd)/install" >> "$GITHUB_OUTPUT" + + - name: Git safe dir + run: git config --global --add safe.directory ${{ steps.strings.outputs.work-dir }} + + - name: Use build artifacts + uses: actions/download-artifact@v4 + with: + name: install-artifacts + path: ${{ steps.strings.outputs.install-output-dir }} + + - name: 'Untar install directory' + shell: bash + working-directory: ${{ steps.strings.outputs.install-output-dir }} + run: tar xvf artifact.tar + + - name: make tt-metal directory + shell: bash + working-directory: ${{ steps.strings.outputs.install-output-dir }} + run: mkdir -p ${{ steps.strings.outputs.work-dir }}/third_party/tt-mlir/src/tt-mlir/third_party/tt-metal/src/tt-metal + + - name: copy tt-metal dirs + shell: bash + working-directory: ${{ steps.strings.outputs.install-output-dir }} + run: | + cp -r ${{ steps.strings.outputs.install-output-dir }}/tt-metal/* ${{ steps.strings.outputs.work-dir }}/third_party/tt-mlir/src/tt-mlir/third_party/tt-metal/src/tt-metal + + - name: Run PyTorch tests + shell: bash + run: | + source env/activate + export LD_LIBRARY_PATH="/opt/ttmlir-toolchain/lib/:${{ steps.strings.outputs.install-output-dir }}/lib:${{ steps.strings.outputs.build-output-dir }}/lib:./lib/:${LD_LIBRARY_PATH}" + pytest -v tests/torch + + - name: Run ONNX tests + shell: bash + run: | + source env/activate + export LD_LIBRARY_PATH="/opt/ttmlir-toolchain/lib/:${{ steps.strings.outputs.install-output-dir }}/lib:${{ steps.strings.outputs.build-output-dir }}/lib:./lib/:${LD_LIBRARY_PATH}" + pytest -v tests/onnx