Tiered CUDA acceleration for routed experts (opt-in, CPU default untouched) + REPLAY fixture harness (#16)
* feat: add experimental CUDA backend for resident tensors * feat: promote pinned experts to a bounded VRAM tier * feat: preload the GPU expert tier at startup * fix: harden CUDA backend failure handling * feat: add deterministic multi-GPU tensor placement * test: add deterministic CUDA benchmark fixture * perf: make routed experts the default CUDA path
This commit is contained in:
+29
-3
@@ -28,10 +28,36 @@ CFLAGS = -O3 -march=$(ARCH) -fopenmp -Wall -Wextra -Wno-unused-parameter -Wno-m
|
||||
LDFLAGS = -lm -fopenmp
|
||||
endif
|
||||
|
||||
# CUDA=1 adds an opt-in backend for resident tensors. The default build remains
|
||||
# pure C and keeps the original zero-dependency runtime.
|
||||
CUDA ?= 0
|
||||
CUDA_HOME ?= /usr/local/cuda
|
||||
NVCC ?= $(CUDA_HOME)/bin/nvcc
|
||||
CUDA_ARCH ?= native
|
||||
NVCCFLAGS ?= -O3 -std=c++17 -arch=$(CUDA_ARCH) -Xcompiler=-Wall,-Wextra
|
||||
CUDA_OBJ =
|
||||
ifeq ($(CUDA),1)
|
||||
ifeq ($(UNAME_S),Darwin)
|
||||
$(error CUDA=1 is supported only on Linux)
|
||||
endif
|
||||
CFLAGS += -DCOLI_CUDA
|
||||
LDFLAGS += -L$(CUDA_HOME)/lib64 -Wl,-rpath,$(CUDA_HOME)/lib64 -lcudart -lstdc++
|
||||
CUDA_OBJ = backend_cuda.o
|
||||
endif
|
||||
|
||||
all: glm
|
||||
|
||||
glm: glm.c st.h json.h tok.h tok_unicode.h compat.h
|
||||
$(CC) $(CFLAGS) glm.c -o glm $(LDFLAGS)
|
||||
glm: glm.c st.h json.h tok.h tok_unicode.h compat.h $(CUDA_OBJ)
|
||||
$(CC) $(CFLAGS) glm.c $(CUDA_OBJ) -o glm $(LDFLAGS)
|
||||
|
||||
backend_cuda.o: backend_cuda.cu backend_cuda.h
|
||||
@command -v $(NVCC) >/dev/null 2>&1 || { echo "nvcc not found: set CUDA_HOME or NVCC" >&2; exit 1; }
|
||||
$(NVCC) $(NVCCFLAGS) -c backend_cuda.cu -o $@
|
||||
|
||||
cuda-test: backend_cuda.cu backend_cuda.h backend_cuda_test.cu
|
||||
@command -v $(NVCC) >/dev/null 2>&1 || { echo "nvcc not found: set CUDA_HOME or NVCC" >&2; exit 1; }
|
||||
$(NVCC) $(NVCCFLAGS) backend_cuda.cu backend_cuda_test.cu -o backend_cuda_test
|
||||
./backend_cuda_test
|
||||
|
||||
olmoe: olmoe.c st.h json.h
|
||||
$(CC) $(CFLAGS) olmoe.c -o olmoe $(LDFLAGS)
|
||||
@@ -41,4 +67,4 @@ portable:
|
||||
$(MAKE) glm ARCH=x86-64-v3
|
||||
|
||||
clean:
|
||||
rm -f olmoe glm
|
||||
rm -f olmoe glm backend_cuda.o backend_cuda_test
|
||||
|
||||
Reference in New Issue
Block a user