Installing hipCIM#

2025-12-10

5 min read time

Applies to Linux

This topic discusses how to install hipCIM using the following options:

System requirements#

ROCm version

Ubuntu version

Python version

AMD Instinct GPU

7.0.2

24.04

3.12

MI300A

6.4.3

22.04

3.10

MI325X

Setting up the environment#

To set up the environment for installing hipCIM, follow these steps:

  1. Optional: Use ROCm Docker to get started.

    • For ROCm 7.0.2, run:

      docker run --cap-add=SYS_PTRACE --ipc=host --privileged=true   \
      --shm-size=128GB --network=host --device=/dev/kfd     \
      --device=/dev/dri --group-add video -it               \
      -v $HOME:$HOME  --name ${LOGNAME}_rocm                \
                                       rocm/dev-ubuntu-24.04:7.0.2-complete
      
    • For ROCm 6.4.3, run:

      docker run --cap-add=SYS_PTRACE --ipc=host --privileged=true   \
      --shm-size=128GB --network=host --device=/dev/kfd     \
      --device=/dev/dri --group-add video -it               \
      -v $HOME:$HOME  --name ${LOGNAME}_rocm                \
                                       rocm/dev-ubuntu-22.04:6.4.3-complete
      

    For bare metal, skip this step.

  2. Install system dependencies. For both ROCm 6.4.3 and 7.0.2, run:

    apt-get update && \
    apt-get install -y software-properties-common lsb-release gnupg && \
    apt-key adv --fetch-keys https://apt.kitware.com/keys/kitware-archive-latest.asc && \
    add-apt-repository -y "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" && \
    mkdir -p /etc/apt/keyrings && \
    curl -fsSL https://repo.radeon.com/rocm/rocm.gpg.key | gpg --dearmor -o /etc/apt/keyrings/rocm.gpg && \
    echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/amdgpu/6.2.1/ubuntu jammy main proprietary" | tee /etc/apt/sources.list.d/amdgpu.list && \
    apt-get update && \
    apt-get install -y git wget gcc g++ ninja-build git-lfs \
                   yasm libopenslide-dev python3 python3-venv \
                   python3-dev libpython3-dev \
                   cmake rocjpeg rocjpeg-dev rocthrust-dev \
                   hipcub hipblas hipblas-dev hipfft hipsparse \
                   hiprand rocsolver rocrand-dev rocm-hip-sdk
    
  3. Create the Python virtual environment.

    python3 -m venv hipcim_dev
    source hipcim_dev/bin/activate
    
  4. Set the environment variables:

    export ROCM_HOME=/opt/rocm
    export AMDGPU_TARGETS=gfx942
    

Building hipCIM from source#

To build hipCIM from source, follow the steps given in this section. hipCIM developers should use this installation method. hipCIM users should use the Installing hipCIM using AMD PyPI

  1. Install dependencies.

    pip install --upgrade pip
    
  2. Download the latest version of hipCIM from the git repository.

    git clone git@github.com:ROCm-LS/hipCIM.git
    cd hipCIM
    
  3. Install the rest of the dependencies.

    pip install -r ./requirements.txt
    
  4. Build and install hipCIM.

    To build the hipCIM library on a ROCm-based AMD system using the development environment, follow these steps:

    1. Build the base C++ libraries.

      ./run_amd build_local cpp release
      
    2. Build the Python bindings.

      ./run_amd build_local hipcim release
      
    3. Install the Python bindings.

      # For ROCm 7.0.2
      python3 -m pip install python/cucim --extra-index-url https://pypi.amd.com/rocm-7.0.2/simple/
      
      # For ROCm 6.4.3
      python3 -m pip install python/cucim --extra-index-url https://pypi.amd.com/simple
      
  1. Verify the installation.

    To verify the installation, follow these steps:

    1. Execute the tests in the base C++ libraries.

      ./run_amd test cpp release
      
    2. Execute the Python tests.

      ./run_amd test_python
      

Getting started#

Here is a sample Python code and its expected output to help you get started.

  • Sample code:

    from cucim import CuImage
    
    img = CuImage("sample_image/oxford.tif")
    resolutions = img.resolutions
    level_dimensions = resolutions["level_dimensions"]
    level_count = resolutions["level_count"]
    
    print(resolutions)
    print(level_count)
    print(level_dimensions)
    
    region = img.read_region([0,0], level_dimensions[level_count - 1], level_count - 1, device="cuda")
    print(region.device)
    
  • Expected output:

    {'level_count': 1, 'level_dimensions': ((601, 81),), 'level_downsamples': (1.0,), 'level_tile_sizes': ((0, 0),)}
    1
    ((601, 81),)
    [Warning] Loading image('sample_image/oxford.tif') with a slow-path. The pixel format of the loaded image would be RGBA (4 channels) instead of RGB!
    cuda