Skip to content

Commit 287f3cd

Browse files
committed
fix device enumeration issues
1 parent 02f9543 commit 287f3cd

1 file changed

Lines changed: 19 additions & 13 deletions

File tree

koboldcpp.py

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1020,48 +1020,53 @@ def init_library():
10201020
handle.set_environment_variable.restype = ctypes.c_int
10211021
handle.set_environment_variable.argtypes = [ctypes.c_char_p, ctypes.c_char_p]
10221022

1023-
def set_backend_props(inputs):
1024-
# we must force an explicit tensor split
1025-
# otherwise the default will divide equally and multigpu crap will slow it down badly
1026-
inputs.kcpp_main_gpu = -1
1023+
def prepare_backend_visibility():
1024+
kcpp_main_gpu = -1
10271025
if(args.maingpu is not None and args.maingpu>=0):
1028-
inputs.kcpp_main_gpu = args.maingpu
1026+
kcpp_main_gpu = args.maingpu
10291027

10301028
if args.usecuda:
10311029
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
10321030
if not args.tensor_split:
10331031
if (args.usecuda and "0" in args.usecuda):
10341032
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
10351033
os.environ["HIP_VISIBLE_DEVICES"] = "0"
1036-
inputs.kcpp_main_gpu = 0
1034+
kcpp_main_gpu = 0
10371035
elif (args.usecuda and "1" in args.usecuda):
10381036
os.environ["CUDA_VISIBLE_DEVICES"] = "1"
10391037
os.environ["HIP_VISIBLE_DEVICES"] = "1"
1040-
inputs.kcpp_main_gpu = 0
1038+
kcpp_main_gpu = 0
10411039
elif (args.usecuda and "2" in args.usecuda):
10421040
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
10431041
os.environ["HIP_VISIBLE_DEVICES"] = "2"
1044-
inputs.kcpp_main_gpu = 0
1042+
kcpp_main_gpu = 0
10451043
elif (args.usecuda and "3" in args.usecuda):
10461044
os.environ["CUDA_VISIBLE_DEVICES"] = "3"
10471045
os.environ["HIP_VISIBLE_DEVICES"] = "3"
1048-
inputs.kcpp_main_gpu = 0
1046+
kcpp_main_gpu = 0
10491047
else:
10501048
if(args.maingpu is None or args.maingpu<0):
10511049
if (args.usecuda and "0" in args.usecuda):
1052-
inputs.kcpp_main_gpu = 0
1050+
kcpp_main_gpu = 0
10531051
elif (args.usecuda and "1" in args.usecuda):
1054-
inputs.kcpp_main_gpu = 1
1052+
kcpp_main_gpu = 1
10551053
elif (args.usecuda and "2" in args.usecuda):
1056-
inputs.kcpp_main_gpu = 2
1054+
kcpp_main_gpu = 2
10571055
elif (args.usecuda and "3" in args.usecuda):
1058-
inputs.kcpp_main_gpu = 3
1056+
kcpp_main_gpu = 3
10591057

10601058
if "GGML_VK_VISIBLE_DEVICES" not in os.environ:
10611059
if args.usevulkan: # is an empty array if using vulkan without defined gpu
10621060
vulkangpus = ','.join([str(g) for g in args.usevulkan])
10631061
handle.set_environment_variable("GGML_VK_VISIBLE_DEVICES".encode("UTF-8"),vulkangpus.encode("UTF-8"))
10641062

1063+
return kcpp_main_gpu
1064+
1065+
def set_backend_props(inputs):
1066+
# we must force an explicit tensor split
1067+
# otherwise the default will divide equally and multigpu crap will slow it down badly
1068+
inputs.kcpp_main_gpu = prepare_backend_visibility()
1069+
10651070
# set universal flags
10661071
inputs.devices_override = (args.device if args.device else "").encode("UTF-8")
10671072
inputs.quiet = args.quiet
@@ -11965,6 +11970,7 @@ def kcpp_main_process(launch_args, g_memory=None, gui_launcher=False):
1196511970
friendlysdmodelname = os.path.basename(imgmodel)
1196611971
friendlysdmodelname = os.path.splitext(friendlysdmodelname)[0]
1196711972
friendlysdmodelname = sanitize_string(friendlysdmodelname)
11973+
prepare_backend_visibility()
1196811974
cached_sd_info = sd_get_info()
1196911975
loadok = sd_load_model(imgmodel,imgvae,imgt5xxl,imgclip1,imgclip2,imgphotomaker,imgupscaler,imgaudiovae)
1197011976
print("Load Image Model OK: " + str(loadok))

0 commit comments

Comments
 (0)