ubuntu-jammy #3
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: [ main, develop, 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: [ main, develop, 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 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 |