ubuntu-jammy #117
Workflow file for this run
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: | |
ROCPROFSYS_CI: ON | |
ROCPROFSYS_TMPDIR: "%env{PWD}%/testing-tmp" | |
jobs: | |
ubuntu-jammy-external: | |
runs-on: ubuntu-20.04 | |
container: | |
image: dgaliffiamd/rocprofiler-systems: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: '6.2' | |
- 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 | |
ROCPROFSYS_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 gettext libfabric-dev libiberty-dev libomp-dev libopenmpi-dev libtool m4 openmpi-bin python3-pip texinfo ${{ matrix.compiler }} && | |
python3 -m pip install --upgrade pip && | |
python3 -m pip install numpy perfetto dataclasses && | |
for i in 6 7 8 9 10 11; 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/rocprofiler-systems-dev | |
-DROCPROFSYS_BUILD_TESTING=ON | |
-DROCPROFSYS_USE_MPI=${{ matrix.mpi }} | |
-DROCPROFSYS_USE_HIP=${{ matrix.hip }} | |
-DROCPROFSYS_USE_OMPT=${{ matrix.ompt }} | |
-DROCPROFSYS_USE_PAPI=${{ matrix.papi }} | |
-DROCPROFSYS_USE_PYTHON=${{ matrix.python }} | |
-DROCPROFSYS_USE_MPI_HEADERS=${{ matrix.mpi-headers }} | |
-DROCPROFSYS_BUILD_LTO=${{ matrix.lto }} | |
-DROCPROFSYS_BUILD_DYNINST=${{ matrix.build-dyninst }} | |
-DROCPROFSYS_BUILD_HIDDEN_VISIBILITY=${{ matrix.hidden }} | |
-DROCPROFSYS_BUILD_STATIC_LIBGCC=${{ matrix.static-libgcc }} | |
-DROCPROFSYS_BUILD_STATIC_LIBSTDCXX=${{ matrix.static-libstdcxx }} | |
-DROCPROFSYS_PYTHON_PREFIX=/opt/conda/envs | |
-DROCPROFSYS_PYTHON_ENVS="py3.7;py3.8;py3.9;py3.10;py3.11" | |
-DROCPROFSYS_STRIP_LIBRARIES=${{ matrix.strip }} | |
-DROCPROFSYS_MAX_THREADS=64 | |
-DROCPROFSYS_DISABLE_EXAMPLES="transpose;rccl" | |
-DROCPROFSYS_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/rocprofiler-systems | |
./rocprofiler-systems-*.sh --prefix=/opt/rocprofiler-systems --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/rocprofiler-systems/share/modulefiles | |
module avail | |
module load rocprofiler-systems | |
./scripts/test-install.sh --test-rocprof-sys-{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/rocprofiler-systems | |
- 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/rocprofsys-tests-config/*.cfg | |
build/rocprofsys-tests-output/**/*.txt | |
build/rocprofsys-tests-output/**/*-instr*.json |