From 7577a095288f89676008009f49ee659c095feddf Mon Sep 17 00:00:00 2001 From: Disty0 Date: Wed, 3 May 2023 18:12:38 +0300 Subject: [PATCH] Add IPEX Optimizers and use XPU instead of CPU when using IPEX --- modules/devices.py | 6 +++++- modules/sd_models.py | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/devices.py b/modules/devices.py index 8be1e3866..d6442078a 100644 --- a/modules/devices.py +++ b/modules/devices.py @@ -111,7 +111,11 @@ def set_cuda_params(): unet_needs_upcast = shared.opts.upcast_sampling -cpu = torch.device("cpu") +from launch import args +if args.use_ipex: + cpu = torch.device("xpu") #Use XPU instead of CPU. %20 Perf improvement on weak CPUs. +else: + cpu = torch.device("cpu") device = device_interrogate = device_gfpgan = device_esrgan = device_codeformer = None dtype = torch.float16 dtype_vae = torch.float16 diff --git a/modules/sd_models.py b/modules/sd_models.py index 812356c94..a2615afd2 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -398,6 +398,9 @@ def load_model(checkpoint_info=None, already_loaded_state_dict=None, timer=None) sd_hijack.model_hijack.hijack(sd_model) timer.record("hijack") sd_model.eval() + if shared.cmd_opts.use_ipex: + sd_model = torch.xpu.optimize(sd_model, dtype=devices.dtype) + shared.log.info("Applied IPEX Optimize") shared.sd_model = sd_model sd_hijack.model_hijack.embedding_db.load_textual_inversion_embeddings(force_reload=True) # Reload embeddings after model load as they may or may not fit the model timer.record("embeddings")