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

4.2 KiB

myst
myst
html_meta
description lang=en keywords
How to build AMD SMI from source. system, management, interface, contribute, contributing, ROCm, develop, testing

Build AMD SMI from source

To build AMD SMI as part of the ROCm Core SDK, see TheRock build instructions. TheRock is the recommended way to build ROCm components from source.

Alternatively, you can build AMD SMI standalone using the following instructions.

(build_reqs)=

Required software

To build the AMD SMI library, the following components are required. Note that the software versions specified were used during development; earlier versions are not guaranteed to work.

  • CMake (v3.15.0 or later) -- python3 -m pip install cmake
  • g++ (v5.4.0 or later)
  • libdrm-dev (for Ubuntu and Debian)
  • libdrm-devel (for RPM-based distributions)

In order to build the AMD SMI Python package, the following components are required:

  • Python (3.6.8 or later)
  • virtualenv -- python3 -m pip install virtualenv

Users that wish to also build the AMD SMI Rust interface will also need the following components:

  • Rust (1.56 or later)

Build steps

  1. Clone the rocm-systems repository to your local Linux machine and sparse-checkout the AMD SMI project.

    git clone --filter=blob:none --sparse https://github.com/ROCm/rocm-systems.git
    git -C rocm-systems sparse-checkout set projects/amdsmi
    cd rocm-systems/projects/amdsmi
    
  2. The default installation location for the library and headers is /opt/rocm. Before installation, any old ROCm directories should be deleted:

    • /opt/rocm
    • /opt/rocm-<version_number>
  3. Build the library by following the typical CMake build sequence (run as root user or use sudo before make install command); for instance:

    mkdir -p build
    cd build
    cmake ..
    make -j $(nproc)
    make install
    

    The built library is located in the build/ directory. To build the rpm and deb packages use the following command:

    make package
    

(rebuild_py_wrapper)=

Rebuild the Python wrapper

The Python wrapper for the AMD SMI library is found in the auto-generated file py-interface/amdsmi_wrapper.py. It is essential to regenerate this wrapper whenever there are changes to the C++ API. It is not regenerated automatically.

To regenerate the wrapper, use the following command.

./update_wrapper.sh

After this command, the file in py-interface/amdsmi_wrapper.py will be updated on compile.

You need Docker installed on your system to regenerate the Python wrapper.

(build_tests)=

Build the tests

To verify the build and capabilities of AMD SMI on your system, as well as to see practical examples of its usage, you can build and run the available tests in the repository. Follow these steps to build the tests:

mkdir -p build
cd build
cmake -DBUILD_TESTS=ON ..
make -j $(nproc)

(run_tests)=

Run the tests

Once the tests are built, you can run them by executing the amdsmitst program. The executable can be found at build/tests/amd_smi_test/.

(build_docs)=

Build the docs

The C/C++ API reference is generated with Doxygen 1.15.0, which must be installed separately and available on your PATH.

  1. Create a Python virtual environment and install documentation dependencies.

    # From rocm-systems/projects/amdsmi
    python3.12 -m venv docs/.venv
    source docs/.venv/bin/activate
    pip install -r docs/sphinx/requirements.txt
    
  2. Use the following command to build the documentation using Sphinx.

    python -m sphinx docs docs/_build -j auto -E -v
    
  3. Open docs/_build/index.html in your web browser to view the documentation. To serve the site locally instead, run:

    python -m http.server -d docs/_build
    # Go to http://localhost:8000 in your browser
    

For related information, see Building documentation.