589a729702
* roctracer: use multiple tracks for HIP streams Use different perfetto tracks for each stream, and set the name of these tracks to the stream pointer values. Setting the name like this matches the args in the API traces. This fixes overlapping work on multiple streams appearing as a call stack. * Fix -pedantic * Run clang-format * Add option to disable per stream tracks in perfetto * Updated scheme for roctracer activity + general roctracer fixes - Per-device tracks - Handle HSA OPS in ROCm 5.3 - the changes in ROCm 5.3 were causing HSA ops to get discarded - Default for OMNITRACE_ROCTRACER_DISCARD_INVALID is now zero - i.e. default behavior is to flip beg_ns and end_ns when beg_ns > end_ns * Flush perfetto at end of hip_activity_callback - fixes unterminated regions * GitHub Actions and run-ci script updates - improve reliability * Set OMNITRACE_TMPDIR in testing - files in /tmp get occasionally deleted during CI Co-authored-by: Gergely Meszaros <gergely@streamhpc.com>
217 lines
7.5 KiB
YAML
217 lines
7.5 KiB
YAML
name: Ubuntu 22.04 (GCC, Python, ROCm)
|
|
run-name: ubuntu-jammy
|
|
|
|
on:
|
|
push:
|
|
branches: [ main, develop ]
|
|
paths-ignore:
|
|
- '*.md'
|
|
- 'source/docs/**'
|
|
pull_request:
|
|
branches: [ main, develop ]
|
|
paths-ignore:
|
|
- '*.md'
|
|
- 'source/docs/**'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
OMNITRACE_VERBOSE: 1
|
|
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'
|
|
|
|
env:
|
|
OMPI_ALLOW_RUN_AS_ROOT: 1
|
|
OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1
|
|
OMNITRACE_CI: 'ON'
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Install Packages
|
|
timeout-minutes: 25
|
|
uses: nick-fields/retry@v2
|
|
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 }} &&
|
|
python3 -m pip install --upgrade pip &&
|
|
python3 -m pip install numpy &&
|
|
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@v2
|
|
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
|
|
apt-get install -y {rocm-hip-sdk,roctracer-dev,rocprofiler-dev,rocm-smi-lib,rocminfo}${{ matrix.rocm-version }}.0
|
|
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"
|
|
-DOMNITRACE_STRIP_LIBRARIES=${{ matrix.strip }}
|
|
-DOMNITRACE_MAX_THREADS=32
|
|
-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=1 --test-omnitrace-avail=1 --test-omnitrace-sample=1 --test-omnitrace-python=1 --test-omnitrace-rewrite=1 --test-omnitrace-runtime=1 --test-omnitrace-critical-trace=1
|
|
|
|
- name: Test User API
|
|
timeout-minutes: 10
|
|
run: |
|
|
set -v
|
|
./scripts/test-find-package.sh --install-dir /opt/omnitrace
|
|
|
|
- name: CTest Artifacts
|
|
if: success() || failure()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ctest-${{ github.job }}-log
|
|
path: |
|
|
build/*.log
|
|
|
|
- name: Data Artifacts
|
|
if: success() || failure()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: data-${{ github.job }}-files
|
|
path: |
|
|
build/omnitrace-tests-config/*.cfg
|
|
build/omnitrace-tests-output/**/*.txt
|
|
build/omnitrace-tests-output/**/*-instr*.json
|