Skip to content

Commit b858fc5

Browse files
committed
changes to work with upstream
1 parent 69a0c25 commit b858fc5

File tree

2 files changed

+55
-11
lines changed

2 files changed

+55
-11
lines changed

CMakeLists.txt

+43-2
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,13 @@ if (NOT MSVC)
4141
endif()
4242

4343
# 3rd party libs
44-
option(LLAMA_CUBLAS "llama: use cuBLAS" ON)
45-
44+
option(LLAMA_CUBLAS "llama: use cuBLAS" OFF)
45+
set(LLAMA_CUDA_DMMV_X "32" CACHE STRING "llama: x stride for dmmv CUDA kernels")
46+
set(LLAMA_CUDA_DMMV_Y "1" CACHE STRING "llama: y block size for dmmv CUDA kernels")
47+
option(LLAMA_CUDA_DMMV_F16 "llama: use 16 bit floats for dmmv CUDA kernels" OFF)
48+
set(LLAMA_CUDA_KQUANTS_ITER "2" CACHE STRING "llama: iters./thread per block for Q2_K/Q6_K")
49+
option(LLAMA_HIPBLAS "llama: use hipBLAS" OFF)
50+
option(LLAMA_K_QUANTS "llama: use k-quants" ON)
4651

4752

4853
#
@@ -72,6 +77,12 @@ if (LLAMA_CUBLAS)
7277
set(GGML_V2_LEGACY_CUDA_SOURCES otherarch/ggml_v2-cuda-legacy.cu otherarch/ggml_v2-cuda-legacy.h)
7378

7479
add_compile_definitions(GGML_USE_CUBLAS)
80+
add_compile_definitions(GGML_CUDA_DMMV_X=${LLAMA_CUDA_DMMV_X})
81+
add_compile_definitions(GGML_CUDA_DMMV_Y=${LLAMA_CUDA_DMMV_Y})
82+
if (LLAMA_CUDA_DMMV_F16)
83+
add_compile_definitions(GGML_CUDA_DMMV_F16)
84+
endif()
85+
add_compile_definitions(K_QUANTS_PER_ITERATION=${LLAMA_CUDA_KQUANTS_ITER})
7586

7687
if (LLAMA_STATIC)
7788
set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cudart_static CUDA::cublas_static CUDA::cublasLt_static)
@@ -84,7 +95,37 @@ if (LLAMA_CUBLAS)
8495
endif()
8596
endif()
8697

98+
if (LLAMA_HIPBLAS)
99+
list(APPEND CMAKE_PREFIX_PATH /opt/rocm)
100+
101+
if (NOT ${CMAKE_C_COMPILER_ID} MATCHES "Clang")
102+
message(WARNING "Only LLVM is supported for HIP, hint: CC=/opt/rocm/llvm/bin/clang")
103+
endif()
104+
if (NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
105+
message(WARNING "Only LLVM is supported for HIP, hint: CXX=/opt/rocm/llvm/bin/clang++")
106+
endif()
107+
108+
find_package(hip)
109+
find_package(hipblas)
87110

111+
if (${hipblas_FOUND} AND ${hip_FOUND})
112+
message(STATUS "HIP and hipBLAS found")
113+
add_compile_definitions(GGML_USE_HIPBLAS GGML_USE_CUBLAS)
114+
add_library(ggml-rocm OBJECT ggml-cuda.cu ggml-cuda.h)
115+
target_compile_definitions(ggml-rocm PRIVATE GGML_CUDA_DMMV_X=${LLAMA_CUDA_DMMV_X})
116+
target_compile_definitions(ggml-rocm PRIVATE GGML_CUDA_DMMV_Y=${LLAMA_CUDA_DMMV_Y})
117+
target_compile_definitions(ggml-rocm PRIVATE K_QUANTS_PER_ITERATION=${LLAMA_CUDA_KQUANTS_ITER})
118+
set_source_files_properties(ggml-cuda.cu PROPERTIES LANGUAGE CXX)
119+
target_link_libraries(ggml-rocm PRIVATE hip::device PUBLIC hip::host roc::hipblas)
120+
121+
if (LLAMA_STATIC)
122+
message(FATAL_ERROR "Static linking not supported for HIP/ROCm")
123+
endif()
124+
set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ggml-rocm)
125+
else()
126+
message(WARNING "hipBLAS or HIP not found. Try setting CMAKE_PREFIX_PATH=/opt/rocm")
127+
endif()
128+
endif()
88129

89130
if (LLAMA_ALL_WARNINGS)
90131
if (NOT MSVC)

Makefile

+12-9
Original file line numberDiff line numberDiff line change
@@ -177,22 +177,25 @@ ifdef LLAMA_HIPBLAS
177177
CFLAGS += -DGGML_USE_HIPBLAS -DGGML_USE_CUBLAS $(shell $(ROCM_PATH)/bin/hipconfig -C)
178178
CXXFLAGS += -DGGML_USE_HIPBLAS -DGGML_USE_CUBLAS $(shell $(ROCM_PATH)/bin/hipconfig -C)
179179
LDFLAGS += -L/opt/rocm/lib -Wl,-rpath=$(ROCM_PATH)/lib -lhipblas -lamdhip64
180-
OBJS += ggml-cuda.o ggml_v2-cuda.o
181-
ifdef LLAMA_CUDA_DMMV_F16
182-
CXXFLAGS += -DGGML_CUDA_DMMV_F16
183-
endif # LLAMA_CUDA_DMMV_F16
180+
OBJS += ggml-cuda.o ggml_v2-cuda.o ggml_v2-cuda-legacy.o
181+
184182
ifdef LLAMA_CUDA_KQUANTS_ITER
185183
CXXFLAGS += -DK_QUANTS_PER_ITERATION=$(LLAMA_CUDA_KQUANTS_ITER)
186184
else
187185
CXXFLAGS += -DK_QUANTS_PER_ITERATION=2
188186
endif
189-
ggml-cuda.o: CXXFLAGS += $(addprefix --offload-arch=,$(GPU_TARGETS))
190-
ggml-cuda.o: CXXFLAGS += -DGGML_CUDA_DMMV_X=$(LLAMA_CUDA_DMMV_X)
191-
ggml-cuda.o: CXXFLAGS += -DGGML_CUDA_DMMV_Y=$(LLAMA_CUDA_DMMV_Y)
187+
ggml-cuda.o:
188+
CXXFLAGS += $(addprefix --offload-arch=,$(GPU_TARGETS)) \
189+
-DGGML_CUDA_DMMV_X=$(LLAMA_CUDA_DMMV_X) \
190+
-DGGML_CUDA_DMMV_Y=$(LLAMA_CUDA_DMMV_Y)
191+
# DGGML_CUDA_DMMV_F16 does not currently work with AMD.
192192
ggml-cuda.o: ggml-cuda.cu ggml-cuda.h
193-
$(CXX) $(CXXFLAGS) -x hip -c -o $@ $<
193+
$(CXX) $(CXXFLAGS) -x hip -c -o $@ $<
194194
ggml_v2-cuda.o: otherarch/ggml_v2-cuda.cu otherarch/ggml_v2-cuda.h
195-
$(CXX) $(CXXFLAGS) -x hip -c -o $@ $<
195+
$(CXX) $(CXXFLAGS) -x hip -c -o $@ $<
196+
ggml_v2-cuda-legacy.o: otherarch/ggml_v2-cuda-legacy.cu otherarch/ggml_v2-cuda-legacy.h
197+
$(CXX) $(CXXFLAGS) -x hip -c -o $@ $<
198+
196199
endif # LLAMA_HIPBLAS
197200

198201
ifdef LLAMA_METAL

0 commit comments

Comments
 (0)