@@ -372,41 +372,63 @@ if (LLAMA_CLBLAST)
372372endif ()
373373
374374if (LLAMA_HIPBLAS)
375- list (APPEND CMAKE_PREFIX_PATH /opt/rocm)
375+ if (WIN32 )
376+ # todo: also allow building with a separate compiler on windows
377+ list (APPEND CMAKE_PREFIX_PATH /opt/rocm)
376378
377- if (NOT ${CMAKE_C_COMPILER_ID} MATCHES "Clang" )
378- message (WARNING "Only LLVM is supported for HIP, hint: CC=/opt/rocm/llvm/bin/clang" )
379- endif ()
380- if (NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" )
381- message (WARNING "Only LLVM is supported for HIP, hint: CXX=/opt/rocm/llvm/bin/clang++" )
382- endif ()
383-
384- find_package (hip)
385- find_package (hipblas)
386- find_package (rocblas)
387-
388- if (${hipblas_FOUND} AND ${hip_FOUND} )
389- message (STATUS "HIP and hipBLAS found" )
390- add_compile_definitions (GGML_USE_HIPBLAS GGML_USE_CUBLAS)
391- add_library (ggml-rocm OBJECT ggml-cuda.cu ggml-cuda.h)
392- if (BUILD_SHARED_LIBS )
393- set_target_properties (ggml-rocm PROPERTIES POSITION_INDEPENDENT_CODE ON )
379+ if (NOT ${CMAKE_C_COMPILER_ID} MATCHES "Clang" )
380+ message (WARNING "Only LLVM is supported for HIP, hint: CC=/opt/rocm/llvm/bin/clang" )
394381 endif ()
395- if (LLAMA_CUDA_FORCE_DMMV )
396- target_compile_definitions (ggml-rocm PRIVATE GGML_CUDA_FORCE_DMMV )
382+ if (NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" )
383+ message (WARNING "Only LLVM is supported for HIP, hint: CXX=/opt/rocm/llvm/bin/clang++" )
397384 endif ()
398- target_compile_definitions (ggml-rocm PRIVATE GGML_CUDA_DMMV_X=${LLAMA_CUDA_DMMV_X} )
399- target_compile_definitions (ggml-rocm PRIVATE GGML_CUDA_MMV_Y=${LLAMA_CUDA_MMV_Y} )
400- target_compile_definitions (ggml-rocm PRIVATE K_QUANTS_PER_ITERATION=${LLAMA_CUDA_KQUANTS_ITER} )
401- set_source_files_properties (ggml-cuda.cu PROPERTIES LANGUAGE CXX)
402- target_link_libraries (ggml-rocm PRIVATE hip::device PUBLIC hip::host roc::rocblas roc::hipblas)
403385
386+ find_package (hip)
387+ find_package (hipblas)
388+ find_package (rocblas)
389+
390+ if (${hipblas_FOUND} AND ${hip_FOUND} )
391+ message (STATUS "HIP and hipBLAS found" )
392+ add_compile_definitions (GGML_USE_HIPBLAS GGML_USE_CUBLAS)
393+ add_library (ggml-rocm OBJECT ggml-cuda.cu ggml-cuda.h)
394+ if (LLAMA_CUDA_FORCE_DMMV)
395+ target_compile_definitions (ggml-rocm PRIVATE GGML_CUDA_FORCE_DMMV)
396+ endif ()
397+ target_compile_definitions (ggml-rocm PRIVATE GGML_CUDA_DMMV_X=${LLAMA_CUDA_DMMV_X} )
398+ target_compile_definitions (ggml-rocm PRIVATE GGML_CUDA_MMV_Y=${LLAMA_CUDA_MMV_Y} )
399+ target_compile_definitions (ggml-rocm PRIVATE K_QUANTS_PER_ITERATION=${LLAMA_CUDA_KQUANTS_ITER} )
400+ target_compile_definitions (ggml-rocm PRIVATE CC_TURING=1000000000)
401+ set_source_files_properties (ggml-cuda.cu PROPERTIES LANGUAGE CXX)
402+ target_link_libraries (ggml-rocm PRIVATE hip::device PUBLIC hip::host roc::rocblas roc::hipblas)
403+
404+ if (LLAMA_STATIC)
405+ message (FATAL_ERROR "Static linking not supported for HIP/ROCm" )
406+ endif ()
407+ set (LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ggml-rocm)
408+ else ()
409+ message (WARNING "hipBLAS or HIP not found. Try setting CMAKE_PREFIX_PATH=/opt/rocm" )
410+ endif ()
411+ else ()
404412 if (LLAMA_STATIC)
405413 message (FATAL_ERROR "Static linking not supported for HIP/ROCm" )
406414 endif ()
415+ include (ExternalProject)
416+ if (NOT DEFINED LLAMA_ROCM_PROJECT_CMAKE_ARGS)
417+ set (LLAMA_ROCM_PROJECT_CMAKE_ARGS -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} )
418+ endif ()
419+ ExternalProject_Add(ggml-rocm-project
420+ SOURCE_DIR ../ggml-rocm
421+ PREFIX ggml-rocm
422+ INSTALL_COMMAND ""
423+ CMAKE_ARGS ${LLAMA_ROCM_PROJECT_CMAKE_ARGS}
424+ BUILD_BYPRODUCTS ${CMAKE_BINARY_DIR} /bin/libggml-rocm.so
425+ )
426+ add_compile_definitions (GGML_USE_CUBLAS)
427+ add_library (ggml-rocm SHARED IMPORTED )
428+ add_dependencies (ggml-rocm ggml-rocm-project)
429+ set_target_properties (ggml-rocm PROPERTIES IMPORTED_LOCATION ${CMAKE_BINARY_DIR} /bin/libggml-rocm.so)
407430 set (LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ggml-rocm)
408- else ()
409- message (WARNING "hipBLAS or HIP not found. Try setting CMAKE_PREFIX_PATH=/opt/rocm" )
431+ set (GGML_SOURCES_EXTRA ${GGML_SOURCES_EXTRA} ggml-cuda.h)
410432 endif ()
411433endif ()
412434
@@ -762,6 +784,14 @@ if (LLAMA_METAL)
762784 WORLD_READ
763785 DESTINATION ${CMAKE_INSTALL_BINDIR} )
764786endif ()
787+ install (
788+ FILES ${CMAKE_BINARY_DIR} /../ggml-rocm/src/ggml-rocm-project-build /libggml-rocm.so
789+ PERMISSIONS
790+ OWNER_READ
791+ OWNER_WRITE
792+ GROUP_READ
793+ WORLD_READ
794+ DESTINATION ${CMAKE_INSTALL_BINDIR} )
765795
766796#
767797# programs, examples and tests
0 commit comments