mirror of
https://github.com/vladmandic/automatic
synced 2026-09-20 09:38:23 +02:00
IPEX enable FP64 emulation
This commit is contained in:
+13
-2
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user