forked from llvm/circt
-
Notifications
You must be signed in to change notification settings - Fork 0
134 lines (123 loc) · 4.83 KB
/
testPycdeESI.yml
File metadata and controls
134 lines (123 loc) · 4.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
name: Test PyCDE and the ESI runtime
on:
workflow_dispatch:
schedule:
- cron: "0 13 * * *"
pull_request:
paths:
- "frontends/PyCDE/**"
- "lib/Dialect/ESI/runtime/**"
# Cancel previous CI builds when a new push occurs to the same PR.
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
# ---------------------------------------------------------------------------
# Build and test Linux wheels. Run the CIRCT tests also.
# ---------------------------------------------------------------------------
build-linux:
name: Build and Test
# Run on an internal MSFT subscription. Please DO NOT use this for any other
# workflows without talking to John Demme (john.demme@microsoft.com, GH
# teqdruid) first. We may lose funding for this if it ends up costing too
# much.
# If individual jobs fail due to timeouts or disconnects, please report to
# John and re-run the job.
runs-on: ["self-hosted", "1ES.Pool=1ES-CIRCT-builds", "linux"]
container:
image: ghcr.io/circt/images/pycde-esi-test:latest
volumes:
- /mnt:/__w/circt
strategy:
# Keep the 'matrix' strategy with one data point to make it obvious that
# this is one point in the overall matrix.
matrix:
build-assert: [ON]
build-shared: [ON]
build-type: [Release]
compiler:
- cc: clang
cxx: clang++
steps:
# Clone the CIRCT repo and its submodules. Do shallow clone to save clone
# time.
- name: Get CIRCT
uses: actions/checkout@v3
with:
fetch-depth: 1
submodules: true
- name: Setup venv and install dependencies
run: |
set -o errexit
whoami
apt update
apt install -y python3-venv
python3 -m venv venv
. venv/bin/activate
pip install --upgrade pip
pip install -r frontends/PyCDE/python/requirements.txt
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: pycde-${{ matrix.compiler.cc }}-${{ matrix.build-type }}-${{ matrix.build-shared }}-${{ matrix.build-assert }}
max-size: 500M
# --------
# Build and test CIRCT
# --------
- name: Configure CIRCT
env:
CC: ${{ matrix.compiler.cc }}
CXX: ${{ matrix.compiler.cxx }}
BUILD_ASSERT: ${{ matrix.build-assert }}
BUILD_SHARED: ${{ matrix.build-shared }}
BUILD_TYPE: ${{ matrix.build-type }}
run: |
. venv/bin/activate
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
mkdir build && cd build
# In order for ccache to be effective, these flags should be kept in sync with nighly.
cmake -GNinja ../llvm/llvm \
-DBUILD_SHARED_LIBS=$BUILD_SHARED \
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
-DCMAKE_C_COMPILER=$CC \
-DCMAKE_CXX_COMPILER=$CXX \
-DLLVM_CCACHE_BUILD=ON \
-DLLVM_ENABLE_ASSERTIONS=$BUILD_ASSERT \
-DLLVM_ENABLE_PROJECTS=mlir \
-DLLVM_EXTERNAL_PROJECTS=circt \
-DLLVM_EXTERNAL_CIRCT_SOURCE_DIR=.. \
-DLLVM_TARGETS_TO_BUILD="host" \
-DLLVM_USE_LINKER=lld \
-DLLVM_USE_SPLIT_DWARF=ON \
-DMLIR_ENABLE_BINDINGS_PYTHON=ON \
-DCIRCT_BINDINGS_PYTHON_ENABLED=ON \
-DCIRCT_ENABLE_FRONTENDS=PyCDE \
-DESI_RUNTIME=ON \
-DLLVM_LIT_ARGS="-v --show-unsupported" \
-DCIRCT_SLANG_FRONTEND_ENABLED=ON
- name: Test CIRCT
run: |
. venv/bin/activate
ninja -C build check-circt -j$(nproc)
- name: Test PyCDE
run: |
. venv/bin/activate
ninja -C build check-pycde -j$(nproc)
# The PyCDE integration tests exercise the ESI runtime.
- name: Test PyCDE and ESI runtime integration
run: |
. venv/bin/activate
ninja -C build check-pycde-integration -j$(nproc)
- name: Test ESI runtime (pytest)
run: |
. venv/bin/activate
# Install the ESI C++ runtime into the esiaccel Python package tree
# so that cmake-based tests can find headers, libraries, and the
# esiaccelConfig.cmake.
cmake --install build \
--prefix build/tools/circt/lib/Dialect/ESI/runtime/python/esiaccel \
--component ESIRuntime
export PYTHONPATH="$PWD/build/tools/circt/python_packages/pycde:$PWD/build/tools/circt/lib/Dialect/ESI/runtime/python"
export PATH="$PWD/build/bin:$PATH"
export LD_LIBRARY_PATH="$PWD/build/lib:$LD_LIBRARY_PATH"
python3 -m pytest lib/Dialect/ESI/runtime/tests/ -v --log-cli-level=INFO