Skip to content

Commit

Permalink
Adding test to build tests with HSA
Browse files Browse the repository at this point in the history
  • Loading branch information
eddierichter-amd committed Mar 21, 2024
1 parent 50fac6c commit ec876cd
Show file tree
Hide file tree
Showing 2 changed files with 184 additions and 0 deletions.
154 changes: 154 additions & 0 deletions .github/workflows/buildAndTestAieToolsHsa.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
name: Build and Test with AIE tools with HSA backend

on:
push:
branches:
- main
# pull_request:
workflow_dispatch:
inputs:
AIE_COMMIT:
description: 'which aie commit to build'
type: string
required: false
default: ''
LIT_FILTER:
description: 'LIT_FILTER for tests (regex of paths in test/)'
type: string
required: false
default: ''

defaults:
run:
shell: bash

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).
group: ci-build-test-aie-tools-linux-${{ github.event.number || github.sha }}
cancel-in-progress: true

env:
DEBIAN_FRONTEND: noninteractive

jobs:
build-repo:
name: Build and Test HSA

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

- name: Docker prune
shell: bash
run: |
docker system prune -a -f
- name: Install necessary build tools for the ROCm runtime
run: |
sudo apt install libelf-dev elfutils libdwarf-dev
sudo mkdir --parents --mode=0755 /etc/apt/keyrings
wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | \
gpg --dearmor | sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null
for ver in 5.3.3 5.4.3 5.5.1 5.6; do
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/$ver focal main" \
| sudo tee --append /etc/apt/sources.list.d/rocm.list
done
echo -e 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' \
| sudo tee /etc/apt/preferences.d/rocm-pin-600
sudo apt update
sudo apt install rocm-hip-runtime-dev5.6.0 && sudo apt-get clean
- name: Get ROCm-air-platforms
id: clone-rocm-air-platforms
run: utils/clone-rocm-air-platforms.sh
shell: bash

- name: Build and Install libxaie
run: utils/github-clone-build-libxaie.sh

- uses: uraimo/[email protected]
name: Run commands
id: runcmd
with:
distro: none
base_image: ghcr.io/xilinx/mlir-aie/xilinx:latest
githubToken: ${{ github.token }}
dockerRunArgs: |
--mac-address ${{ secrets.XILINX_MAC }}
run: |
ls -l /opt/Xilinx/Vitis/2023.2/
# this is the inverse of `base64 -w 1000000 Xilinx.lic`
# the -w ("wrap after 1000000 cols") is so that there are no spaces in the XILINX_LIC env var
echo -n "${{ secrets.XILINX_LIC }}" | base64 --decode > ~/.Xilinx/Xilinx.lic
cd /
git clone https://github.com/Xilinx/mlir-aie.git
cd /mlir-aie
git checkout ${{ github.head_ref }}
if [ x"${{ inputs.AIE_COMMIT }}" != x"" ]; then
git reset --hard ${{ inputs.AIE_COMMIT }}
fi
git submodule update --init --recursive
apt install python3.10-venv
python -m venv aie-venv
source aie-venv/bin/activate
pip install -r python/requirements.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
find mlir -exec touch -a -m -t 201108231405.14 {} \;
# don't delete the space in the sed
pushd cmake/modulesXilinx && sed -i.bak 's/ VITIS_VPP//g' FindVitis.cmake && popd
mkdir build && cd build
export PATH=/opt/Xilinx/Vitis/2023.2/bin:/opt/Xilinx/Vitis/2023.2/aietools/bin:$PATH
cmake .. -G Ninja \
-DLibXAIE_ROOT=`pwd`/../aienginev2/install \
-Dhsakmt_DIR=`pwd`/../rocm/lib/cmake/hsakmt/ \
-DAIE_RUNTIME_TARGETS=x86_64-hsa \
-DAIE_RUNTIME_TEST_TARGET=x86_64-hsa \
-Dhsa-runtime64_DIR=`pwd`/../rocm/lib/cmake/hsa-runtime64/ \
-DMLIR_DIR=$PWD/../mlir/lib/cmake/mlir \
-DVITIS_ROOT=/opt/Xilinx/Vitis/2023.2/ \
-DVitis_VERSION_MAJOR=2023 \
-DVitis_VERSION_MINOR=2 \
-DCMAKE_MODULE_PATH=$PWD/../cmake/modulesXilinx \
-DLLVM_EXTERNAL_LIT=$(which lit) \
-DAIE_INCLUDE_INTEGRATION_TESTS=OFF \
-DAIE_ENABLE_PYTHON_PASSES=OFF \
-DCMAKE_EXE_LINKER_FLAGS_INIT="-fuse-ld=lld" \
-DCMAKE_MODULE_LINKER_FLAGS_INIT="-fuse-ld=lld" \
-DCMAKE_SHARED_LINKER_FLAGS_INIT="-fuse-ld=lld" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_INSTALL_PREFIX=install
ninja
if [ x"${{ inputs.LIT_FILTER }}" == x"" ]; then
export LIT_FILTER="${{ inputs.LIT_FILTER }}"
fi
# filter out CODirect until I put bootgen into the image
export LIT_OPTS="-sv --timeout 600 -j1 --filter-out Targets/AIEGenerateCDODirect"
ninja check-aie
ninja check-reference-designs
30 changes: 30 additions & 0 deletions utils/github-clone-build-libxaie.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/usr/bin/env bash

##===- utils/github-clone-build-libxaie.sh ------------------*- Script -*-===##
#
# Copyright (C) 2022, Advanced Micro Devices, Inc.
# SPDX-License-Identifier: MIT

##===----------------------------------------------------------------------===##
#
# This script checks out and builds libxaiev2.
#
# This script is intended to be called from the github workflows.
#
##===----------------------------------------------------------------------===##

LIBXAIE_DIR="aienginev2"
INSTALL_DIR="install"

HASH="xlnx_rel_v2021.2"

git clone --branch $HASH --depth 1 https://github.com/Xilinx/embeddedsw.git $LIBXAIE_DIR

mkdir -p $LIBXAIE_DIR/$INSTALL_DIR/lib

pushd $LIBXAIE_DIR/XilinxProcessorIPLib/drivers/aienginev2/src/
make -f Makefile.Linux CFLAGS="-D__AIELINUX__"
popd

cp -v $LIBXAIE_DIR/XilinxProcessorIPLib/drivers/aienginev2/src/*.so* $LIBXAIE_DIR/$INSTALL_DIR/lib
cp -vr $LIBXAIE_DIR/XilinxProcessorIPLib/drivers/aienginev2/include $LIBXAIE_DIR/$INSTALL_DIR

0 comments on commit ec876cd

Please sign in to comment.