From ff6dec081d98ec029826cb488eb4f193457ac117 Mon Sep 17 00:00:00 2001 From: Sam Al-Sapti Date: Mon, 27 Mar 2023 15:26:53 +0200 Subject: [PATCH] Avoid warnings --- src/{gale_shapley.py => gale_shapley.mpc} | 64 +++++++++++++---------- 1 file changed, 36 insertions(+), 28 deletions(-) rename src/{gale_shapley.py => gale_shapley.mpc} (77%) diff --git a/src/gale_shapley.py b/src/gale_shapley.mpc similarity index 77% rename from src/gale_shapley.py rename to src/gale_shapley.mpc index d09454f..604b0bf 100644 --- a/src/gale_shapley.py +++ b/src/gale_shapley.mpc @@ -1,12 +1,13 @@ -from MP_SPDZ.Compiler import types +# vim: ft=python -from MP_SPDZ.Compiler.util import * +from Compiler import types -from MP_SPDZ.Compiler.oram import OptimalORAM +from Compiler.util import * -from MP_SPDZ.Compiler.library import for_range, do_while, time, \ - if_, print_ln, crash, print_str -from MP_SPDZ.Compiler.gs import OMatrix, OStack +from Compiler.oram import OptimalORAM + +from Compiler.library import for_range, do_while, time, if_, print_ln, crash, print_str +from Compiler.gs import OMatrix, OStack class Matchmaker: @@ -16,25 +17,29 @@ class Matchmaker: """ def init_easy(self): - self.m_prefs = OMatrix(self.N, self.M, oram_type=self.oram_type, \ - int_type=self.int_type) + self.m_prefs = OMatrix(self.N, self.M, oram_type=self.oram_type, + int_type=self.int_type) + @for_range(self.N) def f(i): time() types.cint(i).print_reg('mpre') + @for_range(self.M) def f(j): self.m_prefs[i][j] = (i + j) % self.N - self.f_ranks = OMatrix(self.N, oram_type=self.oram_type, \ - int_type=self.int_type) + self.f_ranks = OMatrix(self.N, oram_type=self.oram_type, + int_type=self.int_type) + @for_range(self.N) def f(i): time() types.cint(i).print_reg('fran') + @for_range(self.M) def f(j): - self.f_ranks[i][(j-i+self.N)%self.N] = j + self.f_ranks[i][(j - i + self.N) % self.N] = j def engage(self, man, woman, for_real): self.wives.access(man, woman, for_real) @@ -71,11 +76,11 @@ class Matchmaker: leaving = self.int_type(rank_man) < self.int_type(rank_fiance) if self.M < self.N: leaving = 1 - (1 - leaving) * (1 - worst_fiance) - print_str('woman: %s, man: %s, fiance: %s, worst fiance: %s, ', \ - *(x.reveal() for x in (woman, man, fiance, worst_fiance))) - print_ln('rank man: %s, rank fiance: %s, engaged: %s, leaving: %s', \ - *(x.reveal() for x in \ - (rank_man, rank_fiance, engaged, leaving))) + print_str('woman: %s, man: %s, fiance: %s, worst fiance: %s, ', + *(x.reveal() for x in (woman, man, fiance, worst_fiance))) + print_ln('rank man: %s, rank fiance: %s, engaged: %s, leaving: %s', + *(x.reveal() for x in + (rank_man, rank_fiance, engaged, leaving))) self.dump(fiance, woman, engaged * leaving * for_real) self.engage(man, woman, (1 - (engaged * (1 - leaving))) * for_real) self.unengaged.append(man, engaged * (1 - leaving) * for_real) @@ -89,20 +94,22 @@ class Matchmaker: loop = for_range(n_loops) init_rounds = n_loops / self.M self.wives = \ - self.oram_type(self.N, entry_size=log2(self.N), \ - init_rounds=0, value_type=self.basic_type) + self.oram_type(self.N, entry_size=log2(self.N), + init_rounds=0, value_type=self.basic_type) self.husbands = \ - self.oram_type(self.N, entry_size=log2(self.N), \ - init_rounds=0, value_type=self.basic_type) + self.oram_type(self.N, entry_size=log2(self.N), + init_rounds=0, value_type=self.basic_type) propose = \ - self.oram_type(self.N, entry_size=log2(self.N), \ - init_rounds=0, value_type=self.basic_type) - self.unengaged = OStack(self.N, oram_type=self.oram_type, \ - int_type=self.int_type) + self.oram_type(self.N, entry_size=log2(self.N), + init_rounds=0, value_type=self.basic_type) + self.unengaged = OStack(self.N, oram_type=self.oram_type, + int_type=self.int_type) + @for_range(init_rounds) def f(i): self.unengaged.append(i) rounds = types.MemValue(types.regint(0)) + @loop def f(i=None): rounds.iadd(1) @@ -119,18 +126,19 @@ class Matchmaker: propose[man] = pref + 1 # self.husbands.ram[0].x[0].reveal().print_reg('l') self.propose(man, self.m_prefs[man][pref], True) - print_ln('man: %s, pref: %s, left: %s', \ - *(x.reveal() for x in (man, pref, self.unengaged.size))) + print_ln('man: %s, pref: %s, left: %s', + *(x.reveal() for x in (man, pref, self.unengaged.size))) # self.wives[man].reveal().print_reg('wife') return types.regint((self.unengaged.size > 0).reveal()) print_ln('%s rounds', rounds) + @for_range(init_rounds) def f(i): types.cint(i).print_reg('wife') self.husbands[i].reveal().print_reg('husb') - def __init__(self, N, M=None, reverse=False, oram_type=OptimalORAM, \ - int_type=types.sint): + def __init__(self, N, M=None, reverse=False, oram_type=OptimalORAM, + int_type=types.sint): self.N = N self.M = N if M is None else M self.oram_type = oram_type