diff --git a/installer.py b/installer.py index d9b0042e4..aa4f1e20b 100644 --- a/installer.py +++ b/installer.py @@ -662,21 +662,32 @@ def install_ipex(torch_command): check_python(supported_minors=[9, 10, 11, 12], reason='IPEX backend requires Python 3.9, 3.10 or 3.11') args.use_ipex = True # pylint: disable=attribute-defined-outside-init log.info('IPEX: Intel OneAPI toolkit detected') + if os.environ.get("NEOReadDebugKeys", None) is None: os.environ.setdefault('NEOReadDebugKeys', '1') if os.environ.get("ClDeviceGlobalMemSizeAvailablePercent", None) is None: os.environ.setdefault('ClDeviceGlobalMemSizeAvailablePercent', '100') + if os.environ.get("SYCL_CACHE_PERSISTENT", None) is None: + os.environ.setdefault('SYCL_CACHE_PERSISTENT', '1') # Jit cache + if os.environ.get("PYTORCH_ENABLE_XPU_FALLBACK", None) is None: - os.environ.setdefault('PYTORCH_ENABLE_XPU_FALLBACK', '1') + os.environ.setdefault('PYTORCH_ENABLE_XPU_FALLBACK', '1') # CPU fallback for unsupported ops + if os.environ.get("OverrideDefaultFP64Settings", None) is None: + os.environ.setdefault('OverrideDefaultFP64Settings', '1') + if os.environ.get("IGC_EnableDPEmulation", None) is None: + os.environ.setdefault('IGC_EnableDPEmulation', '1') # FP64 Emulation if os.environ.get('IPEX_FORCE_ATTENTION_SLICE', None) is None: - # Battlemage doesn't support Flash Atten or Memory Atten yet so it goes OOM without this + # XPU PyTorch doesn't support Flash Atten or Memory Atten yet so Battlemage goes OOM without this + # Also force enabled because of FP64 emulation making auto-detect based on the GPU invalid os.environ.setdefault('IPEX_FORCE_ATTENTION_SLICE', '1') + if "linux" in sys.platform: torch_command = os.environ.get('TORCH_COMMAND', 'torch==2.5.1+cxx11.abi torchvision==0.20.1+cxx11.abi intel-extension-for-pytorch==2.5.10+xpu oneccl_bind_pt==2.5.0+xpu --extra-index-url https://pytorch-extension.intel.com/release-whl/stable/xpu/cn/') # torch_command = os.environ.get('TORCH_COMMAND', 'torch torchvision --index-url https://download.pytorch.org/whl/test/xpu') # test wheels are stable previews, significantly slower than IPEX # os.environ.setdefault('TENSORFLOW_PACKAGE', 'tensorflow==2.15.1 intel-extension-for-tensorflow[xpu]==2.15.0.1') else: torch_command = os.environ.get('TORCH_COMMAND', 'torch==2.6.0+xpu torchvision==0.21.0+xpu --index-url https://download.pytorch.org/whl/test/xpu') + install(os.environ.get('OPENVINO_PACKAGE', 'openvino==2024.6.0'), 'openvino', ignore=True) install('nncf==2.7.0', ignore=True, no_deps=True) # requires older pandas install(os.environ.get('ONNXRUNTIME_PACKAGE', 'onnxruntime-openvino'), 'onnxruntime-openvino', ignore=True) diff --git a/modules/intel/ipex/diffusers.py b/modules/intel/ipex/diffusers.py index 5bf5bbe39..4fbe47c3b 100644 --- a/modules/intel/ipex/diffusers.py +++ b/modules/intel/ipex/diffusers.py @@ -345,7 +345,7 @@ class AttnProcessor: def ipex_diffusers(): diffusers.utils.torch_utils.fourier_filter = fourier_filter #ARC GPUs can't allocate more than 4GB to a single block: - if not device_supports_fp64 or os.environ.get('IPEX_FORCE_ATTENTION_SLICE', None) is not None: + if os.environ.get('IPEX_FORCE_ATTENTION_SLICE', '0') == '1' or (not device_supports_fp64 and os.environ.get('IPEX_FORCE_ATTENTION_SLICE', '0') == '0'): diffusers.models.attention_processor.SlicedAttnProcessor = SlicedAttnProcessor diffusers.models.attention_processor.AttnProcessor = AttnProcessor if not device_supports_fp64: