@@ -44,6 +44,7 @@ endif()
44
44
option (LLAMA_CUBLAS "llama: use cuBLAS" ON )
45
45
set (LLAMA_CUDA_DMMV_X "32" CACHE STRING "llama: x stride for dmmv CUDA kernels" )
46
46
set (LLAMA_CUDA_DMMV_Y "1" CACHE STRING "llama: y block size for dmmv CUDA kernels" )
47
+ set (LLAMA_CUDA_MMV_Y "1" CACHE STRING "llama: y block size for mmv CUDA kernels" )
47
48
option (LLAMA_CUDA_DMMV_F16 "llama: use 16 bit floats for dmmv CUDA kernels" OFF )
48
49
set (LLAMA_CUDA_KQUANTS_ITER "2" CACHE STRING "llama: iters./thread per block for Q2_K/Q6_K" )
49
50
option (LLAMA_K_QUANTS "llama: use k-quants" ON )
@@ -76,8 +77,11 @@ if (LLAMA_CUBLAS)
76
77
set (GGML_V2_LEGACY_CUDA_SOURCES otherarch/ggml_v2-cuda-legacy.cu otherarch/ggml_v2-cuda-legacy.h)
77
78
78
79
add_compile_definitions (GGML_USE_CUBLAS)
80
+ add_compile_definitions (GGML_CUDA_FORCE_DMMV) #non dmmv broken for me
81
+
79
82
add_compile_definitions (GGML_CUDA_DMMV_X=${LLAMA_CUDA_DMMV_X} )
80
83
add_compile_definitions (GGML_CUDA_DMMV_Y=${LLAMA_CUDA_DMMV_Y} )
84
+ add_compile_definitions (GGML_CUDA_MMV_Y=${LLAMA_CUDA_MMV_Y} )
81
85
if (LLAMA_CUDA_DMMV_F16)
82
86
add_compile_definitions (GGML_CUDA_DMMV_F16)
83
87
endif ()
@@ -89,6 +93,15 @@ if (LLAMA_CUBLAS)
89
93
set (LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cudart CUDA::cublas CUDA::cublasLt)
90
94
endif ()
91
95
96
+ if (NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
97
+ if (LLAMA_CUDA_DMMV_F16)
98
+ set (CMAKE_CUDA_ARCHITECTURES "61" ) # needed for f16 CUDA intrinsics
99
+ else ()
100
+ set (CMAKE_CUDA_ARCHITECTURES "52;61" ) # lowest CUDA 12 standard + lowest for integer intrinsics
101
+ endif ()
102
+ endif ()
103
+ message (STATUS "Using CUDA architectures: ${CMAKE_CUDA_ARCHITECTURES} " )
104
+
92
105
else ()
93
106
message (WARNING "cuBLAS not found" )
94
107
endif ()
0 commit comments