diff --git a/projects/rocprofiler-systems/.github/workflows/containers.yml b/projects/rocprofiler-systems/.github/workflows/containers.yml index cf57d613ac..86d12fcf4d 100644 --- a/projects/rocprofiler-systems/.github/workflows/containers.yml +++ b/projects/rocprofiler-systems/.github/workflows/containers.yml @@ -33,6 +33,8 @@ jobs: version: "20.04" - distro: "ubuntu" version: "22.04" + - distro: "ubuntu" + version: "24.04" - distro: "opensuse" version: "15.5" - distro: "opensuse" @@ -104,6 +106,16 @@ jobs: - os-distro: "ubuntu" os-version: "22.04" rocm-version: "6.3" + # ubuntu 24.04 + - os-distro: "ubuntu" + os-version: "24.04" + rocm-version: "0.0" + - os-distro: "ubuntu" + os-version: "24.04" + rocm-version: "6.2" + - os-distro: "ubuntu" + os-version: "24.04" + rocm-version: "6.3" # opensuse 15.5 - os-distro: "opensuse" os-version: "15.5" diff --git a/projects/rocprofiler-systems/.github/workflows/cpack.yml b/projects/rocprofiler-systems/.github/workflows/cpack.yml index 29f20ab7c0..5bb01cea1f 100644 --- a/projects/rocprofiler-systems/.github/workflows/cpack.yml +++ b/projects/rocprofiler-systems/.github/workflows/cpack.yml @@ -53,6 +53,16 @@ jobs: - os-distro: "ubuntu" os-version: "22.04" rocm-version: "6.3" + # ubuntu 24.04 + - os-distro: "ubuntu" + os-version: "24.04" + rocm-version: "0.0" + - os-distro: "ubuntu" + os-version: "24.04" + rocm-version: "6.2" + - os-distro: "ubuntu" + os-version: "24.04" + rocm-version: "6.3" # opensuse 15.5 - os-distro: "opensuse" os-version: "15.5" diff --git a/projects/rocprofiler-systems/.github/workflows/ubuntu-focal.yml b/projects/rocprofiler-systems/.github/workflows/ubuntu-focal.yml index 67c72611ec..31e813d1d0 100644 --- a/projects/rocprofiler-systems/.github/workflows/ubuntu-focal.yml +++ b/projects/rocprofiler-systems/.github/workflows/ubuntu-focal.yml @@ -428,7 +428,12 @@ jobs: max_attempts: 5 command: | sudo apt-get update && - sudo apt-get install -y autoconf bison build-essential clang environment-modules gettext libomp-dev libtool m4 python3-pip texinfo ${{ matrix.compiler }} ${{ matrix.deps }} && + sudo apt-get install -y \ + autoconf autotools-dev bash-completion bison build-essential \ + bzip2 cmake curl environment-modules flex gettext git-core gnupg2 \ + gzip libiberty-dev libomp-dev libpapi-dev libpfm4-dev libtool locales \ + lsb-release m4 python3-pip texinfo unzip wget zip zlib1g-dev \ + ${{ matrix.deps }} ${{ matrix.compiler }} && if [ "${{ matrix.mpi }}" = "mpich" ]; then sudo apt-get install -y libmpich-dev mpich; fi && if [ "${{ matrix.mpi }}" = "openmpi" ]; then sudo apt-get install -y libopenmpi-dev openmpi-bin libfabric-dev; fi && wget https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v47.0/linux-amd64/trace_processor_shell -P /opt/trace_processor/bin && diff --git a/projects/rocprofiler-systems/.github/workflows/ubuntu-jammy.yml b/projects/rocprofiler-systems/.github/workflows/ubuntu-jammy.yml index 0bdc77ff6f..47026737c0 100644 --- a/projects/rocprofiler-systems/.github/workflows/ubuntu-jammy.yml +++ b/projects/rocprofiler-systems/.github/workflows/ubuntu-jammy.yml @@ -111,7 +111,9 @@ jobs: 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 }} && + 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 --upgrade numpy perfetto dataclasses && python3 -m pip install 'cmake==3.18.4' && diff --git a/projects/rocprofiler-systems/.github/workflows/ubuntu-noble.yml b/projects/rocprofiler-systems/.github/workflows/ubuntu-noble.yml new file mode 100644 index 0000000000..30e03dd784 --- /dev/null +++ b/projects/rocprofiler-systems/.github/workflows/ubuntu-noble.yml @@ -0,0 +1,112 @@ +name: Ubuntu 24.04 (GCC, Python, ROCm) +run-name: ubuntu-noble + +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' + - '.github/workflows/weekly-mainline-sync.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' + - '.github/workflows/weekly-mainline-sync.yml' + - 'docker/**' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +env: + ROCPROFSYS_CI: ON + ROCPROFSYS_TMPDIR: "%env{PWD}%/testing-tmp" + +jobs: + ubuntu-noble: + runs-on: ubuntu-20.04 + container: + image: dgaliffiamd/rocprofiler-systems:ci-base-ubuntu-24.04 + strategy: + fail-fast: false + matrix: + compiler: ['g++'] + build-type: ['Release', 'Debug'] + strip: ['OFF'] + build-dyninst: ['OFF'] + rocm-version: ['0.0', '6.3'] + + env: + 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 -y update && apt-get upgrade -y && + apt-get install -y \ + libiberty-dev clang libomp-dev libopenmpi-dev libfabric-dev \ + openmpi-bin ${{ matrix.compiler }} && + for i in 8 9 10 11 12; do /opt/conda/envs/py3.${i}/bin/python -m pip install numpy perfetto dataclasses; done + + - name: Install ROCm Packages + if: ${{ matrix.rocm-version > 0 }} + timeout-minutes: 30 + shell: bash + run: | + ROCM_VERSION=${{ matrix.rocm-version }} + ROCM_MAJOR=$(echo ${ROCM_VERSION} | sed 's/\./ /g' | awk '{print $1}') + ROCM_MINOR=$(echo ${ROCM_VERSION} | sed 's/\./ /g' | awk '{print $2}') + ROCM_VERSN=$(( (${ROCM_MAJOR}*10000)+(${ROCM_MINOR}*100) )) + echo "ROCM_MAJOR=${ROCM_MAJOR} ROCM_MINOR=${ROCM_MINOR} ROCM_VERSN=${ROCM_VERSN}" + wget -q https://repo.radeon.com/amdgpu-install/${{ matrix.rocm-version }}/ubuntu/noble/amdgpu-install_${ROCM_MAJOR}.${ROCM_MINOR}.${ROCM_VERSN}-1_all.deb + apt-get install -y ./amdgpu-install_${ROCM_MAJOR}.${ROCM_MINOR}.${ROCM_VERSN}-1_all.deb + apt-get update + apt-get install -y rocm-dev + + - name: Configure + timeout-minutes: 30 + shell: bash + run: | + git config --global --add safe.directory ${PWD} && + cmake --version + USE_ROCM=OFF + if [ ${{ matrix.rocm-version }} != "0.0" ]; then USE_ROCM=ON; fi + cmake -B build \ + -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 \ + -DROCPROFSYS_BUILD_TESTING=ON \ + -DROCPROFSYS_DISABLE_EXAMPLES="transpose;rccl" \ + -DROCPROFSYS_USE_HIP=${USE_ROCM} \ + -DRCOPROFSYS_USE_PYTHON=ON \ + -DROCPROFSYS_STRIP_LIBRARIES=${{ matrix.strip }} \ + -DROCPROFSYS_PYTHON_PREFIX=/opt/conda/envs \ + -DROCPROFSYS_PYTHON_ENVS="py3.8;py3.9;py3.10;py3.11;py3.12" + + - name: Build + timeout-minutes: 115 + run: cmake --build build --parallel 2 diff --git a/projects/rocprofiler-systems/docker/Dockerfile.ubuntu b/projects/rocprofiler-systems/docker/Dockerfile.ubuntu index 02e5c58fd9..d41fcb9c85 100644 --- a/projects/rocprofiler-systems/docker/Dockerfile.ubuntu +++ b/projects/rocprofiler-systems/docker/Dockerfile.ubuntu @@ -25,10 +25,15 @@ ENV PATH ${HOME}/.local/bin:${PATH} RUN apt-get update && \ apt-get dist-upgrade -y && \ apt-get install -y apt-utils autoconf autotools-dev bash-completion bison \ - build-essential cmake curl git-core gnupg2 libnuma1 libopenmpi-dev \ + build-essential cmake curl flex gettext git-core gnupg2 libnuma1 libopenmpi-dev \ libpapi-dev libpfm4-dev librpm-dev libtool libudev1 lsb-release m4 \ python3-pip rpm texinfo wget && \ - python3 -m pip install 'cmake==3.18.4' + OS_VERSION=$(cat /etc/os-release | grep VERSION_ID | sed 's/=/ /'1 | awk '{print $NF}' | sed 's/"//g') && \ + if [ "${OS_VERSION}" == "24.04" ]; then \ + python3 -m pip install --break-system-packages 'cmake==3.18.4'; \ + else \ + python3 -m pip install 'cmake==3.18.4'; \ + fi RUN if [ "${ROCM_VERSION}" != "0.0" ]; then \ wget https://repo.radeon.com/amdgpu-install/${ROCM_VERSION}/ubuntu/${ROCM_REPO_DIST}/${AMDGPU_DEB} && \ diff --git a/projects/rocprofiler-systems/docker/Dockerfile.ubuntu.ci b/projects/rocprofiler-systems/docker/Dockerfile.ubuntu.ci index c505bc32d0..5058ef81c1 100644 --- a/projects/rocprofiler-systems/docker/Dockerfile.ubuntu.ci +++ b/projects/rocprofiler-systems/docker/Dockerfile.ubuntu.ci @@ -26,11 +26,15 @@ ENV CMAKE_PREFIX_PATH /usr/local:${CMAKE_PREFIX_PATH} RUN apt-get update && \ apt-get dist-upgrade -y && \ apt-get install -y autoconf autotools-dev bash-completion bison build-essential \ - bzip2 cmake curl environment-modules git-core gnupg2 gzip libiberty-dev \ - libpapi-dev libpfm4-dev libtool locales lsb-release m4 python3-pip texinfo \ - unzip wget zip zlib1g-dev && \ + bzip2 cmake curl environment-modules flex gettext git-core gnupg2 gzip \ + libiberty-dev libpapi-dev libpfm4-dev libtool locales lsb-release m4 \ + python3-pip texinfo unzip wget zip zlib1g-dev && \ apt-get autoclean && \ - python3 -m pip install 'cmake==3.18.4' + if [ "${OS_VERSION}" == "24.04" ]; then \ + python3 -m pip install --break-system-packages 'cmake==3.18.4' \ + else \ + python3 -m pip install 'cmake==3.18.4'; \ + fi COPY ./dyninst-source /tmp/dyninst diff --git a/projects/rocprofiler-systems/docker/build-docker.sh b/projects/rocprofiler-systems/docker/build-docker.sh index 79656307d6..94d7fb5c66 100755 --- a/projects/rocprofiler-systems/docker/build-docker.sh +++ b/projects/rocprofiler-systems/docker/build-docker.sh @@ -176,6 +176,9 @@ do case "${ROCM_VERSION}" in 6.*) case "${VERSION}" in + 24.04) + ROCM_REPO_DIST="noble" + ;; 22.04) ROCM_REPO_DIST="jammy" ;; diff --git a/projects/rocprofiler-systems/source/lib/rocprof-sys/library/runtime.cpp b/projects/rocprofiler-systems/source/lib/rocprof-sys/library/runtime.cpp index db0827102a..373234c3e0 100644 --- a/projects/rocprofiler-systems/source/lib/rocprof-sys/library/runtime.cpp +++ b/projects/rocprofiler-systems/source/lib/rocprof-sys/library/runtime.cpp @@ -63,11 +63,11 @@ auto& get_sampling_on_child_threads_history(int64_t _idx = utility::get_thread_index()) { static auto _v = utility::get_filled_array( - []() { return utility::get_reserved_vector(32); }); + []() { return utility::get_reserved_vector(64); }); if(_idx >= ROCPROFSYS_MAX_THREADS) { - static thread_local auto _tl_v = utility::get_reserved_vector(32); + static thread_local auto _tl_v = utility::get_reserved_vector(128); return _tl_v; }