From 0257e7e2fa97d69f64a43581a682be700234af01 Mon Sep 17 00:00:00 2001 From: Ian Date: Thu, 30 Jan 2025 20:31:50 -0600 Subject: [PATCH 1/2] Fixes sd server fiber/worker indexing bug --- shortfin/python/shortfin_apps/sd/components/service.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/shortfin/python/shortfin_apps/sd/components/service.py b/shortfin/python/shortfin_apps/sd/components/service.py index edf9d2e7b..9690cea5a 100644 --- a/shortfin/python/shortfin_apps/sd/components/service.py +++ b/shortfin/python/shortfin_apps/sd/components/service.py @@ -78,13 +78,12 @@ def __init__( self.idle_fibers = set() # For each worker index we create one on each device, and add their fibers to the idle set. # This roughly ensures that the first picked fibers are distributed across available devices. - for i in range(self.workers_per_device): - for idx, device in enumerate(self.sysman.ls.devices): + for idx, device in enumerate(self.sysman.ls.devices): + for i in range(self.workers_per_device): worker = sysman.ls.create_worker(f"{name}-inference-{device.name}-{i}") self.workers.append(worker) - for idx, device in enumerate(self.sysman.ls.devices): for i in range(self.fibers_per_device): - tgt_worker = self.workers[i % len(self.workers)] + tgt_worker = self.workers[idx * workers_per_device + i % workers_per_device] fiber = sysman.ls.create_fiber(tgt_worker, devices=[device]) self.fibers.append(fiber) self.idle_fibers.add(fiber) From 039ac22523433aa5bf47a4428bffa35e1c7fabad Mon Sep 17 00:00:00 2001 From: Ian Date: Fri, 31 Jan 2025 16:51:31 -0600 Subject: [PATCH 2/2] linting --- shortfin/python/shortfin_apps/sd/components/service.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shortfin/python/shortfin_apps/sd/components/service.py b/shortfin/python/shortfin_apps/sd/components/service.py index 9690cea5a..78119b1ce 100644 --- a/shortfin/python/shortfin_apps/sd/components/service.py +++ b/shortfin/python/shortfin_apps/sd/components/service.py @@ -83,7 +83,9 @@ def __init__( worker = sysman.ls.create_worker(f"{name}-inference-{device.name}-{i}") self.workers.append(worker) for i in range(self.fibers_per_device): - tgt_worker = self.workers[idx * workers_per_device + i % workers_per_device] + tgt_worker = self.workers[ + idx * workers_per_device + i % workers_per_device + ] fiber = sysman.ls.create_fiber(tgt_worker, devices=[device]) self.fibers.append(fiber) self.idle_fibers.add(fiber)