mirror of
https://github.com/zama-ai/concrete.git
synced 2026-02-09 12:15:09 -05:00
43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
""" Read parameters matrix in V0Parameters.cpp """
|
||
from dataclasses import dataclass
|
||
import re
|
||
|
||
@dataclass
|
||
class V0Parameter:
|
||
glweDimension: int
|
||
logPolynomialSize:int
|
||
nSmall: int
|
||
brLevel: int
|
||
brLogBase: int
|
||
ksLevel: int
|
||
ksLogBase:int
|
||
|
||
# [log_manp][bitwidth]
|
||
v0_parameters : 'list[list[V0Parameter]]' = []
|
||
|
||
def v0_parameter(log_manp_max, bitwidth):
|
||
try:
|
||
return v0_parameters[log_manp_max - 1][bitwidth - 1]
|
||
except IndexError:
|
||
return V0Parameter( *( ['out_of_V0Parameters'] * 7) )
|
||
|
||
# relative to Makefile
|
||
V0Parameters_PATH = 'lib/Support/V0Parameters.cpp'
|
||
|
||
def read_CPP_decl(name, cpp_filepath):
|
||
DECLARE = re.compile(f'{name}[^=\n]+=')
|
||
END = re.compile(';')
|
||
with open(cpp_filepath) as f:
|
||
content = f.read()
|
||
decl = DECLARE.search(content)
|
||
if not decl:
|
||
raise NameError(f'Cannot find {name} declaration in file {cpp_filepath}')
|
||
end = END.search(content, decl.end())
|
||
assert end
|
||
value = content[decl.end()+1:end.end()-1].strip()
|
||
# print(f'{name} = {value}', decl.group())
|
||
return value
|
||
|
||
LOG2_MANP_MAX = 31
|
||
P_MAX = 8
|