96d7b8f0ab
Fix for "SWDEV-479652" - Perfetto-based tests are failing. Updated version of perfetto submodule to v46.0. Modified Omnitrace code that uses Perfetto, so it can compile. Modified the testing code, so it can run the version of trace_processor_shell provided (v46.0). --------- Signed-off-by: Aleksandar Janicijevic <Aleksandar.Janicijevic@amd.com> Co-authored-by: David Galiffi <David.Galiffi@amd.com>
250 lines
8.6 KiB
YAML
250 lines
8.6 KiB
YAML
name: Ubuntu 22.04 (GCC, Python, ROCm)
|
|
run-name: ubuntu-jammy
|
|
|
|
on:
|
|
push:
|
|
branches: [ main, develop, release/** ]
|
|
paths-ignore:
|
|
- '*.md'
|
|
- 'docs/**'
|
|
- 'source/docs/**'
|
|
- 'source/python/gui/**'
|
|
- '.github/workflows/docs.yml'
|
|
- '.github/workflows/cpack.yml'
|
|
- '.github/workflows/containers.yml'
|
|
- '.github/workflows/formatting.yml'
|
|
- 'docker/**'
|
|
pull_request:
|
|
branches: [ main, develop, release/** ]
|
|
paths-ignore:
|
|
- '*.md'
|
|
- 'docs/**'
|
|
- 'source/docs/**'
|
|
- 'source/python/gui/**'
|
|
- '.github/workflows/docs.yml'
|
|
- '.github/workflows/cpack.yml'
|
|
- '.github/workflows/containers.yml'
|
|
- '.github/workflows/formatting.yml'
|
|
- 'docker/**'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
OMNITRACE_CI: ON
|
|
OMNITRACE_TMPDIR: "%env{PWD}%/testing-tmp"
|
|
|
|
jobs:
|
|
ubuntu-jammy-external:
|
|
runs-on: ubuntu-20.04
|
|
container:
|
|
image: jrmadsen/omnitrace:ci-base-ubuntu-22.04
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
compiler: ['g++-11', 'g++-12']
|
|
hip: ['OFF']
|
|
mpi: ['OFF']
|
|
ompt: ['OFF']
|
|
papi: ['OFF']
|
|
python: ['ON']
|
|
lto: ['OFF']
|
|
strip: ['OFF']
|
|
hidden: ['ON', 'OFF']
|
|
build-type: ['Release']
|
|
mpi-headers: ['ON', 'OFF']
|
|
static-libgcc: ['OFF']
|
|
static-libstdcxx: ['OFF']
|
|
build-dyninst: ['OFF']
|
|
rocm-version: ['0.0']
|
|
include:
|
|
- compiler: 'g++'
|
|
hip: 'ON'
|
|
mpi: 'OFF'
|
|
ompt: 'OFF'
|
|
papi: 'OFF'
|
|
python: 'ON'
|
|
lto: 'OFF'
|
|
strip: 'OFF'
|
|
hidden: 'ON'
|
|
build-type: 'Release'
|
|
mpi-headers: 'OFF'
|
|
static-libgcc: 'OFF'
|
|
static-libstdcxx: 'OFF'
|
|
build-dyninst: 'OFF'
|
|
rocm-version: '5.3'
|
|
- compiler: 'g++'
|
|
hip: 'ON'
|
|
mpi: 'OFF'
|
|
ompt: 'OFF'
|
|
papi: 'OFF'
|
|
python: 'ON'
|
|
lto: 'OFF'
|
|
strip: 'OFF'
|
|
hidden: 'ON'
|
|
build-type: 'Release'
|
|
mpi-headers: 'OFF'
|
|
static-libgcc: 'OFF'
|
|
static-libstdcxx: 'OFF'
|
|
build-dyninst: 'OFF'
|
|
rocm-version: 'latest'
|
|
|
|
env:
|
|
OMPI_ALLOW_RUN_AS_ROOT: 1
|
|
OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1
|
|
OMNITRACE_CI: 'ON'
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install Packages
|
|
timeout-minutes: 25
|
|
uses: nick-fields/retry@v3
|
|
with:
|
|
retry_wait_seconds: 30
|
|
timeout_minutes: 25
|
|
max_attempts: 5
|
|
command: |
|
|
apt-get update &&
|
|
apt-get install -y software-properties-common &&
|
|
apt-get upgrade -y &&
|
|
apt-get install -y build-essential m4 autoconf libtool python3-pip libiberty-dev clang libomp-dev libopenmpi-dev libfabric-dev openmpi-bin environment-modules ${{ matrix.compiler }} &&
|
|
wget https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v46.0/linux-amd64/trace_processor_shell -P /opt/trace_processor/bin &&
|
|
chmod +x /opt/trace_processor/bin/trace_processor_shell &&
|
|
python3 -m pip install --upgrade pip &&
|
|
python3 -m pip install numpy perfetto dataclasses &&
|
|
python3 -m pip install 'cmake==3.21.4' &&
|
|
for i in 6 7 8 9 10; do /opt/conda/envs/py3.${i}/bin/python -m pip install numpy perfetto dataclasses; done
|
|
|
|
- name: Install ROCm Packages
|
|
timeout-minutes: 25
|
|
if: ${{ matrix.rocm-version != '0.0' }}
|
|
uses: nick-fields/retry@v3
|
|
with:
|
|
retry_wait_seconds: 30
|
|
timeout_minutes: 25
|
|
max_attempts: 5
|
|
shell: bash
|
|
command: |
|
|
wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | apt-key add -
|
|
echo "deb [arch=amd64] https://repo.radeon.com/rocm/apt/${{ matrix.rocm-version }}/ jammy main" | tee /etc/apt/sources.list.d/rocm.list
|
|
apt-get update
|
|
ROCM_VERSION=$(apt-cache search rocm-dev[0-9] | awk '{print $1}' | sed 's/rocm-dev//g')
|
|
apt-get install -y {rocm-dev,hip-dev,roctracer-dev,rocprofiler-dev,rocm-smi-lib,rocminfo}${ROCM_VERSION}
|
|
echo "/opt/rocm/bin" >> $GITHUB_PATH
|
|
echo "ROCM_PATH=/opt/rocm" >> $GITHUB_ENV
|
|
echo "LD_LIBRARY_PATH=/opt/rocm/lib:${LD_LIBRARY_PATH}" >> $GITHUB_ENV
|
|
/opt/rocm/bin/hipcc -O3 -c ./examples/transpose/transpose.cpp -o /tmp/transpose.o
|
|
|
|
- name: Test Environment Modules
|
|
timeout-minutes: 15
|
|
shell: bash
|
|
run: |
|
|
set -v
|
|
source /usr/share/modules/init/$(basename ${SHELL})
|
|
module avail
|
|
|
|
- name: Configure Env
|
|
run: |
|
|
echo "CC=$(echo '${{ matrix.compiler }}' | sed 's/+/c/g')" >> $GITHUB_ENV
|
|
echo "CXX=${{ matrix.compiler }}" >> $GITHUB_ENV
|
|
|
|
- name: Configure, Build, and Test
|
|
timeout-minutes: 115
|
|
shell: bash
|
|
run:
|
|
git config --global --add safe.directory ${PWD} &&
|
|
cmake --version &&
|
|
TAG="" &&
|
|
append-tagname() { if [ "${1}" == "ON" ]; then TAG="${TAG}-${2}"; fi; } &&
|
|
append-tagname ${{ matrix.hip }} rocm-${{ matrix.rocm-version }} &&
|
|
append-tagname ${{ matrix.mpi }} mpi &&
|
|
append-tagname ${{ matrix.ompt }} ompt &&
|
|
append-tagname ${{ matrix.papi }} papi &&
|
|
append-tagname ${{ matrix.python }} python &&
|
|
append-tagname ${{ matrix.mpi-headers }} mpip &&
|
|
append-tagname ${{ matrix.build-dyninst }} internal-dyninst &&
|
|
append-tagname ${{ matrix.lto }} lto &&
|
|
append-tagname ${{ matrix.strip }} strip &&
|
|
append-tagname ${{ matrix.hidden }} hidden-viz &&
|
|
append-tagname ${{ matrix.static-libgcc }} libgcc &&
|
|
append-tagname ${{ matrix.static-libstdcxx }} libstdcxx &&
|
|
python3 ./scripts/run-ci.py -B build
|
|
--name ${{ github.repository_owner }}-${{ github.ref_name }}-ubuntu-jammy-${{ matrix.compiler }}${TAG}
|
|
--build-jobs 2
|
|
--site GitHub
|
|
--
|
|
-DCMAKE_C_COMPILER=$(echo '${{ matrix.compiler }}' | sed 's/+/c/g')
|
|
-DCMAKE_CXX_COMPILER=${{ matrix.compiler }}
|
|
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
|
|
-DCMAKE_INSTALL_PREFIX=/opt/omnitrace-dev
|
|
-DOMNITRACE_BUILD_TESTING=ON
|
|
-DOMNITRACE_USE_MPI=${{ matrix.mpi }}
|
|
-DOMNITRACE_USE_HIP=${{ matrix.hip }}
|
|
-DOMNITRACE_USE_OMPT=${{ matrix.ompt }}
|
|
-DOMNITRACE_USE_PAPI=${{ matrix.papi }}
|
|
-DOMNITRACE_USE_PYTHON=${{ matrix.python }}
|
|
-DOMNITRACE_USE_MPI_HEADERS=${{ matrix.mpi-headers }}
|
|
-DOMNITRACE_BUILD_LTO=${{ matrix.lto }}
|
|
-DOMNITRACE_BUILD_DYNINST=${{ matrix.build-dyninst }}
|
|
-DOMNITRACE_BUILD_HIDDEN_VISIBILITY=${{ matrix.hidden }}
|
|
-DOMNITRACE_BUILD_STATIC_LIBGCC=${{ matrix.static-libgcc }}
|
|
-DOMNITRACE_BUILD_STATIC_LIBSTDCXX=${{ matrix.static-libstdcxx }}
|
|
-DOMNITRACE_PYTHON_PREFIX=/opt/conda/envs
|
|
-DOMNITRACE_PYTHON_ENVS="py3.7;py3.8;py3.9;py3.10;py3.11"
|
|
-DOMNITRACE_STRIP_LIBRARIES=${{ matrix.strip }}
|
|
-DOMNITRACE_MAX_THREADS=64
|
|
-DOMNITRACE_DISABLE_EXAMPLES="transpose;rccl"
|
|
-DOMNITRACE_BUILD_NUMBER=${{ github.run_attempt }}
|
|
-DUSE_CLANG_OMP=OFF
|
|
|
|
- name: Install
|
|
timeout-minutes: 10
|
|
run:
|
|
cmake --build build --target install --parallel 2
|
|
|
|
- name: CPack and Install
|
|
run: |
|
|
cd build
|
|
cpack -G STGZ
|
|
mkdir -p /opt/omnitrace
|
|
./omnitrace-*.sh --prefix=/opt/omnitrace --exclude-subdir --skip-license
|
|
|
|
- name: Test Install with Modulefile
|
|
timeout-minutes: 15
|
|
shell: bash
|
|
run: |
|
|
set -v
|
|
source /usr/share/modules/init/$(basename ${SHELL})
|
|
module use /opt/omnitrace/share/modulefiles
|
|
module avail
|
|
module load omnitrace
|
|
./scripts/test-install.sh --test-omnitrace-{instrument,avail,sample,python,rewrite,runtime}=1
|
|
|
|
- name: Test User API
|
|
timeout-minutes: 10
|
|
run: |
|
|
set -v
|
|
./scripts/test-find-package.sh --install-dir /opt/omnitrace
|
|
|
|
- name: CTest Artifacts
|
|
if: failure()
|
|
continue-on-error: True
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ctest-${{ github.job }}-${{ strategy.job-index }}-log
|
|
path: |
|
|
build/*.log
|
|
|
|
- name: Data Artifacts
|
|
if: failure()
|
|
continue-on-error: True
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: data-${{ github.job }}-${{ strategy.job-index }}-files
|
|
path: |
|
|
build/omnitrace-tests-config/*.cfg
|
|
build/omnitrace-tests-output/**/*.txt
|
|
build/omnitrace-tests-output/**/*-instr*.json
|