1d5a6e9bfe
* Update rocprofiler workflows to use new runner naming for mi325 * Add input options to workflow_dispatch for rocprofiler-systems CI workflow * Update runner name on therock-ci-linux.yml as well
229 строки
7.9 KiB
YAML
229 строки
7.9 KiB
YAML
name: rocprofiler-register Continuous Integration
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- develop
|
|
paths:
|
|
- 'projects/rocprofiler-register/**'
|
|
- '!projects/rocprofiler-register/*.md'
|
|
- '.github/workflows/rocprofiler-register-continuous-integration.yml'
|
|
pull_request:
|
|
paths:
|
|
- 'projects/rocprofiler-register/**'
|
|
- '!projects/rocprofiler-register/*.md'
|
|
- '.github/workflows/rocprofiler-register-continuous-integration.yml'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
ci:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
compiler: ['clang-14', 'clang-15', 'gcc-11', 'gcc-12']
|
|
ci-args: ['']
|
|
ci-tag: ['']
|
|
include:
|
|
- compiler: 'gcc-12'
|
|
ci-args: '--coverage'
|
|
ci-tag: '-codecov'
|
|
- compiler: 'clang-15'
|
|
ci-args: '--linter clang-tidy'
|
|
ci-tag: '-clang-tidy'
|
|
- compiler: 'clang-13'
|
|
ci-args: ''
|
|
ci-tag: ''
|
|
- compiler: 'gcc-12'
|
|
ci-args: '--memcheck ThreadSanitizer'
|
|
ci-tag: '-thread-sanitizer'
|
|
- compiler: 'gcc-12'
|
|
ci-args: '--memcheck AddressSanitizer'
|
|
ci-tag: '-address-sanitizer'
|
|
- compiler: 'gcc-12'
|
|
ci-args: '--memcheck LeakSanitizer'
|
|
ci-tag: '-leak-sanitizer'
|
|
# - compiler: 'gcc-12'
|
|
# ci-args: '--memcheck UndefinedBehaviorSanitizer'
|
|
# ci-tag: '-undefined-behavior-sanitizer'
|
|
|
|
runs-on: linux-mi325-1gpu-ossci-rocm-frac
|
|
container:
|
|
image: docker.io/rocm/rocprofiler-private:ubuntu-22.04-gfx94X-latest
|
|
credentials:
|
|
username: ${{ secrets.ROCPROFILER_AZURE_CI_USER }}
|
|
password: ${{ secrets.ROCPROFILER_AZURE_CI_PASS }}
|
|
options: --privileged --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
|
|
|
|
env:
|
|
BUILD_TYPE: RelWithDebInfo
|
|
INSTALL_PREFIX: /opt/rocprofiler-register
|
|
PACKAGING_INSTALL_PREFIX: /opt/rocm
|
|
GIT_DISCOVERY_ACROSS_FILESYSTEM: 1
|
|
PATH: /usr/bin:$PATH
|
|
|
|
steps:
|
|
- name: Install Latest Nightly ROCm
|
|
shell: bash
|
|
working-directory: /tmp
|
|
run: |
|
|
tar -xf ${{ env.PACKAGING_INSTALL_PREFIX }}-gfx94X.tar.gz -C ${{ env.PACKAGING_INSTALL_PREFIX }}
|
|
echo "ROCm installed to: ${{ env.PACKAGING_INSTALL_PREFIX }}"
|
|
|
|
- name: Setup Git
|
|
shell: bash
|
|
run: |
|
|
apt-get update
|
|
apt-get install -y software-properties-common
|
|
add-apt-repository ppa:git-core/ppa
|
|
apt update
|
|
apt install -y git
|
|
|
|
- uses: actions/checkout@v5
|
|
with:
|
|
sparse-checkout: projects/rocprofiler-register
|
|
submodules: true
|
|
set-safe-directory: true
|
|
|
|
- name: Install Packages
|
|
timeout-minutes: 25
|
|
run: |
|
|
cd projects/rocprofiler-register
|
|
CC=${{ matrix.compiler }} &&
|
|
CXX=$(echo ${{ matrix.compiler }} | sed 's/clang-/clang++-/1' | sed 's/gcc-/g++-/1') &&
|
|
apt-get update &&
|
|
apt-get install -y build-essential python3 environment-modules ${{ matrix.compiler }} ${CXX} &&
|
|
update-alternatives --install /usr/bin/cc cc /usr/bin/${CC} 100 &&
|
|
update-alternatives --install /usr/bin/c++ c++ /usr/bin/${CXX} 100 &&
|
|
python3 -m pip install --upgrade pip &&
|
|
python3 -m pip install 'cmake==3.22.0' &&
|
|
python3 -m pip install -r requirements.txt
|
|
|
|
- name: Setup GCov
|
|
timeout-minutes: 25
|
|
if: ${{ matrix.compiler == 'gcc-12' }}
|
|
run: |
|
|
cd projects/rocprofiler-register
|
|
update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-12 100
|
|
|
|
- name: Setup Clang-Tidy
|
|
timeout-minutes: 25
|
|
if: ${{ matrix.compiler == 'clang-15' }}
|
|
run: |
|
|
cd projects/rocprofiler-register
|
|
apt-get install -y clang-tidy-15
|
|
update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-15 100
|
|
|
|
- name: Configure, Build, and Test
|
|
timeout-minutes: 115
|
|
shell: bash
|
|
working-directory: projects/rocprofiler-register
|
|
run:
|
|
python3 ./scripts/run-ci.py -B build
|
|
--name ${{ github.repository_owner }}-${{ github.ref_name }}-azure-mi300x-${{ matrix.compiler }}${{ matrix.ci-tag }}
|
|
--build-jobs 2
|
|
--site GitHub
|
|
${{ matrix.ci-args }}
|
|
--disable-cdash
|
|
--
|
|
-DCMAKE_C_COMPILER=/usr/bin/cc
|
|
-DCMAKE_CXX_COMPILER=/usr/bin/c++
|
|
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }}
|
|
-DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_PREFIX }}
|
|
-DROCPROFILER_REGISTER_BUILD_TESTS=ON
|
|
-DROCPROFILER_REGISTER_BUILD_SAMPLES=ON
|
|
--
|
|
-VV
|
|
|
|
- name: Install
|
|
timeout-minutes: 10
|
|
working-directory: projects/rocprofiler-register
|
|
run:
|
|
cmake --build build --target install --parallel 2
|
|
|
|
- name: CPack and Install
|
|
working-directory: projects/rocprofiler-register
|
|
run: |
|
|
cd build
|
|
cpack -G STGZ
|
|
rm -rf ${{ env.PACKAGING_INSTALL_PREFIX }}/lib/*rocprofiler-register* \
|
|
${{ env.PACKAGING_INSTALL_PREFIX }}/lib/cmake/*rocprofiler-register* \
|
|
${{ env.PACKAGING_INSTALL_PREFIX }}/share/*rocprofiler-register* \
|
|
${{ env.PACKAGING_INSTALL_PREFIX }}/libexec/*rocprofiler-register* \
|
|
${{ env.PACKAGING_INSTALL_PREFIX }}/include/rocprofiler-register
|
|
mkdir -p ${{ env.PACKAGING_INSTALL_PREFIX }}
|
|
./rocprofiler-register-*-Linux.sh --prefix=${{ env.PACKAGING_INSTALL_PREFIX }} --exclude-subdir --skip-license
|
|
ls -lah ${{ env.PACKAGING_INSTALL_PREFIX }}/lib
|
|
|
|
- name: Test Installed Packages
|
|
if: ${{ contains(matrix.compiler, 'clang-15') }}
|
|
timeout-minutes: 10
|
|
shell: bash
|
|
run: |
|
|
cd projects/rocprofiler-register
|
|
CMAKE_PREFIX_PATH=/opt/rocm cmake -B build-tests-deb
|
|
cmake --build build-tests-deb --target all --parallel 16
|
|
export PATH=${{ env.PACKAGING_INSTALL_PREFIX }}/bin:$PATH
|
|
export LD_LIBRARY_PATH=${{ env.PACKAGING_INSTALL_PREFIX }}/lib:$LD_LIBRARY_PATH
|
|
ctest --test-dir build-tests-deb --output-on-failure
|
|
|
|
- name: Test Install Modulefile
|
|
timeout-minutes: 15
|
|
shell: bash
|
|
run: |
|
|
cd projects/rocprofiler-register
|
|
set -v
|
|
source /usr/share/modules/init/$(basename ${SHELL})
|
|
module use ${{ env.INSTALL_PREFIX }}/share/modulefiles
|
|
module avail
|
|
module load rocprofiler-register
|
|
pushd tests
|
|
BUILD_DIR=${PWD}/build-rocp-reg-modulefile
|
|
cmake -B ${BUILD_DIR} .
|
|
cmake --build ${BUILD_DIR} --target all
|
|
rm -rf ${BUILD_DIR}
|
|
|
|
- name: Test Install Setup Env
|
|
timeout-minutes: 15
|
|
shell: bash
|
|
run: |
|
|
cd projects/rocprofiler-register
|
|
set -v
|
|
source ${{ env.INSTALL_PREFIX }}/share/rocprofiler-register/setup-env.sh
|
|
pushd samples/library-implementation
|
|
BUILD_DIR=${PWD}/build-rocp-reg-setup-env
|
|
cmake -B ${BUILD_DIR} .
|
|
cmake --build ${BUILD_DIR} --target all
|
|
rm -rf ${BUILD_DIR}
|
|
|
|
- name: Test Install CPack Modulefile
|
|
timeout-minutes: 15
|
|
shell: bash
|
|
run: |
|
|
cd projects/rocprofiler-register
|
|
set -v
|
|
source /usr/share/modules/init/$(basename ${SHELL})
|
|
module use ${{ env.PACKAGING_INSTALL_PREFIX }}/share/modulefiles
|
|
module avail
|
|
module load rocprofiler-register
|
|
pushd tests
|
|
BUILD_DIR=${PWD}/build-rocp-reg-modulefile-cpack
|
|
cmake -B ${BUILD_DIR} .
|
|
cmake --build ${BUILD_DIR} --target all
|
|
rm -rf ${BUILD_DIR}
|
|
|
|
- name: Test Install CPack Setup Env
|
|
timeout-minutes: 15
|
|
shell: bash
|
|
run: |
|
|
cd projects/rocprofiler-register
|
|
set -v
|
|
source ${{ env.PACKAGING_INSTALL_PREFIX }}/share/rocprofiler-register/setup-env.sh
|
|
pushd samples/library-implementation
|
|
BUILD_DIR=${PWD}/build-rocp-reg-setup-env-cpack
|
|
cmake -B ${BUILD_DIR} .
|
|
cmake --build ${BUILD_DIR} --target all
|
|
rm -rf ${BUILD_DIR}
|