Merge pull request #2214 from dhiltgen/reject_cuda_without_avx
Detect lack of AVX and fallback to CPU mode
This commit is contained in:
commit
cc4915e262
1 changed files with 9 additions and 3 deletions
12
gpu/gpu.go
12
gpu/gpu.go
|
@ -122,9 +122,15 @@ func GetGPUInfo() GpuInfo {
|
||||||
initGPUHandles()
|
initGPUHandles()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// All our GPU builds have AVX enabled, so fallback to CPU if we don't detect at least AVX
|
||||||
|
cpuVariant := GetCPUVariant()
|
||||||
|
if cpuVariant == "" {
|
||||||
|
slog.Warn("CPU does not have AVX or AVX2, disabling GPU support.")
|
||||||
|
}
|
||||||
|
|
||||||
var memInfo C.mem_info_t
|
var memInfo C.mem_info_t
|
||||||
resp := GpuInfo{}
|
resp := GpuInfo{}
|
||||||
if gpuHandles.cuda != nil {
|
if gpuHandles.cuda != nil && cpuVariant != "" {
|
||||||
C.cuda_check_vram(*gpuHandles.cuda, &memInfo)
|
C.cuda_check_vram(*gpuHandles.cuda, &memInfo)
|
||||||
if memInfo.err != nil {
|
if memInfo.err != nil {
|
||||||
slog.Info(fmt.Sprintf("error looking up CUDA GPU memory: %s", C.GoString(memInfo.err)))
|
slog.Info(fmt.Sprintf("error looking up CUDA GPU memory: %s", C.GoString(memInfo.err)))
|
||||||
|
@ -143,7 +149,7 @@ func GetGPUInfo() GpuInfo {
|
||||||
slog.Info(fmt.Sprintf("CUDA GPU is too old. Falling back to CPU mode. Compute Capability detected: %d.%d", cc.major, cc.minor))
|
slog.Info(fmt.Sprintf("CUDA GPU is too old. Falling back to CPU mode. Compute Capability detected: %d.%d", cc.major, cc.minor))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if gpuHandles.rocm != nil {
|
} else if gpuHandles.rocm != nil && cpuVariant != "" {
|
||||||
C.rocm_check_vram(*gpuHandles.rocm, &memInfo)
|
C.rocm_check_vram(*gpuHandles.rocm, &memInfo)
|
||||||
if memInfo.err != nil {
|
if memInfo.err != nil {
|
||||||
slog.Info(fmt.Sprintf("error looking up ROCm GPU memory: %s", C.GoString(memInfo.err)))
|
slog.Info(fmt.Sprintf("error looking up ROCm GPU memory: %s", C.GoString(memInfo.err)))
|
||||||
|
@ -185,7 +191,7 @@ func GetGPUInfo() GpuInfo {
|
||||||
if resp.Library == "" {
|
if resp.Library == "" {
|
||||||
C.cpu_check_ram(&memInfo)
|
C.cpu_check_ram(&memInfo)
|
||||||
resp.Library = "cpu"
|
resp.Library = "cpu"
|
||||||
resp.Variant = GetCPUVariant()
|
resp.Variant = cpuVariant
|
||||||
}
|
}
|
||||||
if memInfo.err != nil {
|
if memInfo.err != nil {
|
||||||
slog.Info(fmt.Sprintf("error looking up CPU memory: %s", C.GoString(memInfo.err)))
|
slog.Info(fmt.Sprintf("error looking up CPU memory: %s", C.GoString(memInfo.err)))
|
||||||
|
|
Loading…
Reference in a new issue