From 909085e685113225115c94ceb7725dbdc5c12503 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Thu, 18 Jun 2026 16:31:27 +0200 Subject: [PATCH 1/6] Build with g++ and hipcc --- src/CMakeLists.txt | 17 ++++++++++++++--- src/{device_hip.cpp => device_hip.hip} | 0 2 files changed, 14 insertions(+), 3 deletions(-) rename src/{device_hip.cpp => device_hip.hip} (100%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 584af30..1de92f4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -23,10 +23,21 @@ if (HWMALLOC_ENABLE_DEVICE) target_link_libraries(hwmalloc PRIVATE CUDA::cudart) elseif (${HWMALLOC_DEVICE_RUNTIME} STREQUAL "hip") find_package(hip REQUIRED) - target_link_libraries(hwmalloc PRIVATE hip::device) + add_library(hip_gpu_code OBJECT device_hip.hip) + set_source_files_properties(hip_kernel.hip PROPERTIES + LANGUAGE HIP + ) + target_link_libraries(hip_gpu_code PRIVATE hip::device) + target_include_directories(hip_gpu_code PRIVATE + "$" + ) + endif() + + if (${HWMALLOC_DEVICE_RUNTIME} STREQUAL "cuda") + target_sources(hwmalloc PRIVATE device_${HWMALLOC_DEVICE_RUNTIME}.cpp) + elseif (${HWMALLOC_DEVICE_RUNTIME} STREQUAL "hip") + target_link_libraries(hwmalloc PRIVATE hip_gpu_code) endif() - - target_sources(hwmalloc PRIVATE device_${HWMALLOC_DEVICE_RUNTIME}.cpp) else() set(HWMALLOC_DEVICE "HWMALLOC_DEVICE_NONE" CACHE INTERNAL "" FORCE) target_sources(hwmalloc PRIVATE device_none.cpp) diff --git a/src/device_hip.cpp b/src/device_hip.hip similarity index 100% rename from src/device_hip.cpp rename to src/device_hip.hip From e1a4baafdb7c3cc172de4232086c12272ff36e0c Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Mon, 13 Jul 2026 11:39:36 +0200 Subject: [PATCH 2/6] Small cleanup --- src/CMakeLists.txt | 4 ++-- src/{device_hip.hip => device_hip.cpp} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename src/{device_hip.hip => device_hip.cpp} (100%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1de92f4..1f82d7f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -23,8 +23,8 @@ if (HWMALLOC_ENABLE_DEVICE) target_link_libraries(hwmalloc PRIVATE CUDA::cudart) elseif (${HWMALLOC_DEVICE_RUNTIME} STREQUAL "hip") find_package(hip REQUIRED) - add_library(hip_gpu_code OBJECT device_hip.hip) - set_source_files_properties(hip_kernel.hip PROPERTIES + add_library(hip_gpu_code OBJECT device_hip.cpp) + set_source_files_properties(device_hip.cpp PROPERTIES LANGUAGE HIP ) target_link_libraries(hip_gpu_code PRIVATE hip::device) diff --git a/src/device_hip.hip b/src/device_hip.cpp similarity index 100% rename from src/device_hip.hip rename to src/device_hip.cpp From b89801bb180fec0f484ec50fae1bbf2985e69018 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Mon, 13 Jul 2026 13:21:32 +0200 Subject: [PATCH 3/6] Fix for oomph compilation --- CMakeLists.txt | 4 ++++ src/CMakeLists.txt | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 53f0271..333af3d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,10 @@ cmake_minimum_required(VERSION 3.17) # TODO: find a workaround to be able to lower the version requirement project(hwmalloc VERSION 0.4.1 LANGUAGES CXX) +if(${HWMALLOC_DEVICE_RUNTIME} STREQUAL "hip") + enable_language(HIP) +endif() + # ------------------------------------------------------------------------------ # Policies # ------------------------------------------------------------------------------ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1f82d7f..9c04c6a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -22,12 +22,11 @@ if (HWMALLOC_ENABLE_DEVICE) find_package(CUDAToolkit REQUIRED) target_link_libraries(hwmalloc PRIVATE CUDA::cudart) elseif (${HWMALLOC_DEVICE_RUNTIME} STREQUAL "hip") - find_package(hip REQUIRED) + message(STATUS "CMAKE_HIP_ARCHITECTURES = ${CMAKE_HIP_ARCHITECTURES}") add_library(hip_gpu_code OBJECT device_hip.cpp) set_source_files_properties(device_hip.cpp PROPERTIES LANGUAGE HIP ) - target_link_libraries(hip_gpu_code PRIVATE hip::device) target_include_directories(hip_gpu_code PRIVATE "$" ) From 31bb511d86ce9ff732256daaa7d4681987f7b1cf Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Mon, 13 Jul 2026 13:29:59 +0200 Subject: [PATCH 4/6] Apply fix for HWMALLOC_DEVICE_RUNTIME --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 333af3d..a73fee3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.17) # TODO: find a workaround to be able to lower the version requirement project(hwmalloc VERSION 0.4.1 LANGUAGES CXX) -if(${HWMALLOC_DEVICE_RUNTIME} STREQUAL "hip") +if(DEFINED HWMALLOC_DEVICE_RUNTIME AND HWMALLOC_DEVICE_RUNTIME STREQUAL "hip") enable_language(HIP) endif() From 8cc8d64e3a6cb99ad6ab274942da1b5f209e2b7e Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Mon, 13 Jul 2026 15:00:25 +0200 Subject: [PATCH 5/6] Refactored the CMakeLists a bit --- CMakeLists.txt | 16 ++++++++++++---- src/CMakeLists.txt | 7 ------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a73fee3..19bca55 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,10 +3,6 @@ cmake_minimum_required(VERSION 3.17) # TODO: find a workaround to be able to lower the version requirement project(hwmalloc VERSION 0.4.1 LANGUAGES CXX) -if(DEFINED HWMALLOC_DEVICE_RUNTIME AND HWMALLOC_DEVICE_RUNTIME STREQUAL "hip") - enable_language(HIP) -endif() - # ------------------------------------------------------------------------------ # Policies # ------------------------------------------------------------------------------ @@ -34,6 +30,18 @@ endif() set(HWMALLOC_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${HWMALLOC_MODULE_PATH}") +if (HWMALLOC_ENABLE_DEVICE) + set(HWMALLOC_DEVICE_RUNTIME "cuda" CACHE STRING "Choose the type of the gpu runtime.") + set_property(CACHE HWMALLOC_DEVICE_RUNTIME PROPERTY STRINGS "cuda" "hip" "emulate") + + string(TOUPPER ${HWMALLOC_DEVICE_RUNTIME} HWMALLOC_DEVICE_RUNTIME_U) + set(HWMALLOC_DEVICE_RUNTIME_ ${HWMALLOC_DEVICE_RUNTIME_U} CACHE INTERNAL "" FORCE) + set(HWMALLOC_DEVICE "HWMALLOC_DEVICE_${HWMALLOC_DEVICE_RUNTIME_}" CACHE INTERNAL "" FORCE) + if (${HWMALLOC_DEVICE_RUNTIME} STREQUAL "hip") + enable_language(HIP) + endif() +endif() + # --------------------------------------------------------------------- # Define main hwmalloc library # --------------------------------------------------------------------- diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9c04c6a..4c037e3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -11,13 +11,6 @@ if (HWMALLOC_ENABLE_LOGGING) endif() if (HWMALLOC_ENABLE_DEVICE) - set(HWMALLOC_DEVICE_RUNTIME "cuda" CACHE STRING "Choose the type of the gpu runtime.") - set_property(CACHE HWMALLOC_DEVICE_RUNTIME PROPERTY STRINGS "cuda" "hip" "emulate") - - string(TOUPPER ${HWMALLOC_DEVICE_RUNTIME} HWMALLOC_DEVICE_RUNTIME_U) - set(HWMALLOC_DEVICE_RUNTIME_ ${HWMALLOC_DEVICE_RUNTIME_U} CACHE INTERNAL "" FORCE) - set(HWMALLOC_DEVICE "HWMALLOC_DEVICE_${HWMALLOC_DEVICE_RUNTIME_}" CACHE INTERNAL "" FORCE) - if (${HWMALLOC_DEVICE_RUNTIME} STREQUAL "cuda") find_package(CUDAToolkit REQUIRED) target_link_libraries(hwmalloc PRIVATE CUDA::cudart) From 879ac17ea529d3c38824717456619a76f1cceaa2 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Tue, 14 Jul 2026 13:24:46 +0200 Subject: [PATCH 6/6] Revert refactoring in CMakeLists.txt and use the correct hip library for device_hip.cpp --- CMakeLists.txt | 12 ------------ src/CMakeLists.txt | 25 +++++++++++-------------- 2 files changed, 11 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 19bca55..53f0271 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,18 +30,6 @@ endif() set(HWMALLOC_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${HWMALLOC_MODULE_PATH}") -if (HWMALLOC_ENABLE_DEVICE) - set(HWMALLOC_DEVICE_RUNTIME "cuda" CACHE STRING "Choose the type of the gpu runtime.") - set_property(CACHE HWMALLOC_DEVICE_RUNTIME PROPERTY STRINGS "cuda" "hip" "emulate") - - string(TOUPPER ${HWMALLOC_DEVICE_RUNTIME} HWMALLOC_DEVICE_RUNTIME_U) - set(HWMALLOC_DEVICE_RUNTIME_ ${HWMALLOC_DEVICE_RUNTIME_U} CACHE INTERNAL "" FORCE) - set(HWMALLOC_DEVICE "HWMALLOC_DEVICE_${HWMALLOC_DEVICE_RUNTIME_}" CACHE INTERNAL "" FORCE) - if (${HWMALLOC_DEVICE_RUNTIME} STREQUAL "hip") - enable_language(HIP) - endif() -endif() - # --------------------------------------------------------------------- # Define main hwmalloc library # --------------------------------------------------------------------- diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4c037e3..3872e14 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -11,25 +11,22 @@ if (HWMALLOC_ENABLE_LOGGING) endif() if (HWMALLOC_ENABLE_DEVICE) + set(HWMALLOC_DEVICE_RUNTIME "cuda" CACHE STRING "Choose the type of the gpu runtime.") + set_property(CACHE HWMALLOC_DEVICE_RUNTIME PROPERTY STRINGS "cuda" "hip" "emulate") + + string(TOUPPER ${HWMALLOC_DEVICE_RUNTIME} HWMALLOC_DEVICE_RUNTIME_U) + set(HWMALLOC_DEVICE_RUNTIME_ ${HWMALLOC_DEVICE_RUNTIME_U} CACHE INTERNAL "" FORCE) + set(HWMALLOC_DEVICE "HWMALLOC_DEVICE_${HWMALLOC_DEVICE_RUNTIME_}" CACHE INTERNAL "" FORCE) + if (${HWMALLOC_DEVICE_RUNTIME} STREQUAL "cuda") find_package(CUDAToolkit REQUIRED) target_link_libraries(hwmalloc PRIVATE CUDA::cudart) elseif (${HWMALLOC_DEVICE_RUNTIME} STREQUAL "hip") - message(STATUS "CMAKE_HIP_ARCHITECTURES = ${CMAKE_HIP_ARCHITECTURES}") - add_library(hip_gpu_code OBJECT device_hip.cpp) - set_source_files_properties(device_hip.cpp PROPERTIES - LANGUAGE HIP - ) - target_include_directories(hip_gpu_code PRIVATE - "$" - ) - endif() - - if (${HWMALLOC_DEVICE_RUNTIME} STREQUAL "cuda") - target_sources(hwmalloc PRIVATE device_${HWMALLOC_DEVICE_RUNTIME}.cpp) - elseif (${HWMALLOC_DEVICE_RUNTIME} STREQUAL "hip") - target_link_libraries(hwmalloc PRIVATE hip_gpu_code) + find_package(hip REQUIRED) + target_link_libraries(hwmalloc PRIVATE hip::host) endif() + + target_sources(hwmalloc PRIVATE device_${HWMALLOC_DEVICE_RUNTIME}.cpp) else() set(HWMALLOC_DEVICE "HWMALLOC_DEVICE_NONE" CACHE INTERNAL "" FORCE) target_sources(hwmalloc PRIVATE device_none.cpp)