Files
TheRock/rocm-systems/projects/rocprofiler-compute/docs/install/source-install.rst
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

299 lines
11 KiB
ReStructuredText

.. meta::
:description: ROCm Compute Profiler installation and deployment
:keywords: rocm, comp, compute, perf, rocprofiler-compute, Instinct, accelerator, AMD,
install, deploy, client, configuration, modulefiles, sanitizer
*****************************************
Install ROCm Compute Profiler from source
*****************************************
The core ROCm Compute Profiler application requires the following basic software
dependencies. As of ROCm 6.2, the core ROCm Compute Profiler is included with your ROCm
installation.
* Python ``>= 3.8``
* CMake ``>= 3.19``
* ROCm ``>= 5.7.1``
.. note::
ROCm Compute Profiler will use the first version of ``python3`` found in your system's
``PATH``. If the default version of Python is older than 3.8, you may need to
update your system's ``PATH`` to point to a newer version.
ROCm Compute Profiler depends on a number of Python packages documented in the top-level
``requirements.txt`` file. Install these *before* configuring ROCm Compute Profiler.
.. tip::
If looking to build ROCm Compute Profiler as a developer, consider these additional
requirements.
.. list-table::
* - ``docs/sphinx/requirements.txt``
- Python packages required to build this documentation from source.
* - ``requirements-test.txt``
- Python packages required to run ROCm Compute Profiler's CI suite using PyTest.
When building with ``ENABLE_TESTS=ON``, ``TORCH_TRACE_PYTHON`` selects the Python
interpreter for the ``roctx_recordfn`` test build.
The recommended procedure for ROCm Compute Profiler usage is to install into a shared file
system so that multiple users can access the final installation. The
following steps illustrate how to install the necessary Python dependencies
using `pip <https://packaging.python.org/en/latest/>`_ and ROCm Compute Profiler into a
shared location controlled by the ``INSTALL_DIR`` environment variable.
.. _core-install-cmake-vars:
Configuration variables
-----------------------
The following installation steps leverage several
`CMake <https://cmake.org/cmake/help/latest>`_ project variables defined as
follows.
.. list-table::
:header-rows: 1
* - CMake variable
- Description
* - ``CMAKE_INSTALL_PREFIX``
- Controls the install path for ROCm Compute Profiler files.
* - ``PYTHON_DEPS``
- Specifies an optional path to resolve Python package dependencies.
* - ``MOD_INSTALL_PATH``
- Specifies an optional path for separate ROCm Compute Profiler modulefile installation.
* - ``rocprofiler-sdk_DIR``
- Specifies the path to the ROCprofiler-SDK CMake package configuration directory used to build the rocprofiler-compute counter collection tool.
This directory should contain ``rocprofiler-sdkConfig.cmake`` (for example, ``<rocprofiler-sdk-install-path>/lib/cmake/rocprofiler-sdk``).
* - ``STANDALONEBINARY_EXTRACT_DIR``
- Specifies an optional temporary path to be used for extraction by the ROCm Compute Profiler standalone binary.
* - ``STANDALONEBINARY``
- Should be ON to enable the build of a standalone binary for ROCm Compute Profiler.
* - ``TEST_FROM_INSTALL``
- Should be ON to enable testing from the installation location without dependency on the source directory.
* - ``SKIP_NATIVE_TOOL_BUILD``
- Should be ON to skip building the native profiling tool. When enabled, the native tool will be compiled at runtime instead of build time. This is useful when ROCprofiler-SDK is not available during build time.
* - ``ENABLE_SANITIZER``
- Builds with sanitizer instrumentation for development.
One of ``OFF`` (default), ``ASAN``, ``HOST_ASAN``, ``TSAN``, or ``UBSAN``. See
:ref:`sanitizer builds <source-install-sanitizers>`. Cannot be combined with
``STANDALONEBINARY=ON``.
.. _core-install-steps:
.. _source-install:
Install from source
-------------------
#. Sparse clone the repository `<https://github.com/ROCm/rocm-systems>`_ to get the ROCm Compute Profiler source code.
.. code-block:: shell
git clone --no-checkout --filter=blob:none https://github.com/ROCm/rocm-systems.git
cd rocm-systems
git sparse-checkout init --cone
git sparse-checkout set projects/rocprofiler-compute
git checkout develop
#. Navigate to the `rocprofiler-compute` project root.
.. datatemplate:nodata::
.. code-block:: shell
cd projects/rocprofiler-compute
#. Install Python dependencies in a virtual environment, complete the ROCm Compute Profiler configuration and install process.
.. datatemplate:nodata::
.. code-block:: shell
# define top-level install path
export INSTALL_DIR=<your-top-level-desired-install-path>
# install python deps
python3 -m pip install -t ${INSTALL_DIR}/python-libs -r requirements.txt
# configure ROCm Compute Profiler for shared install
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}/{{ config.version }} \
-DPYTHON_DEPS=${INSTALL_DIR}/python-libs \
-DMOD_INSTALL_PATH=${INSTALL_DIR}/modulefiles/rocprofiler-compute ..
# install
make -j$(nproc) install
.. tip::
You might need to ``sudo`` the final installation step if you don't have
write access for the chosen installation path.
#. Upon successful installation, your top-level installation directory should
look like this.
.. datatemplate:nodata::
.. code-block:: shell
$ ls $INSTALL_DIR
modulefiles {{ config.version }} python-libs
.. _source-install-sanitizers:
Sanitizer builds
----------------
For development, you can build with sanitizer instrumentation. This is opt-in and
off by default; set ``ENABLE_SANITIZER`` at configure time to one of the following.
.. list-table::
:header-rows: 1
* - Value
- Instrumentation
* - ``OFF`` (default)
- No sanitizer instrumentation.
* - ``ASAN``
- AddressSanitizer on both host and device code.
* - ``HOST_ASAN``
- AddressSanitizer on host code only; GPU targets are left unchanged.
* - ``TSAN``
- ThreadSanitizer for data-race detection.
* - ``UBSAN``
- UndefinedBehaviorSanitizer on host code only.
Add ``-DENABLE_SANITIZER=`` to the configure step. For example, to build with
AddressSanitizer.
.. datatemplate:nodata::
.. code-block:: shell
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}/{{ config.version }} \
-DPYTHON_DEPS=${INSTALL_DIR}/python-libs \
-DMOD_INSTALL_PATH=${INSTALL_DIR}/modulefiles/rocprofiler-compute \
-DENABLE_SANITIZER=ASAN ..
.. note::
``ENABLE_SANITIZER`` cannot be combined with ``STANDALONEBINARY=ON``.
For device-side instrumentation with ``ASAN`` or ``TSAN`` on ``gfx942`` or
``gfx950``, pass ``-DGPU_TARGETS=...`` so the targets are rewritten to
``:xnack+``. If ``GPU_TARGETS`` is unset, device-side instrumentation is
skipped.
.. _core-install-modulefiles:
Execution using modulefiles
---------------------------
The installation process includes the creation of an environment modulefile for
use with `Lmod <https://lmod.readthedocs.io>`_. On systems that support Lmod,
you can register the ROCm Compute Profiler modulefile directory and setup your environment
for execution of ROCm Compute Profiler as follows.
.. datatemplate:nodata::
.. code-block:: shell
$ module use $INSTALL_DIR/modulefiles
$ module load rocprofiler-compute
$ which rocprof-compute
/opt/apps/rocprofiler-compute/{{ config.version }}/bin/rocprof-compute
$ rocprof-compute --version
----------------------------------------
rocprofiler-compute version: {{ config.version }} (release)
Git revision: abc1234
----------------------------------------
.. tip::
If you're relying on an Lmod Python module locally, you may wish to customize
the resulting ROCm Compute Profiler modulefile post-installation to include extra
module dependencies.
Execution without modulefiles
------------------------------
To use ROCm Compute Profiler without the companion modulefile, update your ``PATH``
settings to enable access to the command line binary. If you installed Python
dependencies in a shared location, also update your ``PYTHONPATH``
configuration.
.. datatemplate:nodata::
.. code-block:: shell
export PATH=$INSTALL_DIR/{{ config.version }}/bin:$PATH
export PYTHONPATH=$INSTALL_DIR/python-libs
.. tip::
To always run ROCm Compute Profiler with a particular version of Python, you can create a
bash alias. For example, to run ROCm Compute Profiler with Python 3.8, you can run the
following command:
.. code-block:: shell
alias rocprof-compute-mypython="/usr/bin/python3.8 /opt/rocm/bin/rocprof-compute"
.. _core-install-rocprof-var:
Configuring the environment for profiling
=========================================
ROCm Compute Profiler supports two profiling backends, selectable via the ``ROCPROF`` environment variable.
.. list-table::
:header-rows: 1
:widths: 20 40 40
* - Backend
- How it is selected
- How it works
* - ``rocprofiler-sdk`` (**default**)
- ``ROCPROF`` unset, or ``ROCPROF=rocprofiler-sdk``
- Injects ``librocprofiler-sdk-tool.so`` into the target application process via ``LD_PRELOAD``. The application runs directly; profiling is configured through environment variables.
* - ``rocprofv3``
- ``ROCPROF=rocprofv3`` or ``ROCPROF=<path-to-rocprofv3>``
- Launches the ``rocprofv3`` binary as a wrapper process around the target application. Profiling is configured via ``rocprofv3`` command-line arguments.
Both backends build on the same underlying ROCprofiler-SDK infrastructure. The ``rocprofiler-sdk`` backend is recommended because it supports the full feature set, including :ref:`iteration multiplexing <iteration-multiplexing>`.
.. _core-install-native-tool:
Native counter collection tool
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
When using the ``rocprofiler-sdk`` backend on ROCm 7.0 or later, ROCm Compute Profiler also injects a native counter collection tool (``librocprofiler-compute-tool.so``) alongside the SDK tool via ``LD_PRELOAD``. This tool is a shared library built as part of ROCm Compute Profiler that directly uses the ROCprofiler-SDK public C API to collect hardware performance counter data per kernel dispatch.
The division of responsibility between the two injected libraries is:
* **Native tool** (``librocprofiler-compute-tool.so``): collects hardware performance counters per dispatch.
* **SDK tool** (``librocprofiler-sdk-tool.so``): handles kernel tracing and output database generation.
The native tool is required for :ref:`iteration multiplexing <iteration-multiplexing>`. Use ``--no-native-tool`` to disable it, but note that doing so also disables iteration multiplexing. The native tool is not used in :doc:`dynamic process attachment mode <../how-to/live_attach_detach>` or with the ``rocprofv3`` backend.