fix device enumeration issues

This commit is contained in:
Concedo
2026-07-22 20:49:41 +08:00
parent 02f9543f16
commit 287f3cdb53
+19 -13
View File
@@ -1020,12 +1020,10 @@ def init_library():
handle.set_environment_variable.restype = ctypes.c_int
handle.set_environment_variable.argtypes = [ctypes.c_char_p, ctypes.c_char_p]
def set_backend_props(inputs):
# we must force an explicit tensor split
# otherwise the default will divide equally and multigpu crap will slow it down badly
inputs.kcpp_main_gpu = -1
def prepare_backend_visibility():
kcpp_main_gpu = -1
if(args.maingpu is not None and args.maingpu>=0):
inputs.kcpp_main_gpu = args.maingpu
kcpp_main_gpu = args.maingpu
if args.usecuda:
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
@@ -1033,35 +1031,42 @@ def set_backend_props(inputs):
if (args.usecuda and "0" in args.usecuda):
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
os.environ["HIP_VISIBLE_DEVICES"] = "0"
inputs.kcpp_main_gpu = 0
kcpp_main_gpu = 0
elif (args.usecuda and "1" in args.usecuda):
os.environ["CUDA_VISIBLE_DEVICES"] = "1"
os.environ["HIP_VISIBLE_DEVICES"] = "1"
inputs.kcpp_main_gpu = 0
kcpp_main_gpu = 0
elif (args.usecuda and "2" in args.usecuda):
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
os.environ["HIP_VISIBLE_DEVICES"] = "2"
inputs.kcpp_main_gpu = 0
kcpp_main_gpu = 0
elif (args.usecuda and "3" in args.usecuda):
os.environ["CUDA_VISIBLE_DEVICES"] = "3"
os.environ["HIP_VISIBLE_DEVICES"] = "3"
inputs.kcpp_main_gpu = 0
kcpp_main_gpu = 0
else:
if(args.maingpu is None or args.maingpu<0):
if (args.usecuda and "0" in args.usecuda):
inputs.kcpp_main_gpu = 0
kcpp_main_gpu = 0
elif (args.usecuda and "1" in args.usecuda):
inputs.kcpp_main_gpu = 1
kcpp_main_gpu = 1
elif (args.usecuda and "2" in args.usecuda):
inputs.kcpp_main_gpu = 2
kcpp_main_gpu = 2
elif (args.usecuda and "3" in args.usecuda):
inputs.kcpp_main_gpu = 3
kcpp_main_gpu = 3
if "GGML_VK_VISIBLE_DEVICES" not in os.environ:
if args.usevulkan: # is an empty array if using vulkan without defined gpu
vulkangpus = ','.join([str(g) for g in args.usevulkan])
handle.set_environment_variable("GGML_VK_VISIBLE_DEVICES".encode("UTF-8"),vulkangpus.encode("UTF-8"))
return kcpp_main_gpu
def set_backend_props(inputs):
# we must force an explicit tensor split
# otherwise the default will divide equally and multigpu crap will slow it down badly
inputs.kcpp_main_gpu = prepare_backend_visibility()
# set universal flags
inputs.devices_override = (args.device if args.device else "").encode("UTF-8")
inputs.quiet = args.quiet
@@ -11965,6 +11970,7 @@ def kcpp_main_process(launch_args, g_memory=None, gui_launcher=False):
friendlysdmodelname = os.path.basename(imgmodel)
friendlysdmodelname = os.path.splitext(friendlysdmodelname)[0]
friendlysdmodelname = sanitize_string(friendlysdmodelname)
prepare_backend_visibility()
cached_sd_info = sd_get_info()
loadok = sd_load_model(imgmodel,imgvae,imgt5xxl,imgclip1,imgclip2,imgphotomaker,imgupscaler,imgaudiovae)
print("Load Image Model OK: " + str(loadok))