@@ -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.
224211ggml-cuda.o: ggml-cuda.cu ggml-cuda.h
225- $(CXX ) $(CXXFLAGS ) -x hip -c -o $@ $<
226-
212+ $(CXX) $(CXXFLAGS) $(HIPFLAGS) -x hip -c -o $@ $<
227213ggml_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 $@ $<
230215ggml_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 $@ $<
232217endif # LLAMA_HIPBLAS
233218
234-
235219ifdef LLAMA_METAL
236220 CFLAGS += -DGGML_USE_METAL -DGGML_METAL_NDEBUG
237221 CXXFLAGS += -DGGML_USE_METAL
@@ -267,6 +251,7 @@ OPENBLAS_BUILD =
267251OPENBLAS_NOAVX2_BUILD =
268252CLBLAST_BUILD =
269253CUBLAS_BUILD =
254+ HIPBLAS_BUILD =
270255
271256ifeq ($(OS ) ,Windows_NT)
272257 DEFAULT_BUILD = $(CXX) $(CXXFLAGS) $^ -shared -o $@.dll $(LDFLAGS)
@@ -275,10 +260,12 @@ ifeq ($(OS),Windows_NT)
275260 OPENBLAS_NOAVX2_BUILD = $(CXX) $(CXXFLAGS) $^ lib/libopenblas.lib -shared -o $@.dll $(LDFLAGS)
276261 CLBLAST_BUILD = $(CXX) $(CXXFLAGS) $^ lib/OpenCL.lib lib/clblast.lib -shared -o $@.dll $(LDFLAGS)
277262
278- ifdef LLAMA_CUBLAS
279- CUBLAS_BUILD = $(CXX) $(CXXFLAGS) $(CUBLAS_FLAGS) $^ -shared -o $@.dll $(CUBLASLD_FLAGS) $(LDFLAGS)
280- endif
281-
263+ ifdef LLAMA_CUBLAS
264+ CUBLAS_BUILD = $(CXX) $(CXXFLAGS) $(CUBLAS_FLAGS) $^ -shared -o $@.dll $(CUBLASLD_FLAGS) $(LDFLAGS)
265+ endif
266+ ifdef LLAMA_HIPBLAS
267+ HIPBLAS_BUILD = $(CXX) $(CXXFLAGS) $(HIPFLAGS) $^ -shared -o $@.dll $(HIPLDFLAGS) $(LDFLAGS)
268+ endif
282269else
283270 DEFAULT_BUILD = $(CXX) $(CXXFLAGS) $^ -shared -o $@.so $(LDFLAGS)
284271 FAILSAFE_BUILD = $(CXX) $(CXXFLAGS) $^ -shared -o $@.so $(LDFLAGS)
@@ -294,17 +281,22 @@ else
294281 endif
295282 endif
296283
297- ifdef LLAMA_CUBLAS
298- CUBLAS_BUILD = $(CXX) $(CXXFLAGS) $(CUBLAS_FLAGS) $^ -shared -o $@.so $(CUBLASLD_FLAGS) $(LDFLAGS)
299- endif
284+ ifdef LLAMA_CUBLAS
285+ CUBLAS_BUILD = $(CXX) $(CXXFLAGS) $(CUBLAS_FLAGS) $^ -shared -o $@.so $(CUBLASLD_FLAGS) $(LDFLAGS)
286+ endif
287+ ifdef LLAMA_HIPBLAS
288+ HIPBLAS_BUILD = $(CXX) $(CXXFLAGS) $(HIPFLAGS) $^ -shared -o $@.so $(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
308300endif
309301
310302
@@ -339,7 +331,7 @@ ggml_openblas_noavx2.o: ggml.c ggml.h
339331ggml_clblast.o : ggml.c ggml.h
340332 $(CC ) $(CFLAGS ) $(FULLCFLAGS ) $(CLBLAST_FLAGS ) -c $< -o $@
341333ggml_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
345337k_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
361353ggml_v2_clblast.o : otherarch/ggml_v2.c otherarch/ggml_v2.h
362354 $(CC ) $(CFLAGS ) $(FULLCFLAGS ) $(CLBLAST_FLAGS ) -c $< -o $@
363355ggml_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
367359ggml_v1.o : otherarch/ggml_v1.c otherarch/ggml_v1.h
@@ -391,7 +383,7 @@ gpttype_adapter.o: gpttype_adapter.cpp
391383gpttype_adapter_clblast.o : gpttype_adapter.cpp
392384 $(CXX ) $(CXXFLAGS ) $(CLBLAST_FLAGS ) -c $< -o $@
393385gpttype_adapter_cublas.o : gpttype_adapter.cpp
394- $(CXX ) $(CXXFLAGS ) $(CUBLAS_FLAGS ) -c $< -o $@
386+ $(CXX ) $(CXXFLAGS ) $(CUBLAS_FLAGS ) $( HIPFLAGS ) -c $< -o $@
395387
396388clean :
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 )
414406koboldcpp_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
419411quantize_llama : examples/quantize/quantize.cpp ggml.o llama.o k_quants.o
420412 $(CXX ) $(CXXFLAGS ) $^ -o $@ $(LDFLAGS )
0 commit comments