Files
TheRock/rocm-systems/projects/hip/docs/install/build.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

200 lines
6.4 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
.. meta::
:description: This page gives instructions on how to build HIP from source.
:keywords: AMD, ROCm, HIP, build, build instructions, source
*******************************************
Build HIP from source
*******************************************
Prerequisites
=================================================
HIP code can be developed on AMD ROCm platform using HIP-Clang compiler.
Before building and running HIP, make sure drivers and prebuilt packages are
installed properly on the platform.
You also need to install Python 3, which includes the ``CppHeaderParser`` package.
Install Python 3 using the following command:
.. code-block:: shell
apt-get install python3
Check and install ``CppHeaderParser`` package using the command:
.. code-block:: shell
pip3 install CppHeaderParser
Install ``ROCm LLVM`` package using the command:
.. code-block:: shell
apt-get install rocm-llvm-dev
.. _Building the HIP runtime:
Building the HIP runtime
==========================================================
HIP is one of the core ROCm projects and resides in the rocm-systems monorepository.
In addition, the monorepository also includes the following components:
* ``clr``, AMD’s Compute Language Runtime, which contains ROCclr, HIPAMD, and OpenCL.
* ``hip-tests``, the HIP testing suite.
Beginning with the TheRock 7.13 release, the rocm-systems codebase is also integrated into the TheRock repository.
Developers may build HIP using one of two methods:
* From ``rocm-systems`` monorepository
* From the ROCm ``TheRock`` repository
This document provides instructions for building HIP from the ``rocm-systems`` monorepository.
For guidance on building HIP using TheRock, see the build documentation included with `TheRock <https://github.com/ROCm/TheRock/blob/main/README.md>`_.
#. Set the repository branch
Set the branch using the variable: ``ROCM_BRANCH``. For example, for TheRock 7.13, use:
.. code-block:: shell
export ROCM_BRANCH=release/therock-7.13
#. Get HIP source code.
.. code-block:: shell
git clone -b "$ROCM_BRANCH" git@github.com:ROCm/rocm-systems.git
#. Set the environment variables.
.. code-block:: shell
export CLR_DIR="$(readlink -f rocm-systems/projects/clr)"
export HIP_DIR="$(readlink -f rocm-systems/projects/hip)"
export ROCM_PATH=/opt/rocm
#. Build HIP.
.. code-block:: shell
cd "$CLR_DIR"
mkdir -p build && cd build
cmake \
-DHIP_COMMON_DIR="$HIP_DIR" \
-DHIP_PLATFORM=amd \
-DCMAKE_PREFIX_PATH="/opt/rocm/" \
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
-DCLR_BUILD_HIP=ON \
-DCLR_BUILD_OCL=OFF \
..
make -j$(nproc)
sudo make install
.. note::
If ``CMAKE_INSTALL_PREFIX`` is not explicitly specified, the HIP runtime will be installed at
``<ROCM_PATH>``, which is by default at the path ``/opt/rocm``.
By default, the release version of HIP is built. If you need a debug version, you can put the option ``CMAKE_BUILD_TYPE=Debug`` in the command line.
Default paths and environment variables:
* HIP is installed into ``<ROCM_PATH>``. This can be overridden by setting the ``INSTALL_PREFIX`` as the command option.
* HSA is in ``<ROCM_PATH>``. This can be overridden by setting the ``HSA_PATH``
environment variable.
* The device library is in ``<ROCM_PATH>/lib``. This can be overridden by setting the
``DEVICE_LIB_PATH`` environment variable.
* Optionally, you can add ``<ROCM_PATH>/bin`` to your ``PATH``, which can make it easier to
use the tools.
After you run the ``make install`` command, HIP is installed to ``<ROCM_PATH>`` by default, or ``$PWD/install/hip`` while ``INSTALL_PREFIX`` is defined.
#. Generate a profiling header after adding/changing a HIP API.
When you add or change a HIP API, you may need to generate a new ``hip_prof_str.h`` header.
This header is used by ROCm tools to track HIP APIs, such as ``rocprofiler`` and ``roctracer``.
To generate the header after your change, use the ``hip_prof_gen.py`` tool located in
``hipamd/src``.
Usage:
.. code-block:: shell
hip_prof_gen.py [-v] <input HIP API .h file> <patched srcs path> <previous output> [<output>]
Flags:
* ``-v``: Verbose messages
* ``-r``: Process source directory recursively
* ``-t``: API types matching check
* ``--priv``: Private API check
* ``-e``: On error exit mode
* ``-p``: ``HIP_INIT_API`` macro patching mode
Example usage:
.. code-block:: shell
hip_prof_gen.py -v -p -t --priv <hip>/include/hip/hip_runtime_api.h \
<hipamd>/src <hipamd>/include/hip/amd_detail/hip_prof_str.h \
<hipamd>/include/hip/amd_detail/hip_prof_str.h.new
Build HIP tests
=================================================
**Build HIP catch tests.**
HIP catch tests are built using AMD's ``amdclang`` compiler.
#. Get HIP tests source code.
.. code-block:: shell
git clone -b "$ROCM_BRANCH" git@github.com:ROCm/rocm-systems.git
export HIPTESTS_DIR="$(readlink -f rocm-systems/projects/hip-tests)"
#. Build HIP tests from source.
.. code-block:: shell
cd "$HIPTESTS_DIR"
mkdir -p build; cd build
export ROCM_PATH=/opt/rocm
cmake ../catch \
-DHIP_PLATFORM=amd \
-DCMAKE_PREFIX_PATH=$CLR_DIR/build/install \
-DCMAKE_CXX_COMPILER=$ROCM_PATH/bin/amdclang++ \
-DCMAKE_C_COMPILER=$ROCM_PATH/bin/amdclang \
-DCMAKE_HIP_COMPILER=$ROCM_PATH/bin/amdclang++ \
-DOFFLOAD_ARCH_STR="--offload-arch=<selected-gpu-arch>"
make build_tests
ctest # run tests
Note: The value of ``OFFLOAD_ARCH_STR`` should match the GPU architecture present on your system (e.g., gfx1200).
You can determine the correct architecture by running the ``rocminfo`` command.
HIP catch tests are built in ``$HIPTESTS_DIR/build``.
To run any single catch test, use this example:
.. code-block:: shell
cd $HIPTESTS_DIR/build/catch_tests/unit/texture
./TextureTest
#. Build a HIP Catch standalone test.
For detailed instructions on building the standalone Catch tests, consult the `hip-tests README.md <https://github.com/ROCm/rocm-systems/blob/develop/projects/hip-tests/README.md>`_.
Run HIP
=================================================
After installation and building HIP, you can compile your application and run.
Simple examples can be found in the `ROCm-examples repository <https://github.com/ROCm/rocm-examples>`_.