Skip to content

Embed OpenCL tracing files in the repo #20

Embed OpenCL tracing files in the repo

Embed OpenCL tracing files in the repo #20

name: sdk-build-and-test
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
defaults:
run:
shell: bash
permissions:
contents: read
jobs:
sdk-build-and-test:
name: Test pti-sdk Ubuntu and Rocky
#
# pti is a selector to machines with Intel Ponte Vecchio officially
# Intel(R) Data Center GPU Max 1100
#
runs-on: [pti]
strategy:
matrix:
include:
- container: ${{ vars.PTI_DOCKER_IMAGE_2024_1_1 }}
uploadname: "ubuntu22.4-2024.1.1"
- container: ${{ vars.PTI_DOCKER_IMAGE_ROCKY8_2024_1_1 }}
uploadname: "rocky8-2024.1.1"
container:
image: ${{ matrix.container }}
options: --device=/dev/dri --cap-add CAP_PERFMON
if: vars.PTI_RUN_TESTS == 1
steps:
- name: Clean-up
run: rm -rf *
- name: Checkout
uses: actions/checkout@v4
- name: Build
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
cmake --preset default
cmake --build --preset default -j $(($(nproc)/2))
- name: Test
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
ctest --output-on-failure --preset default
- name: Build AddressSanitizer
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
cmake --preset asan
cmake --build --preset asan --parallel $(($(nproc)/2))
- name: Build ThreadSanitizer
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
cmake --preset tsan
cmake --build --preset tsan --parallel $(($(nproc)/2))
- name: Build libFuzzer
working-directory: sdk
run: |
# To ensure it still builds, run build for fuzz targets until we have
# proper fuzz testing infrastructure in place.
source /opt/intel/oneapi/setvars.sh
cmake --preset fuzz
cmake --build --preset fuzz --parallel $(($(nproc)/2))
#
# Rocky8 has a problem with this test.
#
- name: Test AddressSanitizer
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
#
# Must skip Rocky8 with more than one GPU because of
# an unexpected failure as documented in PTI-74
#
if [ $(sycl-ls|grep 'ext_oneapi_level_zero:gpu:' -c) -gt 1 ] &&\
[[ $(cat /etc/redhat-release) =~ Rocky.*8 ]]; then
exit 0
fi
ctest --preset asan --output-on-failure -L samples
- name: Test ThreadSanitizer
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
ctest --preset tsan --output-on-failure -L samples
- name: Install SDK
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
cmake --install build --config Release --prefix out
- name: Upload SDK
uses: actions/upload-artifact@v4
with:
name: "PTI-SDK-${{ matrix.uploadname }}"
path: sdk/out
#
# A note regarding the double call of source in every step in the
# sdk-build-and-test workflow.
#
# The first call to source is running oneapi-v2024.1.0
# the second call to source overlays the compiler 2024.1.1
# and custom installs it into /opt/intel/oneapinext
#
# Please refer to sdk-build-and-test-goofy
#
sdk-build-and-test-goofy:
name: Test pti-sdk double source
container:
image: ${{ vars.PTI_DOCKER_IMAGE_2024_1_0 }}
options: --device=/dev/dri --cap-add CAP_PERFMON
if: vars.PTI_RUN_TESTS == 1
#
# pti is a selector to machines with Intel Ponte Vecchio officially
# Intel(R) Data Center GPU Max 1100
#
runs-on: [pti]
#
# A note regarding the double call of source in every step in the
# sdk-build-and-test workflow.
#
# The first call to source is running oneapi-v2024.1.0
# the second call to source overlays the compiler 2024.1.1
#
# This will be improved in due course.
#
steps:
- name: Clean-up
run: rm -rf *
- name: Checkout
uses: actions/checkout@v4
- name: Build
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
source /opt/intel/oneapinext/setvars.sh --force
cmake --preset default
cmake --build --preset default -j $(($(nproc)/2))
- name: Test
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
source /opt/intel/oneapinext/setvars.sh --force
ctest --output-on-failure --preset default
- name: Build AddressSanitizer
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
source /opt/intel/oneapinext/setvars.sh --force
cmake --preset asan
cmake --build --preset asan --parallel $(($(nproc)/2))
- name: Build ThreadSanitizer
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
source /opt/intel/oneapinext/setvars.sh --force
cmake --preset tsan
cmake --build --preset tsan --parallel $(($(nproc)/2))
- name: Build libFuzzer
working-directory: sdk
run: |
# To ensure it still builds, run build for fuzz targets until we have
# proper fuzz testing infrastructure in place.
source /opt/intel/oneapi/setvars.sh
source /opt/intel/oneapinext/setvars.sh --force
cmake --preset fuzz
cmake --build --preset fuzz --parallel $(($(nproc)/2))
- name: Test AddressSanitizer
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
source /opt/intel/oneapinext/setvars.sh --force
ctest --preset asan --output-on-failure -L samples
- name: Test ThreadSanitizer
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
source /opt/intel/oneapinext/setvars.sh --force
ctest --preset tsan --output-on-failure -L samples
- name: Install SDK
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
source /opt/intel/oneapinext/setvars.sh --force
cmake --install build --config Release --prefix out
- name: Upload SDK
uses: actions/upload-artifact@v4
with:
name: "PTI-SDK-2024.1.0-ubuntu-2024.1.0"
path: |
sdk/out
pti-tools-build-and-test:
name: Test pti library Ubuntu-22-04
if: vars.PTI_RUN_TESTS == 1
runs-on: [pti]
strategy:
matrix:
include:
- container: ${{ vars.PTI_DOCKER_IMAGE_2024_1_1 }}
- container: ${{ vars.PTI_DOCKER_IMAGE_2024_1_0 }}
container:
image: ${{ matrix.container }}
options: --device=/dev/dri --cap-add CAP_PERFMON
steps:
- name: Clean-up
run: rm -rf *
- name: Checkout
uses: actions/checkout@v4
- name: Build-and-test-unitrace
run: |
source /opt/intel/oneapi/setvars.sh
python ./tests/run.py -s unitrace
- name: Build-and-test-onetrace
run: |
source /opt/intel/oneapi/setvars.sh
python ./tests/run.py -s onetrace
- name: Build-and-test-oneprof
run: |
source /opt/intel/oneapi/setvars.sh
#
# Must with more than one GPU because of
# an random failures as documented in PTI-75
#
if [ $(sycl-ls|grep 'ext_oneapi_level_zero:gpu:' -c) -gt 1 ]; then
exit 0
fi
python ./tests/run.py -s oneprof
- name: Build-and-test-sysmon
run: |
source /opt/intel/oneapi/setvars.sh
python ./tests/run.py -s sysmon
- name: Build-and-test-cl_gpu_metrics
run: |
source /opt/intel/oneapi/setvars.sh
python ./tests/run.py -s cl_gpu_metrics
- name: Build-and-test-gpu-inst-count
run: |
source /opt/intel/oneapi/setvars.sh
python ./tests/run.py -s gpu_inst_count
pti-tools-build-and-test-rocky:
name: Test pti library for Rocky8
if: vars.PTI_RUN_TESTS == 1
runs-on: [pti]
strategy:
matrix:
include:
- container: ${{ vars.PTI_DOCKER_IMAGE_ROCKY8_2024_1_1 }}
container:
image: ${{ matrix.container }}
options: --device=/dev/dri --cap-add CAP_PERFMON
steps:
- name: Clean-up
run: rm -rf *
- name: Checkout
uses: actions/checkout@v4
- name: Build-and-test-unitrace
run: |
source /opt/intel/oneapi/setvars.sh
source /opt/rh/gcc-toolset-13/enable
python3.11 ./tests/run.py -s unitrace
- name: Build-and-test-onetrace
run: |
source /opt/intel/oneapi/setvars.sh
source /opt/rh/gcc-toolset-13/enable
python3.11 ./tests/run.py -s onetrace
- name: Build-and-test-oneprof
run: |
source /opt/intel/oneapi/setvars.sh
source /opt/rh/gcc-toolset-13/enable
python3.11 ./tests/run.py -s oneprof
- name: Build-and-test-sysmon
run: |
source /opt/intel/oneapi/setvars.sh
source /opt/rh/gcc-toolset-13/enable
python3.11 ./tests/run.py -s sysmon
- name: Build-and-test-cl_gpu_metrics
run: |
source /opt/intel/oneapi/setvars.sh
source /opt/rh/gcc-toolset-13/enable
python3.11 ./tests/run.py -s cl_gpu_metrics
#
# Fix!!
# A problem with GLIBCXX_3.4.26 as noted in VASP-30704
#
- name: Build-and-test-gpu-inst-count
if: vars.PTI_DOCKER_IMAGE_ROCKY8_2024_1_1 != matrix.container
run: |
source /opt/intel/oneapi/setvars.sh
source /opt/rh/gcc-toolset-13/enable
python3.11 ./tests/run.py -s gpu_inst_count