@@ -103,6 +103,8 @@ set(LLAMA_CUDA_KQUANTS_ITER "2" CACHE STRING "llama: iters./thread per block for
103103set (LLAMA_CUDA_PEER_MAX_BATCH_SIZE "128" CACHE STRING
104104 "llama: max. batch size for using peer access" )
105105option (LLAMA_CUDA_NO_PEER_COPY "llama: do not use peer to peer copies" OFF )
106+ option (LLAMA_CUDA_NO_VMM "llama: do not try to use CUDA VMM" OFF )
107+
106108option (LLAMA_CURL "llama: use libcurl to download model from an URL" OFF )
107109option (LLAMA_HIPBLAS "llama: use hipBLAS" OFF )
108110option (LLAMA_HIP_UMA "llama: use HIP unified memory architecture" OFF )
@@ -409,6 +411,9 @@ if (LLAMA_CUDA)
409411 if (LLAMA_CUDA_FORCE_MMQ)
410412 add_compile_definitions (GGML_CUDA_FORCE_MMQ)
411413 endif ()
414+ if (LLAMA_CUDA_NO_VMM)
415+ add_compile_definitions (GGML_CUDA_NO_VMM)
416+ endif ()
412417 add_compile_definitions (GGML_CUDA_DMMV_X=${LLAMA_CUDA_DMMV_X} )
413418 add_compile_definitions (GGML_CUDA_MMV_Y=${LLAMA_CUDA_MMV_Y} )
414419 if (DEFINED LLAMA_CUDA_DMMV_Y)
@@ -434,7 +439,11 @@ if (LLAMA_CUDA)
434439 set (LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cudart CUDA::cublas CUDA::cublasLt)
435440 endif ()
436441
437- set (LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cuda_driver)
442+ if (LLAMA_CUDA_NO_VMM)
443+ # No VMM requested, no need to link directly with the cuda driver lib (libcuda.so)
444+ else ()
445+ set (LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cuda_driver) # required by cuDeviceGetAttribute(), cuMemGetAllocationGranularity(...), ...
446+ endif ()
438447
439448 if (NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
440449 # 52 == lowest CUDA 12 standard
0 commit comments