From b6a99158b57c68f2d47853700a10c588135db093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E7=94=9F=E3=81=AE=E7=94=B7?= Date: Fri, 3 Apr 2026 00:52:32 +0900 Subject: [PATCH 1/3] Configure Windows ROCm SDK env for Triton --- main.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/main.py b/main.py index 12b04719d..569babbe6 100644 --- a/main.py +++ b/main.py @@ -5,6 +5,7 @@ import os import importlib.util import shutil import importlib.metadata +import sysconfig import folder_paths import time from comfy.cli_args import args, enables_dynamic_vram @@ -29,6 +30,40 @@ if __name__ == "__main__": setup_logger(log_level=args.verbose, use_stdout=args.log_stdout) + +def configure_windows_rocm_sdk_env(): + if os.name != "nt": + return None + + if any(os.environ.get(var) for var in ("ROCM_HOME", "ROCM_PATH", "HIP_PATH")): + return None + + platlib = sysconfig.get_paths().get("platlib") + if not platlib: + return None + + rocm_sdk_root = os.path.join(platlib, "_rocm_sdk_core") + hip_header = os.path.join(rocm_sdk_root, "include", "hip", "hip_runtime.h") + if not os.path.isfile(hip_header): + return None + + os.environ["ROCM_HOME"] = rocm_sdk_root + os.environ["ROCM_PATH"] = rocm_sdk_root + os.environ["HIP_PATH"] = rocm_sdk_root + + rocm_bin = os.path.join(rocm_sdk_root, "bin") + if os.path.isdir(rocm_bin): + path_entries = os.environ.get("PATH", "").split(os.pathsep) + if rocm_bin not in path_entries: + os.environ["PATH"] = rocm_bin + os.pathsep + os.environ.get("PATH", "") + + return rocm_sdk_root + + +configured_rocm_sdk_root = configure_windows_rocm_sdk_env() +if configured_rocm_sdk_root is not None: + logging.info("Configured ROCm SDK environment from Python package path: %s", configured_rocm_sdk_root) + faulthandler.enable(file=sys.stderr, all_threads=False) import comfy_aimdo.control From eb465ad574436c252d4bd88154d24b2fde9139a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E7=94=9F=E3=81=AE=E7=94=B7?= Date: Fri, 3 Apr 2026 01:26:15 +0900 Subject: [PATCH 2/3] Restrict Windows ROCm SDK env setup to ROCm builds --- main.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/main.py b/main.py index 569babbe6..51e062005 100644 --- a/main.py +++ b/main.py @@ -31,10 +31,21 @@ if __name__ == "__main__": setup_logger(log_level=args.verbose, use_stdout=args.log_stdout) +def is_rocm_torch_build(): + try: + torch_version = importlib.metadata.version("torch").lower() + except importlib.metadata.PackageNotFoundError: + return False + return "rocm" in torch_version + + def configure_windows_rocm_sdk_env(): if os.name != "nt": return None + if not is_rocm_torch_build(): + return None + if any(os.environ.get(var) for var in ("ROCM_HOME", "ROCM_PATH", "HIP_PATH")): return None From 77107e22a1690b2a388fbc69b889453bfd744948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E7=94=9F=E3=81=AE=E7=94=B7?= Date: Fri, 3 Apr 2026 01:47:40 +0900 Subject: [PATCH 3/3] Align ROCm detection with torch.version.hip --- main.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/main.py b/main.py index 51e062005..a757a5707 100644 --- a/main.py +++ b/main.py @@ -32,6 +32,21 @@ setup_logger(log_level=args.verbose, use_stdout=args.log_stdout) def is_rocm_torch_build(): + try: + torch_spec = importlib.util.find_spec("torch") + if torch_spec is not None: + for folder in torch_spec.submodule_search_locations or []: + version_file = os.path.join(folder, "version.py") + if os.path.isfile(version_file): + spec = importlib.util.spec_from_file_location("torch_version_probe", version_file) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + if bool(getattr(module, "hip", None)): + return True + break + except Exception: + pass + try: torch_version = importlib.metadata.version("torch").lower() except importlib.metadata.PackageNotFoundError: