Files
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

155 lines
5.1 KiB
ReStructuredText

.. meta::
:description: How to build and install the hipFile Cython-based Python bindings, including prerequisites, virtual environment setup, and CMake override variables.
:keywords: hipFile, Python bindings, Cython, install, ROCm, scikit-build-core, wheel, editable install
************************************
Install the hipFile Python bindings
************************************
This page covers building and installing the Cython-based Python bindings for
the hipFile C library. Before following these steps, you must have the hipFile C
library already built or installed. See :doc:`/install/build-from-source` for
instructions on building the C library.
Prerequisites
===============
The Python bindings require the following software:
- Python >= 3.10 with the ``venv`` module
- Cython (installed into your virtual environment)
- scikit-build-core (used as the build backend)
- python-build (the ``build`` front-end, or ``pip`` for editable installs)
- CMake (version 3.21 or later)
- A C compiler (for building the Cython-generated C extension)
- hipFile C library (``libhipfile.so``): built or installed before the Python bindings
- hipFile C development header (``hipfile.h``)
- HIP development headers (``hip/hip_runtime_api.h``)
.. note::
The Python bindings currently support only the AMD platform.
Set up a virtual environment
==============================
Create and activate a Python virtual environment before installing dependencies
or building the bindings:
.. code:: shell
python3 -m venv .venv
source .venv/bin/activate
Install the required Python build tools inside the virtual environment:
.. code:: shell
pip install cython scikit-build-core build
Build the hipFile C library
============================
The Python bindings link against ``libhipfile.so`` and include ``hipfile.h``. You
must build or install the C library before building the Python package.
If you are building from source, follow the steps in
:doc:`/install/build-from-source`. Note the paths to the build output directory
and the ``include/`` directory: you may need them for the override variables
described below.
Build the Python wheel
========================
Navigate to the ``python/`` directory inside the hipFile source tree and build
the wheel:
.. code:: shell
cd projects/hipfile/python
python -m build --wheel
The build system uses CMake (via scikit-build-core) to locate the hipFile
headers, the hipFile shared library, and the HIP runtime headers. By default, it
searches:
- The sibling ``../include`` directory (relative to the ``python/`` directory)
is searched for ``hipfile.h``, with ``/opt/rocm/include`` as a fallback
location
- The sibling ``../build/src/amd_detail`` directory is searched for
``libhipfile.so``, with ``/opt/rocm/lib`` as a fallback location
If these default paths do not match your environment, use the override variables
described in :ref:`python-cmake-overrides`.
Install an editable package
=============================
For development, you can install the Python package in editable mode. An
editable install lets you modify the Python source code and see changes
immediately without rebuilding or reinstalling the package. Changes to the
Cython source code still require a rebuild.
.. code:: shell
cd projects/hipfile/python
pip install -e .
.. _python-cmake-overrides:
CMake override variables
==========================
If the hipFile library, hipFile headers, or HIP headers are installed in
non-default locations, pass override variables to CMake through the build
front-end. Use the ``-Ccmake.define.<KEY>=<VALUE>`` syntax with
``python -m build``, or set them as environment-specific CMake variables with
``pip``.
.. list-table::
:header-rows: 1
:widths: 30 70
* - Variable
- Description
* - ``HIPFILE_INCLUDE_DIR``
- Path to the directory containing ``hipfile.h``. Defaults to ``../include`` (relative to ``python/``) or ``/opt/rocm/include``.
* - ``HIPFILE_LIBRARY``
- Path to ``libhipfile.so``. Defaults to ``../build/src/amd_detail`` or ``/opt/rocm/lib``.
* - ``HIP_INCLUDE_DIR``
- Path to the directory containing ``hip/hip_runtime_api.h``. Defaults to ``/opt/rocm/include``.
For example, to specify a custom hipFile install location when building the
wheel:
.. code:: shell
python -m build --wheel \
-Ccmake.define.HIPFILE_INCLUDE_DIR=/path/to/hipfile/include \
-Ccmake.define.HIPFILE_LIBRARY=/path/to/lib \
-Ccmake.define.HIP_INCLUDE_DIR=/opt/rocm/include
Or with ``pip install``:
.. code:: shell
pip install -e . \
-Ccmake.define.HIPFILE_INCLUDE_DIR=/path/to/hipfile/include \
-Ccmake.define.HIPFILE_LIBRARY=/path/to/lib
.. warning::
If CMake cannot locate ``hipfile.h``, ``libhipfile.so``, or
``hip/hip_runtime_api.h``, the build fails with a ``FATAL_ERROR`` message
indicating which path to set.
Confirm the installation
=============================
After building and installing the wheel, or using an editable install, confirm
that the bindings are importable:
.. code:: shell
python -c "import hipfile; print('hipFile Python bindings loaded successfully')"