Docs and small updates for xrt build infrastructure (#588) #39
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 with AIE tools | |
on: | |
push: | |
branches: | |
- main | |
# pull_request: | |
# types: [assigned, opened, synchronize, reopened, ready_for_review] | |
workflow_dispatch: | |
inputs: | |
AIR_COMMIT: | |
description: 'which air 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-air-tools-linux-${{ github.event.number || github.sha }} | |
cancel-in-progress: true | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
jobs: | |
build-repo: | |
name: Build and Test | |
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 | |
- 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 | |
# add the ROCm repos | |
mkdir --parents --mode=0755 /etc/apt/keyrings | |
wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | \ | |
gpg --dearmor | 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" \ | |
| tee --append /etc/apt/sources.list.d/rocm.list | |
done | |
echo -e 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' \ | |
| tee /etc/apt/preferences.d/rocm-pin-600 | |
apt update | |
apt install -y rocm-hip-runtime-dev5.6.0 python3.10-venv \ | |
libboost-all-dev pkg-config libelf-dev elfutils \ | |
libdwarf-dev libsysfs-dev clang libssl-dev | |
apt-get clean | |
cd / | |
mkdir install | |
python -m venv air-venv | |
source air-venv/bin/activate | |
git clone --recursive https://github.com/Xilinx/mlir-air.git | |
cd /mlir-air | |
git checkout ${{ github.head_ref }} | |
if [ x"${{ inputs.AIR_COMMIT }}" != x"" ]; then | |
git reset --hard ${{ inputs.AIR_COMMIT }} | |
fi | |
utils/clone-mlir-aie.sh | |
pushd mlir-aie | |
pip install -r python/requirements.txt | |
pip install joblib | |
pushd third_party/aie-rt/driver/src | |
make -f Makefile.Linux CFLAGS="-D__AIEAMDAIR__" | |
popd | |
mkdir -p /install/aie-rt/lib | |
cp -a third_party/aie-rt/driver/src/*.so* /install/aie-rt/lib | |
cp -a third_party/aie-rt/driver/include /install/aie-rt | |
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 \ | |
-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 \ | |
-DLibXAIE_ROOT=/install/aie-rt \ | |
-DAIE_ENABLE_GENERATE_CDO_DIRECT=ON | |
ninja install | |
ls /install | |
popd | |
cd /mlir-air | |
if [ x"${{ inputs.LIT_FILTER }}" == x"" ]; then | |
export LIT_FILTER="${{ inputs.LIT_FILTER }}" | |
fi | |
export LIT_OPTS="-sv --timeout 300 -j1 --time-tests --order=random" | |
utils/clone-rocm-air-platforms.sh | |
utils/github-clone-build-libxaie.sh | |
ROCm-air-platforms/utils/clone-build-roct.sh | |
ROCm-air-platforms/utils/clone-build-rocr.sh | |
mkdir build_assert | |
pushd build_assert | |
cmake .. \ | |
-GNinja \ | |
-DCMAKE_TOOLCHAIN_FILE=`pwd`/../cmake/modules/toolchain_x86_64.cmake \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DLLVM_ENABLE_ASSERTIONS=ON \ | |
-DCMAKE_MODULE_PATH=`pwd`/../mlir-aie/cmake/modulesXilinx \ | |
-DMLIR_DIR=`pwd`/../mlir-aie/mlir/lib/cmake/mlir \ | |
-DAIE_DIR=/install/lib/cmake/aie \ | |
-DLibXAIE_ROOT=/install/aie-rt \ | |
-Dhsa-runtime64_DIR=`pwd`/../rocm/lib/cmake/hsa-runtime64/ \ | |
-Dhsakmt_DIR=`pwd`/../rocm/lib/cmake/hsakmt/ \ | |
-DAIR_RUNTIME_TARGETS:STRING="x86_64" \ | |
-Dx86_64_TOOLCHAIN_FILE=`pwd`/../cmake/modules/toolchain_x86_64.cmake \ | |
-DLLVM_EXTERNAL_LIT=$(which lit) \ | |
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | |
-DCMAKE_INSTALL_PREFIX=/install | |
ninja | |
ninja check-air-cpp | |
ninja check-air-mlir | |
ninja check-air-python | |
ninja check-air-e2e | |
popd |