forked from AdaptiveCpp/AdaptiveCpp
-
Notifications
You must be signed in to change notification settings - Fork 0
163 lines (146 loc) · 5.33 KB
/
Copy pathlinux-vulkan.yml
File metadata and controls
163 lines (146 loc) · 5.33 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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
name: Linux Vulkan
on: [push, pull_request]
jobs:
prep-container:
name: Prepare CI container clang ${{ matrix.clang }}, ${{ matrix.os }}
runs-on: ubuntu-22.04
permissions:
pull-requests: read
packages: write
actions: read
outputs:
docker_matrix: ${{ steps.matrix-output.outputs.json }}
strategy:
matrix:
clang: ['17']
os: [ubuntu-22.04]
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 20
- uses: ./.github/workflows/create-ci-docker
id: docker
with:
LLVM_VERSION: ${{ matrix.clang }}
ROCM_VERSION: ""
CUDA_MAJOR_VERSION: ""
BASE_TAG: ${{ matrix.os }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: beacon-biosignals/matrix-output@v1
id: matrix-output
with:
yaml: |
name: ${{ matrix.clang }}-${{ matrix.os }}
base_compiler: ${{ matrix.clang }}
os: ${{ matrix.os }}
image: ${{ steps.docker.outputs.docker_image }}
test-acpp-llvm:
name: AdaptiveCpp LLVM ${{ matrix.clang_version }} and Vulkan
needs: prep-container
runs-on: ${{ matrix.docker.os }}
container:
image: ${{ matrix.docker.image }}
defaults:
run:
shell: bash
strategy:
matrix:
docker: ${{fromJson(needs.prep-container.outputs.docker_matrix)}}
clang_version: ['19', '21']
fail-fast: false
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
path: AdaptiveCpp
- name: Install Vulkan SDK
uses: jakoch/install-vulkan-sdk-action@v1
with:
vulkan_version: 1.4.341.1
cache: true
stripdown: true
# Install mesa 25.x vulkan driver
- name: Install LLVMpipe
run: |
apt-add-repository 'ppa:kisak/turtle' -y
apt-get update
apt-get install -y mesa-vulkan-drivers
- name: vulkaninfo
run: |
vulkaninfo --summary
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ${{ github.job }}-${{matrix.clang_version}}
restore-keys: |
${{ github.job }}
- name: cache clspv
id: cache-clspv
uses: actions/cache@v4
with:
path: ${{github.workspace}}/clspv/build/install
key: 8286ad49be1fa8708f07aa6852e1b84ed4dd0861
- name: checkout clspv
if: steps.cache-clspv.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
repository: google/clspv
path: clspv
ref: 8286ad49be1fa8708f07aa6852e1b84ed4dd0861
- name: build clspv
if: steps.cache-clspv.outputs.cache-hit != 'true'
run: |
cd $GITHUB_WORKSPACE/clspv
python3 utils/fetch_sources.py
cmake -GNinja -S $GITHUB_WORKSPACE/clspv -B $GITHUB_WORKSPACE/clspv/build \
-DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/clspv/build/install \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
cmake --build $GITHUB_WORKSPACE/clspv/build --target install
- name: clone LLVM
run: |
git clone --recurse-submodules https://github.com/llvm/llvm-project --depth 1 --single-branch -b release/${{matrix.clang_version}}.x llvm
- name: build AdaptiveCpp
run: |
mkdir build && cd build
cmake ../llvm/llvm -GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install \
-DLLVM_TARGETS_TO_BUILD="X86" \
-DLLVM_ENABLE_PROJECTS="clang;openmp;lld" \
-DLLVM_PARALLEL_LINK_JOBS=1 \
-DLLVM_BUILD_LLVM_DYLIB=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DLLVM_EXTERNAL_PROJECTS=AdaptiveCpp \
-DLLVM_EXTERNAL_ADAPTIVECPP_SOURCE_DIR=`pwd`/../AdaptiveCpp \
-DLLVM_ADAPTIVECPP_LINK_INTO_TOOLS=ON \
-DWITH_OPENCL_BACKEND=OFF \
-DWITH_VULKAN_BACKEND=ON \
-DOPENMP_ENABLE_LIBOMPTARGET=OFF \
-DCMAKE_PROGRAM_PATH=$GITHUB_WORKSPACE/clspv/build/install/bin
ninja -j2 install
echo "PATH=${GITHUB_WORKSPACE}/install/bin:$PATH" >> $GITHUB_ENV
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/install/lib:${GITHUB_WORKSPACE}/install/lib/x86_64-unknown-linux-gnu:$LD_LIBRARY_PATH" >> $GITHUB_ENV
- name: list devices
run: ${GITHUB_WORKSPACE}/install/bin/acpp-info -l
- name: build generic SSCP tests
run: |
mkdir ${GITHUB_WORKSPACE}/build/tests-sscp
cd ${GITHUB_WORKSPACE}/build/tests-sscp
cmake -GNinja ${GITHUB_WORKSPACE}/AdaptiveCpp/tests \
-DCMAKE_C_COMPILER=${GITHUB_WORKSPACE}/install/bin/clang \
-DCMAKE_CXX_COMPILER=${GITHUB_WORKSPACE}/install/bin/clang++ \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DACPP_TARGETS="generic" \
-DAdaptiveCpp_DIR=${GITHUB_WORKSPACE}/install/lib/cmake/AdaptiveCpp \
-DLLVM_DIR=${GITHUB_WORKSPACE}/install/lib/cmake/llvm
ninja -j2
- name: run SYCL tests
run: |
cd ${GITHUB_WORKSPACE}/build/tests-sscp
ACPP_VISIBILITY_MASK="vk" ./sycl_tests
- name: run lit SSCP tests
run: |
cd ${GITHUB_WORKSPACE}/build/tests-sscp
ACPP_VISIBILITY_MASK="vk" ninja check-sscp