Skip to content

Commit

Permalink
test
Browse files Browse the repository at this point in the history
  • Loading branch information
fifield committed Oct 23, 2024
1 parent 3cfcd24 commit a4c8ffa
Show file tree
Hide file tree
Showing 3 changed files with 258 additions and 155 deletions.
188 changes: 125 additions & 63 deletions .github/workflows/buildAndTestRyzenAI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,7 @@ on:
- test-ryzen-ai
pull_request:
merge_group:

# Allows you to run this workflow manually from the Actions tab by
# selecting CI and then "Run workflow" menu on the right branch
# and clicking on "launch_tmate_terminal_for_debug".
# Unfortunately this works only for the default branch.
# So you can either
# - change the default branch of the PR on the GitHub repository owning the PR
# and launching in Actions tab;
# - or edit directly the step below which runs tmate and push to the
# PR, ignoring the manual workflow launch.
workflow_dispatch:
launch_tmate_terminal_for_debug:
type: boolean
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
required: false
default: false

defaults:
run:
Expand All @@ -39,7 +24,7 @@ env:
DEBIAN_FRONTEND: noninteractive
XILINXD_LICENSE_FILE: /opt/xilinx/Xilinx.lic
VITIS: /opt/ryzen_ai-1.3.0/vitis_aie_essentials
CMAKE_ARGS: |
STATIC_CMAKE_ARGS: |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_EXE_LINKER_FLAGS_INIT="-fuse-ld=lld" \
Expand All @@ -54,83 +39,160 @@ env:
LIT_OPTS: -sv --time-tests -j12 --timeout 600 --show-unsupported --show-excluded

jobs:
build-tests:
name: Run Tests on Ryzen AI
build-mlir-aie:
name: Build for Ryzen AI
runs-on: ubuntu-latest
steps:
- name: Free disk space
uses: descriptinc/free-disk-space@main
with:
tool-cache: true
android: true
dotnet: true
haskell: true
large-packages: true
swap-storage: false

- uses: actions/checkout@v4
with:
submodules: "true"

- uses: uraimo/run-on-arch-action@v2.5.0
name: Build mlir-aie
id: runcmd
with:
distro: none
arch: none
base_image: ghcr.io/xilinx/mlir-aie/ubuntu22-ryzenai-1.3.0ea:1.1
githubToken: ${{ github.token }}
dockerRunArgs: |
--mac-address 02:42:ac:11:00:02
env: |
VITIS: ${{ env.VITIS }}
XILINXD_LICENSE_FILE: ${{ env.XILINXD_LICENSE_FILE }}
run: |
python -m venv ${{ github.workspace }}/aie-venv
source ${{ github.workspace }}/aie-venv/bin/activate
echo "Installing vitis_aie_essentials ..."
pushd /opt
tar xfz /workspace/vaie.tgz
popd
echo "Installing llvm-aie ..."
pip -q download llvm-aie -f https://github.com/Xilinx/llvm-aie/releases/expanded_assets/nightly
unzip -q llvm_aie*.whl
rm -rf llvm_aie*.whl
export PEANO_INSTALL_DIR=`realpath llvm-aie`
VERSION=$(utils/clone-llvm.sh --get-wheel-version)
echo "Installing mlir version $VERSION ..."
pip -q download mlir==$VERSION \
-f https://github.com/Xilinx/mlir-aie/releases/expanded_assets/mlir-distro
unzip -q mlir-*.whl
rm mlir-*.whl
find mlir -exec touch -a -m -t 201108231405.14 {} \;
pip install -r python/requirements.txt
pip install -r python/requirements_ml.txt
HOST_MLIR_PYTHON_PACKAGE_PREFIX=aie pip install -r python/requirements_extras.txt
mkdir build
pushd build
export PATH=$VITIS/bin:$VITIS/aietools/bin:$PATH
cmake ${{ github.workspace }} -G Ninja \
-DPython3_EXECUTABLE=$(which python) \
-DLLVM_EXTERNAL_LIT=$(which lit) \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/build/install \
-DCMAKE_MODULE_PATH=${{ github.workspace }}/cmake/modulesXilinx \
-DMLIR_DIR=${{ github.workspace }}/mlir/lib/cmake/mlir \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_EXE_LINKER_FLAGS_INIT="-fuse-ld=lld" \
-DCMAKE_MODULE_LINKER_FLAGS_INIT="-fuse-ld=lld" \
-DCMAKE_SHARED_LINKER_FLAGS_INIT="-fuse-ld=lld" \
-DXRT_ROOT=/opt/xilinx/xrt \
-DPEANO_INSTALL_DIR=$PEANO_INSTALL_DIR \
-DAIE_ENABLE_PYTHON_PASSES=OFF \
-DAIE_ENABLE_XRT_PYTHON_BINDINGS=ON \
-DAIE_INCLUDE_INTEGRATION_TESTS=OFF \
-DAIE_VITIS_COMPONENTS=AIE2
ninja install
chown -R github.github *
popd
tar cf build.tar build
- name: Upload mlir_aie
uses: actions/upload-artifact@v4
with:
name: mlir_aie
path: build.tar

test-mlir-aie:
name: Test on Ryzen AI
runs-on: amd7940hs
needs: build-mlir-aie
strategy:
fail-fast: false
matrix:
build_type: [ llvm-aie, xchesscc ]
steps:

- uses: actions/checkout@v4
with:
submodules: "true"

# Launch an ssh session via a proxy server if there is a need
# for debug. This seems to live for 35 min max
# https://github.com/mxschmitt/action-tmate
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
# To run this, launch it manually on the default branch and
# click on "launch_tmate_terminal_for_debug"
if: github.event_name == 'workflow_dispatch'
&& inputs.launch_tmate_terminal_for_debug

- name: Run commands
- uses: actions/download-artifact@v4
with:
name: mlir_aie
path: .

- name: Run mlir-aie tests
run: |
export PATH=$VITIS/bin:$VITIS/aietools/bin:$PATH
export PEANO_INSTALL_DIR=
if [ "${{ matrix.build_type }}" == "llvm-aie" ]; then
echo "Installing peano ..."
pip -q download llvm-aie -f https://github.com/Xilinx/llvm-aie/releases/expanded_assets/nightly
unzip -q llvm_aie*.whl
rm -rf llvm_aie*.whl
export PEANO_INSTALL_DIR=`realpath llvm-aie`
fi
pip cache purge
source /opt/xilinx/xrt/setup.sh
python -m venv aie-venv
source aie-venv/bin/activate
pip install -r python/requirements.txt
HOST_MLIR_PYTHON_PACKAGE_PREFIX=aie pip install -r python/requirements_extras.txt
pip install -r python/requirements_ml.txt
pip install jupyter
sed -i.bak 's/OUTPUT_TIMEOUT = 10/OUTPUT_TIMEOUT = 100/g' \
$(python -c 'import site; print(site.getsitepackages()[0])')/jupyter_client/runapp.py
HOST_MLIR_PYTHON_PACKAGE_PREFIX=aie pip install -r python/requirements_extras.txt
VERSION=$(utils/clone-llvm.sh --get-wheel-version)
pip -q download mlir==$VERSION \
-f https://github.com/Xilinx/mlir-aie/releases/expanded_assets/mlir-distro
unzip -q mlir-*.whl
rm mlir-*.whl
# I have no clue why but the system clock on GHA containers is like 12 hours ahead.
# That means wheels have file with time stamps in the future which makes ninja loop
# forever when configuring. Set the time to some arbitrary stamp in the past just to be safe.
find mlir -exec touch -a -m -t 201108231405.14 {} \;
mkdir build
pushd build
export PATH=$VITIS/bin:$VITIS/aietools/bin:$PATH
cmake .. -G Ninja \
-DPython3_EXECUTABLE=$(which python) \
-DLLVM_EXTERNAL_LIT=$(which lit) \
-DCMAKE_INSTALL_PREFIX=$PWD/../mlir_aie \
-DCMAKE_MODULE_PATH=$PWD/../cmake/modulesXilinx \
-DMLIR_DIR=$PWD/../mlir/lib/cmake/mlir \
$CMAKE_ARGS
ninja install
ninja check-aie
popd
tar xf build.tar
rm build.tar
cd build
lit ${{ env.LIT_OPTS }} test programming_guide programming_examples
build-quick-setup:
name: Run Examples on Ryzen AI
name: Test Examples on Ryzen AI
runs-on: amd7940hs
steps:
- uses: actions/checkout@v4
with:
submodules: "true"

# Launch an ssh session via a proxy server if there is a need
# for debug. This seems to live for 35 min max
# https://github.com/mxschmitt/action-tmate
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
# To run this, launch it manually on the default branch and
# click on "launch_tmate_terminal_for_debug"
if: github.event_name == 'workflow_dispatch'
&& inputs.launch_tmate_terminal_for_debug

- name: Run commands
- name: Build and Test mlir-aie
run: |
pip cache purge
Expand Down
Loading

0 comments on commit a4c8ffa

Please sign in to comment.