ubuntu-jammy #806
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Ubuntu 22.04 (GCC, Python, ROCm) | |
run-name: ubuntu-jammy | |
on: | |
push: | |
branches: [ amd-mainline, amd-staging, 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: [ amd-mainline, amd-staging, 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 autoconf bison build-essential clang environment-modules libfabric-dev libiberty-dev libomp-dev libopenmpi-dev libtool m4 openmpi-bin python3-pip texinfo ${{ 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 --upgrade numpy perfetto dataclasses && | |
python3 -m pip install 'cmake==3.18.4' && | |
for i in 6 7 8 9 10 11; do /opt/conda/envs/py3.${i}/bin/python -m pip install --upgrade 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 |