From cf15ed33d557aa5806d9c4a62c46b6c5649fb600 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20M=C3=BCller?= Date: Fri, 31 May 2024 09:47:45 +0200 Subject: [PATCH] enh: reserve one CPU for writer thread and control logic --- CHANGELOG | 1 + src/dcnum/logic/ctrl.py | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 96f43c7..e382233 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,5 @@ 0.20.4 + - enh: reserve one CPU for writer thread and control logic - enh: disentangle logging and debugging keyword arguments 0.20.3 - enh: improve strategy for stalling for slow writer diff --git a/src/dcnum/logic/ctrl.py b/src/dcnum/logic/ctrl.py index f47d5e5..90511b1 100644 --- a/src/dcnum/logic/ctrl.py +++ b/src/dcnum/logic/ctrl.py @@ -658,9 +658,13 @@ def task_segment_extract(self): # Split segmentation and feature extraction workers evenly. num_extractors = self.job["num_procs"] // 2 num_segmenters = self.job["num_procs"] - num_extractors + # leave one CPU for the writer and the remaining Threads + num_segmenters -= 1 else: # GPU segmenter num_slots = 3 num_extractors = self.job["num_procs"] + # leave one CPU for the writer and the remaining Threads + num_extractors -= 1 num_segmenters = 1 num_extractors = max(1, num_extractors) num_segmenters = max(1, num_segmenters)