diff --git a/.github/workflows/rocprofiler-register-continuous-integration.yml b/.github/workflows/rocprofiler-register-continuous-integration.yml index e0e6b7cd7e..6743204c45 100644 --- a/.github/workflows/rocprofiler-register-continuous-integration.yml +++ b/.github/workflows/rocprofiler-register-continuous-integration.yml @@ -7,10 +7,12 @@ on: 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 }} @@ -47,15 +49,39 @@ jobs: # ci-args: '--memcheck UndefinedBehaviorSanitizer' # ci-tag: '-undefined-behavior-sanitizer' - runs-on: rocprofiler-mi3xx + runs-on: linux-mi325-1gpu-ossci-rocm + 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 + BUILD_TYPE: RelWithDebInfo + INSTALL_PREFIX: /opt/rocprofiler-register + PACKAGING_INSTALL_PREFIX: /opt/rocm + GIT_DISCOVERY_ACROSS_FILESYSTEM: 1 + PATH: /usr/bin:$PATH steps: - - uses: actions/checkout@v4 + - 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 @@ -95,7 +121,6 @@ jobs: shell: bash working-directory: projects/rocprofiler-register run: - cmake --version && python3 ./scripts/run-ci.py -B build --name ${{ github.repository_owner }}-${{ github.ref_name }}-azure-mi300x-${{ matrix.compiler }}${{ matrix.ci-tag }} --build-jobs 2 @@ -123,8 +148,14 @@ jobs: 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') }} @@ -132,8 +163,10 @@ jobs: shell: bash run: | cd projects/rocprofiler-register - CMAKE_PREFIX_PATH=/opt/rocm cmake -B build-tests-deb /opt/rocm/share/rocprofiler-register/tests + 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 diff --git a/.github/workflows/rocprofiler-sdk-build-ci-docker-images.yml b/.github/workflows/rocprofiler-sdk-build-ci-docker-images.yml index 51b135961c..da0680b1a7 100644 --- a/.github/workflows/rocprofiler-sdk-build-ci-docker-images.yml +++ b/.github/workflows/rocprofiler-sdk-build-ci-docker-images.yml @@ -3,7 +3,7 @@ name: rocprofiler-sdk Build CI Docker Images on: workflow_dispatch: schedule: - - cron: '0 6 * * *' + - cron: '0 7 * * *' push: branches: [ develop ] paths: diff --git a/.github/workflows/rocprofiler-sdk-docs.yml b/.github/workflows/rocprofiler-sdk-docs.yml index 80ba36e9af..3ca3496c2f 100644 --- a/.github/workflows/rocprofiler-sdk-docs.yml +++ b/.github/workflows/rocprofiler-sdk-docs.yml @@ -94,6 +94,7 @@ jobs: tar -xf ${{ env.ROCM_PATH }}-gfx94X.tar.gz -C ${{ env.ROCM_PATH }}-${{ env.ROCM_VERSION }} ln -s ${{ env.ROCM_PATH }}-${{ env.ROCM_VERSION }} ${{ env.ROCM_PATH }} echo "ROCm installed to: ${{ env.ROCM_PATH }}" + - name: Install os essentials timeout-minutes: 10 shell: bash @@ -104,12 +105,18 @@ jobs: apt-get update apt-get install -y git echo "PATH=/usr/bin:$PATH" >> "$GITHUB_ENV" + - name: Checkout uses: actions/checkout@v4 with: sparse-checkout: projects/rocprofiler-sdk submodules: true set-safe-directory: true + + - name: Setup + shell: bash + run: git config --global --add safe.directory '*' + - name: Create Docs Directory shell: bash working-directory: projects/rocprofiler-sdk/ @@ -118,6 +125,7 @@ jobs: git config --global --add safe.directory ${GITHUB_WORKSPACE} mkdir -p source/docs/_doxygen/rocprofiler-sdk mkdir -p source/docs/_doxygen/roctx + - name: Install requirements timeout-minutes: 10 shell: bash diff --git a/projects/rocprofiler-register/tests/CMakeLists.txt b/projects/rocprofiler-register/tests/CMakeLists.txt index bb4fb53ab2..988bdcf74a 100644 --- a/projects/rocprofiler-register/tests/CMakeLists.txt +++ b/projects/rocprofiler-register/tests/CMakeLists.txt @@ -164,38 +164,51 @@ function(rocp_register_test_executable _NAME) ${ARGN}) endfunction() + # Build LD_PRELOAD for base test + set(_BASE_PRELOAD "LD_PRELOAD=librocprofiler-register.so") + if(ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_ENV) + set(_BASE_PRELOAD "${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_ENV}") + endif() + rocp_register_add_test( - ${_NAME} ${_NAME} "${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_ENV}" + ${_NAME} ${_NAME} "${_BASE_PRELOAD}" "${RRTE_CORE_PASS_REGEX}" "${RRTE_CORE_FAIL_REGEX}") + # Build LD_PRELOAD list for -preload tests + set(_PRELOAD_LIBS "librocprofiler-register.so" "libgeneric-tool.so") + if(ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_LIBRARY) + list(PREPEND _PRELOAD_LIBS "${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_LIBRARY}") + endif() + list(JOIN _PRELOAD_LIBS ":" _PRELOAD_STRING) + rocp_register_add_test( ${_NAME}-preload ${_NAME} - "LD_PRELOAD=${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_LIBRARY}:libgeneric-tool.so" + "LD_PRELOAD=${_PRELOAD_STRING}" "${RRTE_PRELOAD_PASS_REGEX}" "${RRTE_PRELOAD_FAIL_REGEX}") rocp_register_add_test( ${_NAME}-env ${_NAME} - "ROCP_TOOL_LIBRARIES=libgeneric-tool.so;${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_ENV}" + "LD_PRELOAD=librocprofiler-register.so;ROCP_TOOL_LIBRARIES=libgeneric-tool.so;${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_ENV}" "${RRTE_PRELOAD_PASS_REGEX}" "${RRTE_PRELOAD_FAIL_REGEX}") rocp_register_add_test( ${_NAME}-wrap ${_NAME} - "ROCP_REG_TEST_WRAP=1;${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_ENV}" + "LD_PRELOAD=librocprofiler-register.so;ROCP_REG_TEST_WRAP=1;${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_ENV}" "${RRTE_WRAP_PASS_REGEX}" "${RRTE_WRAP_FAIL_REGEX}") rocp_register_add_test( ${_NAME}-preload-wrap ${_NAME} - "LD_PRELOAD=${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_LIBRARY}:libgeneric-tool.so;ROCP_REG_TEST_WRAP=1" + "LD_PRELOAD=${_PRELOAD_STRING};ROCP_REG_TEST_WRAP=1" "${RRTE_PRELOAD_WRAP_PASS_REGEX}" "${RRTE_PRELOAD_WRAP_FAIL_REGEX}") rocp_register_add_test( ${_NAME}-env-wrap ${_NAME} - "ROCP_TOOL_LIBRARIES=libgeneric-tool.so;ROCP_REG_TEST_WRAP=1;${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_ENV}" + "LD_PRELOAD=librocprofiler-register.so;ROCP_TOOL_LIBRARIES=libgeneric-tool.so;ROCP_REG_TEST_WRAP=1;${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_ENV}" "${RRTE_PRELOAD_WRAP_PASS_REGEX}" "${RRTE_PRELOAD_WRAP_FAIL_REGEX}") @@ -514,7 +527,7 @@ set_tests_properties( test-force-rocprofiler-dlopen PROPERTIES ENVIRONMENT - "LD_LIBRARY_PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY};ROCPROFILER_REGISTER_FORCE_LOAD=1;ROCPROFILER_REGISTER_SECURE=yes;ROCPROFILER_REGISTER_VERBOSE=3;${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_ENV}" + "LD_LIBRARY_PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY};LD_PRELOAD=librocprofiler-register.so;ROCPROFILER_REGISTER_FORCE_LOAD=1;ROCPROFILER_REGISTER_SECURE=yes;ROCPROFILER_REGISTER_VERBOSE=3;${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_ENV}" LABELS "dlopen;secure") @@ -527,7 +540,7 @@ set_tests_properties( test-rocprofiler-register-library-base-path PROPERTIES ENVIRONMENT - "LD_LIBRARY_PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY};ROCPROFILER_REGISTER_LIBRARY=librocprofiler-sdk.so.0;ROCPROFILER_REGISTER_SECURE=yes;ROCPROFILER_REGISTER_VERBOSE=3;ROCPROFILER_REGISTER_MONOCHROME=true;${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_ENV}" + "LD_LIBRARY_PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY};LD_PRELOAD=librocprofiler-register.so;ROCPROFILER_REGISTER_LIBRARY=librocprofiler-sdk.so.0;ROCPROFILER_REGISTER_SECURE=yes;ROCPROFILER_REGISTER_VERBOSE=3;ROCPROFILER_REGISTER_MONOCHROME=true;${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_ENV}" LABELS "dlopen;secure") @@ -540,6 +553,6 @@ set_tests_properties( test-rocprofiler-register-library-absolute-path PROPERTIES ENVIRONMENT - "LD_LIBRARY_PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY};ROCPROFILER_REGISTER_LIBRARY=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/librocprofiler-sdk.so.0;ROCPROFILER_REGISTER_SECURE=yes;ROCPROFILER_REGISTER_VERBOSE=3;ROCPROFILER_REGISTER_MONOCHROME=true;${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_ENV}" + "LD_LIBRARY_PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY};LD_PRELOAD=librocprofiler-register.so;ROCPROFILER_REGISTER_LIBRARY=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/librocprofiler-sdk.so.0;ROCPROFILER_REGISTER_SECURE=yes;ROCPROFILER_REGISTER_VERBOSE=3;ROCPROFILER_REGISTER_MONOCHROME=true;${ROCPROFILER_REGISTER_MEMCHECK_PRELOAD_ENV}" LABELS "dlopen;secure")