mirror of
https://github.com/tcsenpai/ollama.git
synced 2025-06-08 04:05:20 +00:00
arch build
This commit is contained in:
parent
f2f03ff7f2
commit
110f37ffb0
@ -1,7 +1,12 @@
|
|||||||
OS := $(shell uname -s)
|
OS := $(shell uname -s)
|
||||||
|
ARCH := $(or $(ARCH), $(shell uname -m))
|
||||||
NVCC := nvcc
|
NVCC := nvcc
|
||||||
HIPCC := "$(HIP_PATH)/bin/hipcc"
|
HIPCC := "$(HIP_PATH)/bin/hipcc"
|
||||||
|
|
||||||
|
ifeq ($(UNAME_ARCH),x86_64)
|
||||||
|
ARCH := amd64
|
||||||
|
endif
|
||||||
|
|
||||||
# Determine object file extension based on OS
|
# Determine object file extension based on OS
|
||||||
ifeq ($(OS),Windows_NT)
|
ifeq ($(OS),Windows_NT)
|
||||||
OBJ_EXT := obj
|
OBJ_EXT := obj
|
||||||
@ -9,6 +14,12 @@ else
|
|||||||
OBJ_EXT := o
|
OBJ_EXT := o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(OS),Windows_NT)
|
||||||
|
SHARED_EXT := dll
|
||||||
|
else
|
||||||
|
SHARED_EXT := so
|
||||||
|
endif
|
||||||
|
|
||||||
CUDA_SRCS := \
|
CUDA_SRCS := \
|
||||||
ggml-cuda.cu \
|
ggml-cuda.cu \
|
||||||
$(wildcard ggml-cuda/*.cu) \
|
$(wildcard ggml-cuda/*.cu) \
|
||||||
@ -27,7 +38,6 @@ HIP_OBJS := $(CUDA_SRCS:.cu=.hip.$(OBJ_EXT))
|
|||||||
HIP_OBJS := $(HIP_OBJS:.c=.hip.$(OBJ_EXT))
|
HIP_OBJS := $(HIP_OBJS:.c=.hip.$(OBJ_EXT))
|
||||||
HIP_OBJS := $(HIP_OBJS:.cpp=.hip.$(OBJ_EXT))
|
HIP_OBJS := $(HIP_OBJS:.cpp=.hip.$(OBJ_EXT))
|
||||||
|
|
||||||
# TODO (jmorganca): shared flags for cuda/hip
|
|
||||||
CUDA_FLAGS := \
|
CUDA_FLAGS := \
|
||||||
--generate-code=arch=compute_50,code=[compute_50,sm_50] \
|
--generate-code=arch=compute_50,code=[compute_50,sm_50] \
|
||||||
--generate-code=arch=compute_52,code=[compute_52,sm_52] \
|
--generate-code=arch=compute_52,code=[compute_52,sm_52] \
|
||||||
@ -52,7 +62,6 @@ CUDA_FLAGS := \
|
|||||||
-I. \
|
-I. \
|
||||||
-O3
|
-O3
|
||||||
|
|
||||||
|
|
||||||
HIP_ARCHS := gfx900 gfx940 gfx941 gfx942 gfx1010 gfx1012 gfx1030 gfx1100 gfx1101 gfx1102
|
HIP_ARCHS := gfx900 gfx940 gfx941 gfx942 gfx1010 gfx1012 gfx1030 gfx1100 gfx1101 gfx1102
|
||||||
LINUX_HIP_ARCHS := gfx906:xnack- gfx908:xnack- gfx90a:xnack+ gfx90a:xnack-
|
LINUX_HIP_ARCHS := gfx906:xnack- gfx908:xnack- gfx90a:xnack+ gfx90a:xnack-
|
||||||
|
|
||||||
@ -86,48 +95,44 @@ ifeq ($(UNAME_S), Linux)
|
|||||||
HIP_FLAGS += $(foreach arch, $(LINUX_HIP_ARCHS), --offload-arch=$(arch))
|
HIP_FLAGS += $(foreach arch, $(LINUX_HIP_ARCHS), --offload-arch=$(arch))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: ollama_runner_cpu ollama_runner_cpu_avx ollama_runner_cpu_avx2 ollama_runner_cuda ollama_runner_rocm
|
ifeq ($(OS),Darwin)
|
||||||
|
ifeq ($(ARCH),arm64)
|
||||||
|
all: ollama_runner
|
||||||
|
else ifeq ($(ARCH),amd64)
|
||||||
|
all: ollama_runner ollama_runner_avx ollama_runner_avx2
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
all: ollama_runner ollama_runner_avx ollama_runner_avx2 ollama_runner_cuda ollama_runner_rocm
|
||||||
|
endif
|
||||||
|
|
||||||
%.cuda.$(OBJ_EXT): %.cu
|
%.cuda.$(OBJ_EXT): %.cu %.c %.cpp
|
||||||
nvcc -c $(CUDA_FLAGS) -o $@ $<
|
nvcc -c $(CUDA_FLAGS) -o $@ $<
|
||||||
|
|
||||||
%.cuda.$(OBJ_EXT): %.c
|
%.hip.$(OBJ_EXT): %.cu %.c %.cpp
|
||||||
nvcc -c $(CUDA_FLAGS) -o $@ $<
|
|
||||||
|
|
||||||
%.cuda.$(OBJ_EXT): %.cpp
|
|
||||||
nvcc -c $(CUDA_FLAGS) -o $@ $<
|
|
||||||
|
|
||||||
%.hip.$(OBJ_EXT): %.cu
|
|
||||||
$(HIPCC) -c $(HIP_FLAGS) -o $@ $<
|
$(HIPCC) -c $(HIP_FLAGS) -o $@ $<
|
||||||
|
|
||||||
%.hip.$(OBJ_EXT): %.c
|
ggml_cuda.$(SHARED_EXT): $(CUDA_OBJS)
|
||||||
$(HIPCC) -c $(HIP_FLAGS) -o $@ $<
|
|
||||||
|
|
||||||
%.hip.$(OBJ_EXT): %.cpp
|
|
||||||
$(HIPCC) -c $(HIP_FLAGS) -o $@ $<
|
|
||||||
|
|
||||||
ggml_cuda.dll: $(CUDA_OBJS)
|
|
||||||
nvcc --shared -lcuda -lcublas -lcudart -lcublasLt $(CUDA_FLAGS) $(CUDA_OBJS) -o $@
|
nvcc --shared -lcuda -lcublas -lcudart -lcublasLt $(CUDA_FLAGS) $(CUDA_OBJS) -o $@
|
||||||
|
|
||||||
ggml_hipblas.dll: $(HIP_OBJS)
|
ggml_hipblas.$(SHARED_EXT): $(HIP_OBJS)
|
||||||
$(HIPCC) --shared -lhipblas -lamdhip64 -lrocblas $(HIP_OBJS) -o $@
|
$(HIPCC) --shared -lhipblas -lamdhip64 -lrocblas $(HIP_OBJS) -o $@
|
||||||
|
|
||||||
ollama_runner_cpu:
|
ollama_runner:
|
||||||
go build -ldflags "-s -w" -o $@ ./runner
|
CGO_ENABLED=1 GOARCH=$(ARCH) go build -ldflags "-s -w" -o $@ ./runner
|
||||||
|
|
||||||
ollama_runner_cpu_avx:
|
ollama_runner_avx:
|
||||||
go build -ldflags "-s -w" -tags avx -o $@ ./runner
|
CGO_ENABLED=1 GOARCH=$(ARCH) go build -ldflags "-s -w" -tags avx -o $@ ./runner
|
||||||
|
|
||||||
ollama_runner_cpu_avx2:
|
ollama_runner_avx2:
|
||||||
go build -ldflags "-s -w" -tags avx,avx2 -o $@ ./runner
|
CGO_ENABLED=1 GOARCH=$(ARCH) go build -ldflags "-s -w" -tags avx,avx2 -o $@ ./runner
|
||||||
|
|
||||||
ollama_runner_cuda: ggml_cuda.dll
|
ollama_runner_cuda: ggml_cuda.dll
|
||||||
go build -ldflags "-s -w" -tags avx,cuda -o $@ ./runner
|
CGO_ENABLED=1 GOARCH=$(ARCH) go build -ldflags "-s -w" -tags avx,cuda -o $@ ./runner
|
||||||
|
|
||||||
ollama_runner_rocm: ggml_hipblas.dll
|
ollama_runner_rocm: ggml_hipblas.dll
|
||||||
go build -ldflags "-s -w" -tags avx,rocm -o $@ ./runner
|
CGO_ENABLED=1 GOARCH=$(ARCH) go build -ldflags "-s -w" -tags avx,rocm -o $@ ./runner
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(CUDA_OBJS) $(HIP_OBJS) ggml_cuda.dll ggml_cuda.exp ggml_cuda.lib ggml_hipblas.dll ggml_hipblas.lib ggml_hipblas.exp ollama_runner_cpu ollama_runner_cpu_avx ollama_runner_cpu_avx2 ollama_runner_cuda ollama_runner_rocm
|
rm -f $(CUDA_OBJS) $(HIP_OBJS) ggml_cuda.$(SHARED_EXT) ggml_cuda.* ggml_hipblas.* ollama_runner*
|
||||||
|
|
||||||
.PHONY: all clean ollama_runner_cpu ollama_runner_cpu_avx ollama_runner_cpu_avx2 ollama_runner_cuda ollama_runner_rocm
|
.PHONY: all clean ollama_runner_cpu ollama_runner_cpu_avx ollama_runner_cpu_avx2 ollama_runner_cuda ollama_runner_rocm
|
||||||
|
@ -2,9 +2,9 @@ package llama
|
|||||||
|
|
||||||
// #cgo CFLAGS: -std=c11 -DNDEBUG -DLOG_DISABLE_LOGS
|
// #cgo CFLAGS: -std=c11 -DNDEBUG -DLOG_DISABLE_LOGS
|
||||||
// #cgo CXXFLAGS: -std=c++11 -DNDEBUG -DLOG_DISABLE_LOGS
|
// #cgo CXXFLAGS: -std=c++11 -DNDEBUG -DLOG_DISABLE_LOGS
|
||||||
// #cgo darwin,arm64 CFLAGS: -DGGML_USE_METAL -DGGML_METAL_EMBED_LIBRARY -DGGML_USE_ACCELERATE -DACCELERATE_NEW_LAPACK -DACCELERATE_LAPACK_ILP64
|
// #cgo darwin,arm64 CFLAGS: -DGGML_USE_METAL -DGGML_USE_ACCELERATE -DACCELERATE_NEW_LAPACK -DACCELERATE_LAPACK_ILP64
|
||||||
// #cgo darwin,arm64 CXXFLAGS: -DGGML_USE_METAL -DGGML_METAL_EMBED_LIBRARY -DGGML_USE_ACCELERATE -DACCELERATE_NEW_LAPACK -DACCELERATE_LAPACK_ILP64
|
// #cgo darwin,arm64 CXXFLAGS: -DGGML_USE_METAL -DGGML_USE_ACCELERATE -DACCELERATE_NEW_LAPACK -DACCELERATE_LAPACK_ILP64
|
||||||
// #cgo darwin,arm64 LDFLAGS: ${SRCDIR}/ggml-metal.o -framework Foundation -framework Metal -framework MetalKit -framework Accelerate
|
// #cgo darwin,arm64 LDFLAGS: -framework Foundation -framework Metal -framework MetalKit -framework Accelerate
|
||||||
// #cgo darwin,amd64 CFLAGS: -Wno-incompatible-pointer-types-discards-qualifiers
|
// #cgo darwin,amd64 CFLAGS: -Wno-incompatible-pointer-types-discards-qualifiers
|
||||||
// #cgo darwin,amd64 CXXFLAGS: -Wno-incompatible-pointer-types-discards-qualifiers
|
// #cgo darwin,amd64 CXXFLAGS: -Wno-incompatible-pointer-types-discards-qualifiers
|
||||||
// #cgo darwin,amd64 LDFLAGS: -framework Foundation
|
// #cgo darwin,amd64 LDFLAGS: -framework Foundation
|
||||||
|
Loading…
x
Reference in New Issue
Block a user