From f27c8584ee710f39144fd99f2bb1d529db7caf4a Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Mon, 8 Jun 2026 10:18:12 +0200 Subject: [PATCH] fix xpu generator Signed-off-by: Vladimir Mandic --- CHANGELOG.md | 7 ++++--- modules/processing_helpers.py | 23 +++++++++++++---------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c2b5b300..47e1e6f7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,8 @@ # Change Log for SD.Next -## Update for 2026-06-07 +## Update for 2026-06-08 -### Highlights for 2026-06-07 +### Highlights for 2026-06-08 *What's New?* - **Ideogram-4** released, Microsoft joins the game with **Lens** and **Anima** made it to release version @@ -19,7 +19,7 @@ And we have a new modular LoRA loader, new native Transformers loader and improv [ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867) | [Sponsor](https://github.com/sponsors/vladmandic) -### Details for 2026-06-07 +### Details for 2026-06-08 - **Models** - [CircleStone Anima 1.0](https://huggingface.co/circlestone-labs/Anima) in *Base* and *Turbo* (distilled) variants @@ -143,6 +143,7 @@ And we have a new modular LoRA loader, new native Transformers loader and improv - `sdnq` default dynamic loss value - `sdnq` prequant save/load - `samplers` ui sigma methods + - `xpu` generator on non-cpu ## Update for 2026-05-13 diff --git a/modules/processing_helpers.py b/modules/processing_helpers.py index 55e2ccb42..1135ceccc 100644 --- a/modules/processing_helpers.py +++ b/modules/processing_helpers.py @@ -511,18 +511,21 @@ def get_generator(p): if gen_device_opt == "Unset": generator_device = None generator = None - elif getattr(p, "generator", None) is not None: - generator_device = devices.cpu if gen_device_opt == "CPU" else shared.device - generator = p.generator else: generator_device = devices.cpu if gen_device_opt == "CPU" else shared.device - try: - p.seeds = [seed if seed != -1 else get_fixed_seed(seed) for seed in p.seeds if seed] - devices.randn(p.seeds[0]) - generator = [torch.Generator(generator_device).manual_seed(s) for s in p.seeds] - except Exception as e: - log.error(f'Torch generator: seeds={p.seeds} device={generator_device} {e}') - generator = None + # Intel XPU does not support generators directly on xpu for Diffusers noise creation. + if generator_device is not None and str(generator_device).startswith("xpu"): + generator_device = devices.cpu + if getattr(p, "generator", None) is not None: + generator = p.generator + else: + try: + p.seeds = [seed if seed != -1 else get_fixed_seed(seed) for seed in p.seeds if seed] + devices.randn(p.seeds[0]) + generator = [torch.Generator(generator_device).manual_seed(s) for s in p.seeds] + except Exception as e: + log.error(f'Torch generator: seeds={p.seeds} device={generator_device} {e}') + generator = None return generator