Add row major flag #58
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
name: Build and Test | |
on: | |
push: | |
jobs: | |
build-image: | |
runs-on: | |
- in-service | |
- builder | |
outputs: | |
docker-image: ${{ steps.build.outputs.docker-image }} | |
steps: | |
- name: Fix permissions | |
shell: bash | |
run: sudo chown ubuntu:ubuntu -R $(pwd) | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Log in to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build Docker images and output the image name | |
id: build | |
shell: bash | |
run: | | |
# Output the image name | |
set pipefail | |
.github/build-docker-images.sh | tee docker.log | |
DOCKER_CI_IMAGE=$(tail -n 1 docker.log) | |
echo "DOCKER_CI_IMAGE $DOCKER_CI_IMAGE" | |
echo "docker-image=$DOCKER_CI_IMAGE" >> "$GITHUB_OUTPUT" | |
build-ttmlir: | |
needs: build-image | |
timeout-minutes: 120 | |
strategy: | |
fail-fast: false | |
matrix: | |
build: [ | |
{runs-on: ubuntu-latest, enable_perf: OFF, name: "run", ttrt_flags: ""}, | |
{runs-on: ubuntu-latest, enable_perf: ON, name: "perf", ttrt_flags: ""}, | |
] | |
name: Build tt-mlir | |
runs-on: ${{ matrix.build.runs-on }} | |
container: | |
image: ${{ needs.build-image.outputs.docker-image }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- 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: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
create-symlink: true | |
key: ${{ matrix.build.runs-on }}-run-ON-perf-${{ matrix.build.enable_perf }}-${{ env.SDK_VERSION }} | |
# Build project | |
- name: Configure CMake | |
shell: bash | |
run: | | |
source env/activate | |
cmake -G Ninja \ | |
-B ${{ steps.strings.outputs.build-output-dir }} \ | |
-DCMAKE_CXX_COMPILER=clang++-17 \ | |
-DCMAKE_C_COMPILER=clang-17 \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.install-output-dir }} \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DTTMLIR_ENABLE_RUNTIME=ON \ | |
-DTTMLIR_ENABLE_RUNTIME_TESTS=ON \ | |
-DTT_RUNTIME_ENABLE_PERF_TRACE=${{ matrix.build.enable_perf }} \ | |
-DTTMLIR_ENABLE_STABLEHLO=ON \ | |
-S ${{ steps.strings.outputs.work-dir }} | |
- name: Build | |
shell: bash | |
run: | | |
source env/activate | |
cmake --build ${{ steps.strings.outputs.build-output-dir }} | |
cmake --install ${{ steps.strings.outputs.build-output-dir }} --component Test | |
# - name: Lint | |
# shell: bash | |
# if: matrix.build.enable_perf == 'OFF' | |
# run: | | |
# source env/activate | |
# cmake --build ${{ steps.strings.outputs.build-output-dir }} -- clang-tidy | |
- name: Run Test | |
shell: bash | |
run: | | |
source env/activate | |
cmake --build ${{ steps.strings.outputs.build-output-dir }} -- check-ttmlir | |
- name: Upload Test Report | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-reports-${{ matrix.build.runs-on }}-perf-${{ matrix.build.enable_perf }} | |
path: build/test/report.xml | |
- name: Show Test Report | |
uses: mikepenz/action-junit-report@v4 | |
if: success() || failure() | |
with: | |
report_paths: build/test/report.xml | |
check_name: MLIR Tests | |
# Build and upload ttrt | |
- name: Build ttrt | |
shell: bash | |
run: | | |
source env/activate | |
cmake --build ${{ steps.strings.outputs.build-output-dir }} -- ttrt | |
- name: Upload ttrt whl | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ttrt-whl-${{ matrix.build.name }} | |
path: build/runtime/tools/python/build/ttrt*.whl | |
# This is needed to preserve file permissions | |
# https://github.com/actions/upload-artifact?tab=readme-ov-file#permission-loss | |
- 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-${{ matrix.build.name }} | |
path: ${{ steps.strings.outputs.install-output-dir }}/artifact.tar | |
- name: Get the latest tag | |
shell: bash | |
run: | | |
latest_tag=$(git describe --tags --abbrev=0) | |
latest_tag=${latest_tag#v} | |
echo "latest_tag=$latest_tag" >> $GITHUB_ENV | |
commit_count=$(git rev-list ${{ env.latest_tag }}..HEAD --count) | |
echo "commit_count=$commit_count" >> $GITHUB_ENV | |
version="${{ env.latest_tag }}.${{ env.commit_count }}" | |
echo "version=$version" >> $GITHUB_ENV | |
echo $version | |
# Run tests on TT hardware | |
run-tests: | |
timeout-minutes: 30 | |
needs: | |
- build-image | |
- build-ttmlir | |
strategy: | |
fail-fast: false | |
matrix: | |
build: [ | |
{runs-on: n150, enable_perf: OFF, name: "run", ttrt_flags: "--non-zero"}, | |
{runs-on: n150, enable_perf: ON, name: "perf"}, | |
{runs-on: n300, enable_perf: OFF, name: "run", ttrt_flags: "--non-zero"}, | |
{runs-on: n300, enable_perf: ON, name: "perf"}, | |
] | |
runs-on: | |
- in-service | |
- ${{ matrix.build.runs-on }} | |
container: | |
image: ${{ needs.build-image.outputs.docker-image }} | |
options: --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: | |
fetch-depth: 0 | |
- 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-${{ matrix.build.name }} | |
path: ${{ steps.strings.outputs.install-output-dir }} | |
# This is needed to preserve file permissions | |
# https://github.com/actions/upload-artifact?tab=readme-ov-file#permission-loss | |
- name: 'Untar install directory' | |
shell: bash | |
working-directory: ${{ steps.strings.outputs.install-output-dir }} | |
run: tar xvf artifact.tar | |
- name: Remove existing whls files | |
shell: bash | |
run: | | |
rm -f *.whl | |
- name: Download ttrt run whls | |
uses: actions/download-artifact@v4 | |
with: | |
name: ttrt-whl-${{ matrix.build.name }} | |
- name: Install ttrt run whls | |
shell: bash | |
run: | | |
source env/activate | |
pip show ttrt && pip uninstall -y ttrt | |
pip install ttrt-${{ env.version }}*.whl --force-reinstall | |
- name: Generate system descriptor | |
shell: bash | |
run: | | |
source env/activate | |
ttrt query --save-artifacts | |
- name: Generate tests | |
shell: bash | |
run: | | |
source env/activate | |
export LD_LIBRARY_PATH="${TTMLIR_TOOLCHAIN_DIR}/lib:${LD_LIBRARY_PATH}" | |
export SYSTEM_DESC_PATH="${GITHUB_WORKSPACE}/ttrt-artifacts/system_desc.ttsys" | |
ln -sf ${{ steps.strings.outputs.install-output-dir }} ${{ steps.strings.outputs.build-output-dir }} | |
llvm-lit -sv ${{ steps.strings.outputs.build-output-dir }}/test | |
- name: Run functional tests | |
shell: bash | |
if: matrix.build.enable_perf == 'OFF' | |
run: | | |
source env/activate | |
ttrt ${{ matrix.build.name }} ${{ matrix.build.ttrt_flags }} ${{ steps.strings.outputs.build-output-dir }}/test/ttmlir/Silicon | |
- name: Run perf tests | |
shell: bash | |
if: matrix.build.enable_perf == 'ON' | |
run: | | |
source env/activate | |
ttrt ${{ matrix.build.name }} ${{ matrix.build.ttrt_flags }} ${{ steps.strings.outputs.build-output-dir }}/test/ttmlir/Silicon/TTNN/perf_unit | |
- name: Upload ttrt test report | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.build.runs-on }}_${{ matrix.build.name }}_results.json | |
path: ${{ matrix.build.name }}_results.json | |
- name: Show Test Report | |
uses: mikepenz/action-junit-report@v4 | |
if: success() || failure() | |
with: | |
report_paths: ttrt_report.xml | |
check_name: TTRT ${{ matrix.build.runs-on }} ${{ matrix.build.name }} Tests | |
run-ttrt-tests: | |
timeout-minutes: 30 | |
needs: | |
- build-image | |
- build-ttmlir | |
strategy: | |
fail-fast: false | |
matrix: | |
build: [ | |
{runs-on: n150, enable_perf: ON, name: "perf"}, | |
] | |
runs-on: | |
- in-service | |
- ${{ matrix.build.runs-on }} | |
container: | |
image: ${{ needs.build-image.outputs.docker-image }} | |
options: --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: | |
fetch-depth: 0 | |
- 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-${{ matrix.build.name }} | |
path: ${{ steps.strings.outputs.install-output-dir }} | |
# This is needed to preserve file permissions | |
# https://github.com/actions/upload-artifact?tab=readme-ov-file#permission-loss | |
- name: 'Untar install directory' | |
shell: bash | |
working-directory: ${{ steps.strings.outputs.install-output-dir }} | |
run: tar xvf artifact.tar | |
- name: Remove existing whls files | |
shell: bash | |
run: | | |
rm -f *.whl | |
- name: Download ttrt run whls | |
uses: actions/download-artifact@v4 | |
with: | |
name: ttrt-whl-${{ matrix.build.name }} | |
- name: Install ttrt run whls | |
shell: bash | |
run: | | |
source env/activate | |
pip show ttrt && pip uninstall -y ttrt | |
pip install ttrt-${{ env.version }}*.whl --force-reinstall | |
pip install pytest | |
- name: Generate system descriptor | |
shell: bash | |
run: | | |
source env/activate | |
ttrt query --save-artifacts | |
- name: Generate tests | |
shell: bash | |
run: | | |
source env/activate | |
export LD_LIBRARY_PATH="${TTMLIR_TOOLCHAIN_DIR}/lib:${LD_LIBRARY_PATH}" | |
export SYSTEM_DESC_PATH="${GITHUB_WORKSPACE}/ttrt-artifacts/system_desc.ttsys" | |
ln -sf ${{ steps.strings.outputs.install-output-dir }} ${{ steps.strings.outputs.build-output-dir }} | |
llvm-lit -sv ${{ steps.strings.outputs.build-output-dir }}/test | |
- name: ttrt read tests | |
shell: bash | |
run: | | |
source env/activate | |
pytest -ssv runtime/tools/python/test/test_read.py | |
- name: ttrt query tests | |
shell: bash | |
run: | | |
source env/activate | |
pytest -ssv runtime/tools/python/test/test_query.py | |
- name: ttrt check tests | |
shell: bash | |
run: | | |
source env/activate | |
pytest -ssv runtime/tools/python/test/test_check.py | |
- name: ttrt run tests | |
shell: bash | |
run: | | |
source env/activate | |
pytest -ssv runtime/tools/python/test/test_run.py | |
- name: ttrt perf tests | |
shell: bash | |
run: | | |
source env/activate | |
pytest -ssv runtime/tools/python/test/test_perf.py | |
build-and-test-explorer: | |
needs: build-image | |
timeout-minutes: 60 | |
strategy: | |
fail-fast: false | |
matrix: | |
build: [ | |
{runs-on: ubuntu-latest, enable_perf: OFF, name: "run", ttrt_flags: ""}, | |
] | |
name: Build and test tt-explorer | |
runs-on: ${{ matrix.build.runs-on }} | |
container: | |
image: ${{ needs.build-image.outputs.docker-image }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set reusable strings | |
id: strings | |
shell: bash | |
run: | | |
echo "work-dir=$(pwd)" >> "$GITHUB_OUTPUT" | |
echo "build-output-dir=$(pwd)/build" >> "$GITHUB_OUTPUT" | |
- name: Git safe dir | |
run: git config --global --add safe.directory ${{ steps.strings.outputs.work-dir }} | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
create-symlink: true | |
key: ${{ matrix.build.runs-on }}-run-ON-perf-${{ matrix.build.enable_perf }}-${{ env.SDK_VERSION }} | |
- name: Configure CMake | |
shell: bash | |
run: | | |
source env/activate | |
cmake -G Ninja \ | |
-B ${{ steps.strings.outputs.build-output-dir }} \ | |
-DCMAKE_CXX_COMPILER=clang++-17 \ | |
-DCMAKE_C_COMPILER=clang-17 \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DTTMLIR_ENABLE_RUNTIME=OFF \ | |
-DTTMLIR_ENABLE_RUNTIME_TESTS=OFF \ | |
-DTT_RUNTIME_ENABLE_PERF_TRACE=${{ matrix.build.enable_perf }} \ | |
-DTTMLIR_ENABLE_STABLEHLO=OFF \ | |
-S ${{ steps.strings.outputs.work-dir }} | |
- name: Build tt-explorer | |
shell: bash | |
run: | | |
source env/activate | |
cmake --build ${{ steps.strings.outputs.build-output-dir }} -- explorer | |
- name: Run tt-explorer tests | |
shell: bash | |
run: | | |
source env/activate | |
pytest tools/explorer/test/run_tests.py |