Skip to content

Commit cac6650

Browse files
committed
Makefile fix! Allows hip/clblast build together
1 parent f208670 commit cac6650

File tree

2 files changed

+47
-57
lines changed

2 files changed

+47
-57
lines changed

Makefile

+42-50
Original file line numberDiff line numberDiff line change
@@ -189,49 +189,33 @@ ifdef LLAMA_HIPBLAS
189189
LLAMA_CUDA_DMMV_X ?= 128
190190
LLAMA_CUDA_MMV_Y ?= 1
191191
LLAMA_CUDA_KQUANTS_ITER ?= 1
192-
LLAMA_CUDA_FORCE_DMMV = true
193-
CFLAGS += -DGGML_USE_HIPBLAS -DGGML_USE_CUBLAS $(shell $(ROCM_PATH)/bin/hipconfig -C)
194-
CXXFLAGS += -DGGML_USE_HIPBLAS -DGGML_USE_CUBLAS $(shell $(ROCM_PATH)/bin/hipconfig -C)
195-
LDFLAGS += -L/opt/rocm/lib -Wl,-rpath=$(ROCM_PATH)/lib -lhipblas -lamdhip64
196-
OBJS += ggml-cuda.o ggml_v2-cuda.o ggml_v2-cuda-legacy.o
197-
198-
ifdef LLAMA_CUDA_DMMV_X
199-
CXXFLAGS += -DGGML_CUDA_DMMV_X=$(LLAMA_CUDA_DMMV_X)
200-
else
201-
CXXFLAGS += -DGGML_CUDA_DMMV_X=32
202-
endif
203-
ifeq ($(LLAMA_CUDA_FORCE_DMMV), true)
204-
CXXFLAGS += -DGGML_CUDA_FORCE_DMMV
205-
endif
206-
ifdef LLAMA_CUDA_MMV_Y
207-
CXXFLAGS += -DGGML_CUDA_MMV_Y=$(LLAMA_CUDA_MMV_Y)
208-
else ifdef LLAMA_CUDA_DMMV_Y
209-
CXXFLAGS += -DGGML_CUDA_MMV_Y=$(LLAMA_CUDA_DMMV_Y) # for backwards compatibility
210-
else
211-
CXXFLAGS += -DGGML_CUDA_MMV_Y=1
212-
endif
213-
214-
ifdef LLAMA_CUDA_KQUANTS_ITER
215-
CXXFLAGS += -DK_QUANTS_PER_ITERATION=$(LLAMA_CUDA_KQUANTS_ITER)
216-
else
217-
CXXFLAGS += -DK_QUANTS_PER_ITERATION=2
218-
endif
219-
220-
ggml-cuda.o: CXXFLAGS += $(addprefix --offload-arch=,$(GPU_TARGETS))
221-
222-
223-
# DGGML_CUDA_DMMV_F16 does not currently work with AMD.
192+
LLAMA_CUDA_FORCE_DMMV ?= true
193+
HIPFLAGS += -DGGML_USE_HIPBLAS -DGGML_USE_CUBLAS $(shell $(ROCM_PATH)/bin/hipconfig -C)
194+
HIPLDFLAGS += -L/opt/rocm/lib -Wl,-rpath=$(ROCM_PATH)/lib -lhipblas -lamdhip64
195+
HIP_OBJS += ggml-cuda.o ggml_v2-cuda.o ggml_v2-cuda-legacy.o
196+
ggml-cuda.o: HIPFLAGS += $(addprefix --offload-arch=,$(GPU_TARGETS)) \
197+
-DGGML_CUDA_DMMV_X=$(LLAMA_CUDA_DMMV_X) \
198+
-DGGML_CUDA_MMV_Y=$(LLAMA_CUDA_MMV_Y) \
199+
-DGGML_CUDA_FORCE_DMMV \
200+
-DK_QUANTS_PER_ITERATION=$(LLAMA_CUDA_KQUANTS_ITER)
201+
ggml_v2-cuda.o: HIPFLAGS += $(addprefix --offload-arch=,$(GPU_TARGETS)) \
202+
-DGGML_CUDA_DMMV_X=$(LLAMA_CUDA_DMMV_X) \
203+
-DGGML_CUDA_MMV_Y=$(LLAMA_CUDA_MMV_Y) \
204+
-DGGML_CUDA_FORCE_DMMV \
205+
-DK_QUANTS_PER_ITERATION=$(LLAMA_CUDA_KQUANTS_ITER)
206+
ggml_v2-cuda-legacy.o: HIPFLAGS += $(addprefix --offload-arch=,$(GPU_TARGETS)) \
207+
-DGGML_CUDA_DMMV_X=$(LLAMA_CUDA_DMMV_X) \
208+
-DGGML_CUDA_MMV_Y=$(LLAMA_CUDA_MMV_Y) \
209+
-DGGML_CUDA_FORCE_DMMV \
210+
-DK_QUANTS_PER_ITERATION=$(LLAMA_CUDA_KQUANTS_ITER) # DGGML_CUDA_DMMV_F16 does not currently work with AMD.
224211
ggml-cuda.o: ggml-cuda.cu ggml-cuda.h
225-
$(CXX) $(CXXFLAGS) -x hip -c -o $@ $<
226-
212+
$(CXX) $(CXXFLAGS) $(HIPFLAGS) -x hip -c -o $@ $<
227213
ggml_v2-cuda.o: otherarch/ggml_v2-cuda.cu otherarch/ggml_v2-cuda.h
228-
$(CXX) $(CXXFLAGS) -x hip -c -o $@ $<
229-
214+
$(CXX) $(CXXFLAGS) $(HIPFLAGS) -x hip -c -o $@ $<
230215
ggml_v2-cuda-legacy.o: otherarch/ggml_v2-cuda-legacy.cu otherarch/ggml_v2-cuda-legacy.h
231-
$(CXX) $(CXXFLAGS) -x hip -c -o $@ $<
216+
$(CXX) $(CXXFLAGS) $(HIPFLAGS) -x hip -c -o $@ $<
232217
endif # LLAMA_HIPBLAS
233218

234-
235219
ifdef LLAMA_METAL
236220
CFLAGS += -DGGML_USE_METAL -DGGML_METAL_NDEBUG
237221
CXXFLAGS += -DGGML_USE_METAL
@@ -267,6 +251,7 @@ OPENBLAS_BUILD =
267251
OPENBLAS_NOAVX2_BUILD =
268252
CLBLAST_BUILD =
269253
CUBLAS_BUILD =
254+
HIPBLAS_BUILD =
270255

271256
ifeq ($(OS),Windows_NT)
272257
DEFAULT_BUILD = $(CXX) $(CXXFLAGS) $^ -shared -o [email protected] $(LDFLAGS)
@@ -275,10 +260,12 @@ ifeq ($(OS),Windows_NT)
275260
OPENBLAS_NOAVX2_BUILD = $(CXX) $(CXXFLAGS) $^ lib/libopenblas.lib -shared -o [email protected] $(LDFLAGS)
276261
CLBLAST_BUILD = $(CXX) $(CXXFLAGS) $^ lib/OpenCL.lib lib/clblast.lib -shared -o [email protected] $(LDFLAGS)
277262

278-
ifdef LLAMA_CUBLAS
279-
CUBLAS_BUILD = $(CXX) $(CXXFLAGS) $(CUBLAS_FLAGS) $^ -shared -o [email protected] $(CUBLASLD_FLAGS) $(LDFLAGS)
280-
endif
281-
263+
ifdef LLAMA_CUBLAS
264+
CUBLAS_BUILD = $(CXX) $(CXXFLAGS) $(CUBLAS_FLAGS) $^ -shared -o [email protected] $(CUBLASLD_FLAGS) $(LDFLAGS)
265+
endif
266+
ifdef LLAMA_HIPBLAS
267+
HIPBLAS_BUILD = $(CXX) $(CXXFLAGS) $(HIPFLAGS) $^ -shared -o [email protected] $(HIPLDFLAGS) $(LDFLAGS)
268+
endif
282269
else
283270
DEFAULT_BUILD = $(CXX) $(CXXFLAGS) $^ -shared -o [email protected] $(LDFLAGS)
284271
FAILSAFE_BUILD = $(CXX) $(CXXFLAGS) $^ -shared -o [email protected] $(LDFLAGS)
@@ -294,17 +281,22 @@ else
294281
endif
295282
endif
296283

297-
ifdef LLAMA_CUBLAS
298-
CUBLAS_BUILD = $(CXX) $(CXXFLAGS) $(CUBLAS_FLAGS) $^ -shared -o [email protected] $(CUBLASLD_FLAGS) $(LDFLAGS)
299-
endif
284+
ifdef LLAMA_CUBLAS
285+
CUBLAS_BUILD = $(CXX) $(CXXFLAGS) $(CUBLAS_FLAGS) $^ -shared -o [email protected] $(CUBLASLD_FLAGS) $(LDFLAGS)
286+
endif
287+
ifdef LLAMA_HIPBLAS
288+
HIPBLAS_BUILD = $(CXX) $(CXXFLAGS) $(HIPFLAGS) $^ -shared -o [email protected] $(HIPLDFLAGS) $(LDFLAGS)
289+
endif
300290

301291
ifndef LLAMA_OPENBLAS
302292
ifndef LLAMA_CLBLAST
303293
ifndef LLAMA_CUBLAS
294+
ifndef LLAMA_HIPBLAS
304295
OPENBLAS_BUILD = @echo 'Your OS $(OS) does not appear to be Windows. For faster speeds, install and link a BLAS library. Set LLAMA_OPENBLAS=1 to compile with OpenBLAS support or LLAMA_CLBLAST=1 to compile with ClBlast support. This is just a reminder, not an error.'
305296
endif
306297
endif
307298
endif
299+
endif
308300
endif
309301

310302

@@ -339,7 +331,7 @@ ggml_openblas_noavx2.o: ggml.c ggml.h
339331
ggml_clblast.o: ggml.c ggml.h
340332
$(CC) $(CFLAGS) $(FULLCFLAGS) $(CLBLAST_FLAGS) -c $< -o $@
341333
ggml_cublas.o: ggml.c ggml.h
342-
$(CC) $(CFLAGS) $(FULLCFLAGS) $(CUBLAS_FLAGS) -c $< -o $@
334+
$(CC) $(CFLAGS) $(FULLCFLAGS) $(CUBLAS_FLAGS) $(HIPFLAGS) -c $< -o $@
343335

344336
#quants K
345337
k_quants.o: k_quants.c k_quants.h ggml.h ggml-cuda.h
@@ -361,7 +353,7 @@ ggml_v2_openblas_noavx2.o: otherarch/ggml_v2.c otherarch/ggml_v2.h
361353
ggml_v2_clblast.o: otherarch/ggml_v2.c otherarch/ggml_v2.h
362354
$(CC) $(CFLAGS) $(FULLCFLAGS) $(CLBLAST_FLAGS) -c $< -o $@
363355
ggml_v2_cublas.o: otherarch/ggml_v2.c otherarch/ggml_v2.h
364-
$(CC) $(CFLAGS) $(FULLCFLAGS) $(CUBLAS_FLAGS) -c $< -o $@
356+
$(CC) $(CFLAGS) $(FULLCFLAGS) $(CUBLAS_FLAGS) $(HIPFLAGS) -c $< -o $@
365357

366358
#extreme old version compat
367359
ggml_v1.o: otherarch/ggml_v1.c otherarch/ggml_v1.h
@@ -391,7 +383,7 @@ gpttype_adapter.o: gpttype_adapter.cpp
391383
gpttype_adapter_clblast.o: gpttype_adapter.cpp
392384
$(CXX) $(CXXFLAGS) $(CLBLAST_FLAGS) -c $< -o $@
393385
gpttype_adapter_cublas.o: gpttype_adapter.cpp
394-
$(CXX) $(CXXFLAGS) $(CUBLAS_FLAGS) -c $< -o $@
386+
$(CXX) $(CXXFLAGS) $(CUBLAS_FLAGS) $(HIPFLAGS) -c $< -o $@
395387

396388
clean:
397389
rm -vf *.o main quantize_llama quantize_gpt2 quantize_gptj quantize_neox quantize_mpt quantize-stats perplexity embedding benchmark-matmult save-load-state main.exe quantize_llama.exe quantize_gptj.exe quantize_gpt2.exe quantize_neox.exe quantize_mpt.exe koboldcpp.dll koboldcpp_openblas.dll koboldcpp_failsafe.dll koboldcpp_openblas_noavx2.dll koboldcpp_clblast.dll koboldcpp_cublas.dll koboldcpp.so koboldcpp_openblas.so koboldcpp_failsafe.so koboldcpp_openblas_noavx2.so koboldcpp_clblast.so koboldcpp_cublas.so
@@ -413,8 +405,8 @@ koboldcpp_openblas_noavx2: ggml_openblas_noavx2.o ggml_v2_openblas_noavx2.o ggml
413405
$(OPENBLAS_NOAVX2_BUILD)
414406
koboldcpp_clblast: ggml_clblast.o ggml_v2_clblast.o ggml_v1.o expose.o common.o gpttype_adapter_clblast.o ggml-opencl.o ggml_v2-opencl.o ggml_v2-opencl-legacy.o k_quants.o $(OBJS)
415407
$(CLBLAST_BUILD)
416-
koboldcpp_cublas: ggml_cublas.o ggml_v2_cublas.o ggml_v1.o expose.o common.o gpttype_adapter_cublas.o k_quants.o $(CUBLAS_OBJS) $(OBJS)
417-
$(CUBLAS_BUILD)
408+
koboldcpp_cublas: ggml_cublas.o ggml_v2_cublas.o ggml_v1.o expose.o common.o gpttype_adapter_cublas.o k_quants.o $(CUBLAS_OBJS) $(HIP_OBJS) $(OBJS)
409+
$(CUBLAS_BUILD) $(HIPBLAS_BUILD)
418410

419411
quantize_llama: examples/quantize/quantize.cpp ggml.o llama.o k_quants.o
420412
$(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS)

ggml.c

+5-7
Original file line numberDiff line numberDiff line change
@@ -246,17 +246,15 @@ inline static void* ggml_aligned_malloc(size_t size) {
246246
#if defined(GGML_USE_CLBLAST) // allow usage of CLBlast alongside Accelerate functions
247247
#include "ggml-opencl.h"
248248
#endif
249-
#endif
250-
#if defined(GGML_USE_OPENBLAS)
251-
#include <cblas.h>
252-
#endif
249+
#elif defined(GGML_USE_OPENBLAS)
253250
#if defined(GGML_BLAS_USE_MKL)
254251
#include <mkl.h>
252+
#else
253+
#include <cblas.h>
255254
#endif
256-
#if defined(GGML_USE_CUBLAS)
255+
#elif defined(GGML_USE_CUBLAS)
257256
#include "ggml-cuda.h"
258-
#endif
259-
#if defined(GGML_USE_CLBLAST)
257+
#elif defined(GGML_USE_CLBLAST)
260258
#include "ggml-opencl.h"
261259
#endif
262260

0 commit comments

Comments
 (0)