Merge pull request #2116 from dhiltgen/cc_50_80
Add support for CUDA 5.0 cards
This commit is contained in:
commit
e02ecfb6c8
5 changed files with 15 additions and 6 deletions
|
@ -50,7 +50,8 @@ development and runtime packages.
|
||||||
Typically the build scripts will auto-detect CUDA, however, if your Linux distro
|
Typically the build scripts will auto-detect CUDA, however, if your Linux distro
|
||||||
or installation approach uses unusual paths, you can specify the location by
|
or installation approach uses unusual paths, you can specify the location by
|
||||||
specifying an environment variable `CUDA_LIB_DIR` to the location of the shared
|
specifying an environment variable `CUDA_LIB_DIR` to the location of the shared
|
||||||
libraries, and `CUDACXX` to the location of the nvcc compiler.
|
libraries, and `CUDACXX` to the location of the nvcc compiler. You can customize
|
||||||
|
set set of target CUDA architectues by setting `CMAKE_CUDA_ARCHITECTURES` (e.g. "50;60;70")
|
||||||
|
|
||||||
Then generate dependencies:
|
Then generate dependencies:
|
||||||
|
|
||||||
|
|
|
@ -30,8 +30,8 @@ type handles struct {
|
||||||
var gpuMutex sync.Mutex
|
var gpuMutex sync.Mutex
|
||||||
var gpuHandles *handles = nil
|
var gpuHandles *handles = nil
|
||||||
|
|
||||||
// With our current CUDA compile flags, 5.2 and older will not work properly
|
// With our current CUDA compile flags, older than 5.0 will not work properly
|
||||||
const CudaComputeMajorMin = 6
|
var CudaComputeMin = [2]C.int{5, 0}
|
||||||
|
|
||||||
// Possible locations for the nvidia-ml library
|
// Possible locations for the nvidia-ml library
|
||||||
var CudaLinuxGlobs = []string{
|
var CudaLinuxGlobs = []string{
|
||||||
|
@ -142,7 +142,7 @@ func GetGPUInfo() GpuInfo {
|
||||||
if cc.err != nil {
|
if cc.err != nil {
|
||||||
slog.Info(fmt.Sprintf("error looking up CUDA GPU compute capability: %s", C.GoString(cc.err)))
|
slog.Info(fmt.Sprintf("error looking up CUDA GPU compute capability: %s", C.GoString(cc.err)))
|
||||||
C.free(unsafe.Pointer(cc.err))
|
C.free(unsafe.Pointer(cc.err))
|
||||||
} else if cc.major >= CudaComputeMajorMin {
|
} else if cc.major > CudaComputeMin[0] || (cc.major == CudaComputeMin[0] && cc.minor >= CudaComputeMin[1]) {
|
||||||
slog.Info(fmt.Sprintf("CUDA Compute Capability detected: %d.%d", cc.major, cc.minor))
|
slog.Info(fmt.Sprintf("CUDA Compute Capability detected: %d.%d", cc.major, cc.minor))
|
||||||
resp.Library = "cuda"
|
resp.Library = "cuda"
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -39,6 +39,9 @@ init_vars() {
|
||||||
*)
|
*)
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
if [ -z "${CMAKE_CUDA_ARCHITECTURES}" ] ; then
|
||||||
|
CMAKE_CUDA_ARCHITECTURES="50;52;61;70;75;80"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
git_module_setup() {
|
git_module_setup() {
|
||||||
|
|
|
@ -135,7 +135,7 @@ if [ -d "${CUDA_LIB_DIR}" ]; then
|
||||||
if [ -n "${CUDA_MAJOR}" ]; then
|
if [ -n "${CUDA_MAJOR}" ]; then
|
||||||
CUDA_VARIANT=_v${CUDA_MAJOR}
|
CUDA_VARIANT=_v${CUDA_MAJOR}
|
||||||
fi
|
fi
|
||||||
CMAKE_DEFS="-DLLAMA_CUBLAS=on ${COMMON_CMAKE_DEFS} ${CMAKE_DEFS}"
|
CMAKE_DEFS="-DLLAMA_CUBLAS=on -DLLAMA_CUDA_FORCE_MMQ=on -DCMAKE_CUDA_ARCHITECTURES=${CMAKE_CUDA_ARCHITECTURES} ${COMMON_CMAKE_DEFS} ${CMAKE_DEFS}"
|
||||||
BUILD_DIR="${LLAMACPP_DIR}/build/linux/${ARCH}/cuda${CUDA_VARIANT}"
|
BUILD_DIR="${LLAMACPP_DIR}/build/linux/${ARCH}/cuda${CUDA_VARIANT}"
|
||||||
EXTRA_LIBS="-L${CUDA_LIB_DIR} -lcudart -lcublas -lcublasLt -lcuda"
|
EXTRA_LIBS="-L${CUDA_LIB_DIR} -lcudart -lcublas -lcublasLt -lcuda"
|
||||||
build
|
build
|
||||||
|
|
|
@ -25,6 +25,11 @@ function init_vars {
|
||||||
}
|
}
|
||||||
$script:GZIP=(get-command -ea 'silentlycontinue' gzip).path
|
$script:GZIP=(get-command -ea 'silentlycontinue' gzip).path
|
||||||
$script:DUMPBIN=(get-command -ea 'silentlycontinue' dumpbin).path
|
$script:DUMPBIN=(get-command -ea 'silentlycontinue' dumpbin).path
|
||||||
|
if ($null -eq $env:CMAKE_CUDA_ARCHITECTURES) {
|
||||||
|
$script:CMAKE_CUDA_ARCHITECTURES="50;52;61;70;75;80"
|
||||||
|
} else {
|
||||||
|
$script:CMAKE_CUDA_ARCHITECTURES=$env:CMAKE_CUDA_ARCHITECTURES
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function git_module_setup {
|
function git_module_setup {
|
||||||
|
@ -151,7 +156,7 @@ if ($null -ne $script:CUDA_LIB_DIR) {
|
||||||
}
|
}
|
||||||
init_vars
|
init_vars
|
||||||
$script:buildDir="${script:llamacppDir}/build/windows/${script:ARCH}/cuda$script:CUDA_VARIANT"
|
$script:buildDir="${script:llamacppDir}/build/windows/${script:ARCH}/cuda$script:CUDA_VARIANT"
|
||||||
$script:cmakeDefs += @("-DLLAMA_CUBLAS=ON", "-DLLAMA_AVX=on")
|
$script:cmakeDefs += @("-DLLAMA_CUBLAS=ON", "-DLLAMA_AVX=on", "-DCMAKE_CUDA_ARCHITECTURES=${script:CMAKE_CUDA_ARCHITECTURES}")
|
||||||
build
|
build
|
||||||
install
|
install
|
||||||
cp "${script:CUDA_LIB_DIR}/cudart64_*.dll" "${script:buildDir}/lib"
|
cp "${script:CUDA_LIB_DIR}/cudart64_*.dll" "${script:buildDir}/lib"
|
||||||
|
|
Loading…
Reference in a new issue