From f85cdb401bf3682c916812d79c35f10bb6738406 Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Wed, 29 Mar 2023 15:49:52 +0200 Subject: [PATCH 1/4] fix line allocation when evenLineDistribution=True vector should have chi elements for each validator Signed-off-by: Csaba Kiraly --- DAS/simulator.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/DAS/simulator.py b/DAS/simulator.py index a6788b8..c58b20f 100644 --- a/DAS/simulator.py +++ b/DAS/simulator.py @@ -46,8 +46,9 @@ class Simulator: lightVal = int(self.shape.numberNodes * self.shape.class1ratio * self.shape.vpn1) heavyVal = int(self.shape.numberNodes * (1-self.shape.class1ratio) * self.shape.vpn2) totalValidators = lightVal + heavyVal - rows = list(range(self.shape.blockSize)) * (int(totalValidators/self.shape.blockSize)+1) - columns = list(range(self.shape.blockSize)) * (int(totalValidators/self.shape.blockSize)+1) + totalRows = totalValidators * self.shape.chi + rows = list(range(self.shape.blockSize)) * (int(totalRows/self.shape.blockSize)+1) + columns = list(range(self.shape.blockSize)) * (int(totalRows/self.shape.blockSize)+1) offset = heavyVal*self.shape.chi random.shuffle(rows) random.shuffle(columns) From 9f3089c232d941b897a8393a5671c0bb557ff5b1 Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Wed, 29 Mar 2023 15:54:44 +0200 Subject: [PATCH 2/4] rowIDs and columnIDs are sets Fixes issue 29, where multiple instances of an ID in rowIDs created a topology with nodes with a huge degree. This huge degree then created lots of duplicates, eating up available bandwidth. Signed-off-by: Csaba Kiraly --- DAS/validator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DAS/validator.py b/DAS/validator.py index 49165a0..32ef149 100644 --- a/DAS/validator.py +++ b/DAS/validator.py @@ -69,8 +69,8 @@ class Validator: # random.seed(self.ID) self.nodeClass = 1 if (self.ID <= shape.numberNodes * shape.class1ratio) else 2 self.vpn = self.shape.vpn1 if (self.nodeClass == 1) else self.shape.vpn2 - self.rowIDs = rows if rows else unionOfSamples(range(self.shape.blockSize), self.shape.chi, self.vpn) - self.columnIDs = columns if columns else unionOfSamples(range(self.shape.blockSize), self.shape.chi, self.vpn) + self.rowIDs = set(rows) if rows else unionOfSamples(range(self.shape.blockSize), self.shape.chi, self.vpn) + self.columnIDs = set(columns) if columns else unionOfSamples(range(self.shape.blockSize), self.shape.chi, self.vpn) self.rowNeighbors = collections.defaultdict(dict) self.columnNeighbors = collections.defaultdict(dict) From 795bb1d10d189315c310014ba857f959df8d2c8b Mon Sep 17 00:00:00 2001 From: Leonardo Bautista-Gomez Date: Thu, 30 Mar 2023 13:15:42 +0200 Subject: [PATCH 3/4] Move set to simulator for future diagnostic purposes --- DAS/simulator.py | 6 ++++-- DAS/validator.py | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/DAS/simulator.py b/DAS/simulator.py index c58b20f..5aac495 100644 --- a/DAS/simulator.py +++ b/DAS/simulator.py @@ -61,8 +61,10 @@ class Simulator: j = i - int(heavyVal/self.shape.vpn2) start = offset+( j *self.shape.chi) end = offset+((j+1)*self.shape.chi) - r = rows[start:end] - c = columns[start:end] + r = list(set(rows[start:end])) + c = list(set(columns[start:end])) + r.sort() + c.sort() val = Validator(i, int(not i!=0), self.logger, self.shape, r, c) else: val = Validator(i, int(not i!=0), self.logger, self.shape) diff --git a/DAS/validator.py b/DAS/validator.py index 32ef149..49165a0 100644 --- a/DAS/validator.py +++ b/DAS/validator.py @@ -69,8 +69,8 @@ class Validator: # random.seed(self.ID) self.nodeClass = 1 if (self.ID <= shape.numberNodes * shape.class1ratio) else 2 self.vpn = self.shape.vpn1 if (self.nodeClass == 1) else self.shape.vpn2 - self.rowIDs = set(rows) if rows else unionOfSamples(range(self.shape.blockSize), self.shape.chi, self.vpn) - self.columnIDs = set(columns) if columns else unionOfSamples(range(self.shape.blockSize), self.shape.chi, self.vpn) + self.rowIDs = rows if rows else unionOfSamples(range(self.shape.blockSize), self.shape.chi, self.vpn) + self.columnIDs = columns if columns else unionOfSamples(range(self.shape.blockSize), self.shape.chi, self.vpn) self.rowNeighbors = collections.defaultdict(dict) self.columnNeighbors = collections.defaultdict(dict) From 296c4fb762be2b8409c3521ae561533454ab1a97 Mon Sep 17 00:00:00 2001 From: Leonardo Bautista-Gomez Date: Thu, 30 Mar 2023 13:36:48 +0200 Subject: [PATCH 4/4] Rows and columns to sets --- DAS/simulator.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/DAS/simulator.py b/DAS/simulator.py index 5aac495..99cb5a5 100644 --- a/DAS/simulator.py +++ b/DAS/simulator.py @@ -61,10 +61,8 @@ class Simulator: j = i - int(heavyVal/self.shape.vpn2) start = offset+( j *self.shape.chi) end = offset+((j+1)*self.shape.chi) - r = list(set(rows[start:end])) - c = list(set(columns[start:end])) - r.sort() - c.sort() + r = set(rows[start:end]) + c = set(columns[start:end]) val = Validator(i, int(not i!=0), self.logger, self.shape, r, c) else: val = Validator(i, int(not i!=0), self.logger, self.shape)