Skip to content

Commit 0a8ec8b

Browse files
committed
Add GGML_MUSA in Makefile
Signed-off-by: Xiaodong Ye <[email protected]>
1 parent 3f29948 commit 0a8ec8b

File tree

1 file changed

+46
-9
lines changed

1 file changed

+46
-9
lines changed

Makefile

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -526,10 +526,21 @@ ifndef GGML_NO_ACCELERATE
526526
endif
527527
endif # GGML_NO_ACCELERATE
528528

529+
ifdef GGML_MUSA
530+
CC := clang
531+
CXX := clang++
532+
GGML_CUDA := 1
533+
MK_CPPFLAGS += -DGGML_USE_MUSA
534+
endif
535+
529536
ifndef GGML_NO_OPENMP
530537
MK_CPPFLAGS += -DGGML_USE_OPENMP
531538
MK_CFLAGS += -fopenmp
532539
MK_CXXFLAGS += -fopenmp
540+
ifdef GGML_MUSA
541+
MK_CPPFLAGS += -I/usr/lib/llvm-10/include/openmp
542+
MK_LDFLAGS += -L/usr/lib/llvm-10/lib
543+
endif # GGML_MUSA
533544
endif # GGML_NO_OPENMP
534545

535546
ifdef GGML_OPENBLAS
@@ -580,15 +591,27 @@ else
580591
endif # GGML_CUDA_FA_ALL_QUANTS
581592

582593
ifdef GGML_CUDA
583-
ifneq ('', '$(wildcard /opt/cuda)')
584-
CUDA_PATH ?= /opt/cuda
594+
ifdef GGML_MUSA
595+
ifneq ('', '$(wildcard /opt/musa)')
596+
CUDA_PATH ?= /opt/musa
597+
else
598+
CUDA_PATH ?= /usr/local/musa
599+
endif
600+
601+
MK_CPPFLAGS += -DGGML_USE_CUDA -I$(CUDA_PATH)/include
602+
MK_LDFLAGS += -lmusa -lmublas -lmusart -lpthread -ldl -lrt -L$(CUDA_PATH)/lib -L/usr/lib64
603+
MK_NVCCFLAGS += -x musa -mtgpu --cuda-gpu-arch=mp_22
585604
else
586-
CUDA_PATH ?= /usr/local/cuda
587-
endif
605+
ifneq ('', '$(wildcard /opt/cuda)')
606+
CUDA_PATH ?= /opt/cuda
607+
else
608+
CUDA_PATH ?= /usr/local/cuda
609+
endif
588610

589-
MK_CPPFLAGS += -DGGML_USE_CUDA -I$(CUDA_PATH)/include -I$(CUDA_PATH)/targets/$(UNAME_M)-linux/include -DGGML_CUDA_USE_GRAPHS
590-
MK_LDFLAGS += -lcuda -lcublas -lculibos -lcudart -lcublasLt -lpthread -ldl -lrt -L$(CUDA_PATH)/lib64 -L/usr/lib64 -L$(CUDA_PATH)/targets/$(UNAME_M)-linux/lib -L$(CUDA_PATH)/lib64/stubs -L/usr/lib/wsl/lib
591-
MK_NVCCFLAGS += -use_fast_math
611+
MK_CPPFLAGS += -DGGML_USE_CUDA -I$(CUDA_PATH)/include -I$(CUDA_PATH)/targets/$(UNAME_M)-linux/include -DGGML_CUDA_USE_GRAPHS
612+
MK_LDFLAGS += -lcuda -lcublas -lculibos -lcudart -lcublasLt -lpthread -ldl -lrt -L$(CUDA_PATH)/lib64 -L/usr/lib64 -L$(CUDA_PATH)/targets/$(UNAME_M)-linux/lib -L$(CUDA_PATH)/lib64/stubs -L/usr/lib/wsl/lib
613+
MK_NVCCFLAGS += -use_fast_math
614+
endif # GGML_MUSA
592615

593616
OBJ_GGML += ggml/src/ggml-cuda.o
594617
OBJ_GGML += $(patsubst %.cu,%.o,$(wildcard ggml/src/ggml-cuda/*.cu))
@@ -598,9 +621,11 @@ ifdef LLAMA_FATAL_WARNINGS
598621
MK_NVCCFLAGS += -Werror all-warnings
599622
endif # LLAMA_FATAL_WARNINGS
600623

624+
ifndef GGML_MUSA
601625
ifndef JETSON_EOL_MODULE_DETECT
602626
MK_NVCCFLAGS += --forward-unknown-to-host-compiler
603627
endif # JETSON_EOL_MODULE_DETECT
628+
endif # GGML_MUSA
604629

605630
ifdef LLAMA_DEBUG
606631
MK_NVCCFLAGS += -lineinfo
@@ -613,8 +638,12 @@ endif # GGML_CUDA_DEBUG
613638
ifdef GGML_CUDA_NVCC
614639
NVCC = $(CCACHE) $(GGML_CUDA_NVCC)
615640
else
616-
NVCC = $(CCACHE) nvcc
617-
endif #GGML_CUDA_NVCC
641+
ifdef GGML_MUSA
642+
NVCC = $(CCACHE) mcc
643+
else
644+
NVCC = $(CCACHE) nvcc
645+
endif # GGML_MUSA
646+
endif # GGML_CUDA_NVCC
618647

619648
ifdef CUDA_DOCKER_ARCH
620649
MK_NVCCFLAGS += -Wno-deprecated-gpu-targets -arch=$(CUDA_DOCKER_ARCH)
@@ -685,9 +714,15 @@ define NVCC_COMPILE
685714
$(NVCC) -I. -Icommon -D_XOPEN_SOURCE=600 -D_GNU_SOURCE -DNDEBUG -DGGML_USE_CUDA -I/usr/local/cuda/include -I/opt/cuda/include -I/usr/local/cuda/targets/aarch64-linux/include -std=c++11 -O3 $(NVCCFLAGS) $(CPPFLAGS) -Xcompiler "$(CUDA_CXXFLAGS)" -c $< -o $@
686715
endef # NVCC_COMPILE
687716
else
717+
ifdef GGML_MUSA
718+
define NVCC_COMPILE
719+
$(NVCC) $(NVCCFLAGS) $(CPPFLAGS) -c $< -o $@
720+
endef # NVCC_COMPILE
721+
else
688722
define NVCC_COMPILE
689723
$(NVCC) $(NVCCFLAGS) $(CPPFLAGS) -Xcompiler "$(CUDA_CXXFLAGS)" -c $< -o $@
690724
endef # NVCC_COMPILE
725+
endif # GGML_MUSA
691726
endif # JETSON_EOL_MODULE_DETECT
692727

693728
ggml/src/ggml-cuda/%.o: \
@@ -913,6 +948,7 @@ $(info I CXX: $(shell $(CXX) --version | head -n 1))
913948
ifdef GGML_CUDA
914949
$(info I NVCC: $(shell $(NVCC) --version | tail -n 1))
915950
CUDA_VERSION := $(shell $(NVCC) --version | grep -oP 'release (\K[0-9]+\.[0-9])')
951+
ifndef GGML_MUSA
916952
ifeq ($(shell awk -v "v=$(CUDA_VERSION)" 'BEGIN { print (v < 11.7) }'),1)
917953

918954
ifndef CUDA_DOCKER_ARCH
@@ -922,6 +958,7 @@ endif # CUDA_POWER_ARCH
922958
endif # CUDA_DOCKER_ARCH
923959

924960
endif # eq ($(shell echo "$(CUDA_VERSION) < 11.7" | bc),1)
961+
endif # GGML_MUSA
925962
endif # GGML_CUDA
926963
$(info )
927964

0 commit comments

Comments
 (0)