Skip to content

[Issue]: Can't correctly build composable_kernel in rocm-7.0.1 on a server without GPU? #2994

@AngryLoki

Description

@AngryLoki

Problem Description

Recent changes in rocm-7.x tags introduced get_gpu_name_by_id function which is called during CMake configuration.
It seems that it is now impossible to build a fully correct packages for composable_kernel (deb/rpm) on a buildserver that has no GPU (or has GPU different from GPU_TARGETS).

Example, that follows the Readme:

docker run                                     \
--rm                                           \
-it                                            \
--cap-add=SYS_ADMIN                            \  # no access to /dev/kfd; suppose it does not exist, or it is not gfx942
--group-add sudo                               \
-w /root/workspace                             \
-v $(pwd):/root/workspace                      \
ck:latest                                      \
/bin/bash

# Try to build for gfx942
cmake                                                                                             \
-D CMAKE_PREFIX_PATH=/opt/rocm                                                                    \
-D CMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc                                                         \
-D CMAKE_BUILD_TYPE=Release                                                                       \
-D GPU_TARGETS="gfx942" ..

Result:

-- Found Python3: /usr/bin/python3 (found version "3.12.3") found components: Interpreter Development Development.Module Development.Embed 
-- Performing Test HAS_MAX_OCCUPANCY_EXPERIMENTAL
-- Performing Test HAS_MAX_OCCUPANCY_EXPERIMENTAL - Success
GPU query failed (exit 1): 
GPU query failed (exit 1): 
...

CMake lauches the following command:

python /root/workspace/tile_engine/ops/gemm/gemm_instance_builder.py \
    --working_path /root/workspace/build/tile_engine/ops/gemm/fp8/ --datatype fp8 \
    --config_json /root/workspace/tile_engine/ops/gemm/configs/default_config.json --list_blobs

which should produce large /src/composable_kernel/build/tile_engine/ops/gemm/fp8/gemm_instance_blobs.txt, but when current GPU != gfx942, the file is much smaller, which means that resulting library will misbehave on gfx942?

Is it possible to reorganize build scripts so that they could work on buildservers without target GPU?

Operating System

Gentoo

CPU

x86-64

GPU

AMD Instinct MI300X

Other

No response

ROCm Version

ROCm 7.0.1

ROCm Component

Composable Kernel

Steps to Reproduce

No response

(Optional for Linux users) Output of /opt/rocm/bin/rocminfo --support

No response

Additional Information

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions