Skip to content

Commit af5fdec

Browse files
committed
ROCm: use native CMake HIP support (ggml-org#5966)
Only CMakeLists.txt.
1 parent 422fe85 commit af5fdec

File tree

1 file changed

+24
-9
lines changed

1 file changed

+24
-9
lines changed

CMakeLists.txt

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -542,16 +542,26 @@ if (LLAMA_VULKAN)
542542
endif()
543543

544544
if (LLAMA_HIPBLAS)
545-
list(APPEND CMAKE_PREFIX_PATH /opt/rocm)
546-
547-
if (NOT ${CMAKE_C_COMPILER_ID} MATCHES "Clang")
548-
message(WARNING "Only LLVM is supported for HIP, hint: CC=/opt/rocm/llvm/bin/clang")
545+
if ($ENV{ROCM_PATH})
546+
set(ROCM_PATH $ENV{ROCM_PATH})
547+
else()
548+
set(ROCM_PATH /opt/rocm)
549549
endif()
550+
list(APPEND CMAKE_PREFIX_PATH ${ROCM_PATH})
550551

551-
if (NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
552-
message(WARNING "Only LLVM is supported for HIP, hint: CXX=/opt/rocm/llvm/bin/clang++")
553-
endif()
552+
string(REGEX MATCH "hipcc(\.bat)?$" CXX_IS_HIPCC "${CMAKE_CXX_COMPILER}")
554553

554+
if (CXX_IS_HIPCC AND UNIX)
555+
message(WARNING "Setting hipcc as the C++ compiler is legacy behavior."
556+
" Prefer setting the HIP compiler directly. See README for details.")
557+
else()
558+
# Forward AMDGPU_TARGETS to CMAKE_HIP_ARCHITECTURES.
559+
if (AMDGPU_TARGETS AND NOT CMAKE_HIP_ARCHITECTURES)
560+
set(CMAKE_HIP_ARCHITECTURES ${AMDGPU_ARGETS})
561+
endif()
562+
cmake_minimum_required(VERSION 3.21)
563+
enable_language(HIP)
564+
endif()
555565
find_package(hip REQUIRED)
556566
find_package(hipblas REQUIRED)
557567
find_package(rocblas REQUIRED)
@@ -585,13 +595,18 @@ if (LLAMA_HIPBLAS)
585595
add_compile_definitions(GGML_CUDA_MMV_Y=${LLAMA_CUDA_MMV_Y})
586596
add_compile_definitions(K_QUANTS_PER_ITERATION=${LLAMA_CUDA_KQUANTS_ITER})
587597

588-
set_source_files_properties(${GGML_SOURCES_ROCM} PROPERTIES LANGUAGE CXX)
598+
if (CXX_IS_HIPCC)
599+
set_source_files_properties(${GGML_SOURCES_ROCM} PROPERTIES LANGUAGE CXX)
600+
set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} hip::device)
601+
else()
602+
set_source_files_properties(${GGML_SOURCES_ROCM} PROPERTIES LANGUAGE HIP)
603+
endif()
589604

590605
if (LLAMA_STATIC)
591606
message(FATAL_ERROR "Static linking not supported for HIP/ROCm")
592607
endif()
593608

594-
set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} hip::device PUBLIC hip::host roc::rocblas roc::hipblas)
609+
set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} PUBLIC hip::host roc::rocblas roc::hipblas)
595610
endif()
596611

597612
if (LLAMA_SYCL)

0 commit comments

Comments
 (0)