From 107bca3e2d9fdd2432161bfb2f3fcc6c591f0a58 Mon Sep 17 00:00:00 2001 From: KyL0N Date: Sun, 25 Feb 2024 17:38:47 +0900 Subject: [PATCH] cuda: improve gpu architecture detection for cuda version < 11.7 --- Makefile | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index f03faf6ed..a36b47a71 100644 --- a/Makefile +++ b/Makefile @@ -402,7 +402,14 @@ endif #LLAMA_CUDA_NVCC ifdef CUDA_DOCKER_ARCH MK_NVCCFLAGS += -Wno-deprecated-gpu-targets -arch=$(CUDA_DOCKER_ARCH) else ifndef CUDA_POWER_ARCH - MK_NVCCFLAGS += -arch=native +# For CUDA versions < 11.7 a target CUDA architecture was provided via nvcc -code-ls +# https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#list-gpu-code-code-ls +CUDA_VERSION := $(shell nvcc --version | grep -oP 'release (\K[0-9]+\.[0-9])') + ifeq ($(shell awk -v "v=$(CUDA_VERSION)" 'BEGIN { print (v < 11.7) }'),1) + MK_NVCCFLAGS += -arch=$(shell $(NVCC) -code-ls | tail -n 1) + else + MK_NVCCFLAGS += -arch=native + endif endif # CUDA_DOCKER_ARCH ifdef LLAMA_CUDA_FORCE_DMMV MK_NVCCFLAGS += -DGGML_CUDA_FORCE_DMMV @@ -597,14 +604,6 @@ $(info I CC: $(shell $(CC) --version | head -n 1)) $(info I CXX: $(shell $(CXX) --version | head -n 1)) ifdef LLAMA_CUBLAS $(info I NVCC: $(shell $(NVCC) --version | tail -n 1)) -CUDA_VERSION := $(shell nvcc --version | grep -oP 'release (\K[0-9]+\.[0-9])') -ifeq ($(shell awk -v "v=$(CUDA_VERSION)" 'BEGIN { print (v < 11.7) }'),1) -ifndef CUDA_DOCKER_ARCH -ifndef CUDA_POWER_ARCH -$(error I ERROR: For CUDA versions < 11.7 a target CUDA architecture must be explicitly provided via CUDA_DOCKER_ARCH) -endif # CUDA_POWER_ARCH -endif # CUDA_DOCKER_ARCH -endif # eq ($(shell echo "$(CUDA_VERSION) < 11.7" | bc),1) endif # LLAMA_CUBLAS $(info )